patch-2.4.10 linux/fs/umsdos/emd.c
Next file: linux/fs/umsdos/inode.c
Previous file: linux/fs/umsdos/dir.c
Back to the patch index
Back to the overall index
- Lines: 91
- Date:
Sat Sep 1 10:59:08 2001
- Orig file:
v2.4.9/linux/fs/umsdos/emd.c
- Orig date:
Tue Mar 6 19:44:37 2001
diff -u --recursive --new-file v2.4.9/linux/fs/umsdos/emd.c linux/fs/umsdos/emd.c
@@ -18,7 +18,21 @@
#include <linux/pagemap.h>
#include <linux/delay.h>
-static void copy_entry(struct umsdos_dirent *p, struct umsdos_dirent *q)
+void put_entry (struct umsdos_dirent *p, struct umsdos_dirent *q)
+{
+ p->name_len = q->name_len;
+ p->flags = q->flags;
+ p->nlink = cpu_to_le16(q->nlink);
+ p->uid = cpu_to_le16(q->uid);
+ p->gid = cpu_to_le16(q->gid);
+ p->atime = cpu_to_le32(q->atime);
+ p->mtime = cpu_to_le32(q->mtime);
+ p->ctime = cpu_to_le32(q->ctime);
+ p->rdev = cpu_to_le16(q->rdev);
+ p->mode = cpu_to_le16(q->mode);
+}
+
+static void get_entry(struct umsdos_dirent *p, struct umsdos_dirent *q)
{
p->name_len = q->name_len;
p->name[p->name_len]='\0';
@@ -136,6 +150,7 @@
printk (KERN_WARNING "Ignoring invalid EMD entry with size %d\n", entry->name_len);
p->name_len = 0;
ret = -ENAMETOOLONG; /* notify umssync(8) code that something is wrong */
+ /* FIXME: does not work if we did 'ls -l' before 'udosctl uls' ?! */
}
recsize = umsdos_evalrecsize(p->name_len);
@@ -163,7 +178,7 @@
page_cache_release(page2);
} else
memcpy(entry->spare,p->spare,((char*)p+recsize)-p->spare);
- copy_entry(entry, p);
+ get_entry(entry, p);
kunmap(page);
page_cache_release(page);
*pos += recsize;
@@ -249,20 +264,11 @@
offs+info->recsize-PAGE_CACHE_SIZE);
if (ret)
goto out_unlock3;
- p->name_len = entry->name_len;
- p->flags = entry->flags;
- p->nlink = cpu_to_le16(entry->nlink);
- p->uid = cpu_to_le16(entry->uid);
- p->gid = cpu_to_le16(entry->gid);
- p->atime = cpu_to_le32(entry->atime);
- p->mtime = cpu_to_le32(entry->mtime);
- p->ctime = cpu_to_le32(entry->ctime);
- p->rdev = cpu_to_le16(entry->rdev);
- p->mode = cpu_to_le16(entry->mode);
- memcpy(p->name,entry->name,
+ put_entry (p, entry);
+ memcpy(p->spare,entry->spare,
(char *)(page_address(page) + PAGE_CACHE_SIZE) - p->spare);
memcpy(page_address(page2),
- entry->spare+PAGE_CACHE_SIZE-offs,
+ ((char*)entry)+PAGE_CACHE_SIZE-offs,
offs+info->recsize-PAGE_CACHE_SIZE);
ret = mapping->a_ops->commit_write(NULL,page2,0,
offs+info->recsize-PAGE_CACHE_SIZE);
@@ -279,16 +285,7 @@
offs + info->recsize);
if (ret)
goto out_unlock;
- p->name_len = entry->name_len;
- p->flags = entry->flags;
- p->nlink = cpu_to_le16(entry->nlink);
- p->uid = cpu_to_le16(entry->uid);
- p->gid = cpu_to_le16(entry->gid);
- p->atime = cpu_to_le32(entry->atime);
- p->mtime = cpu_to_le32(entry->mtime);
- p->ctime = cpu_to_le32(entry->ctime);
- p->rdev = cpu_to_le16(entry->rdev);
- p->mode = cpu_to_le16(entry->mode);
+ put_entry (p, entry);
memcpy(p->spare,entry->spare,((char*)p+info->recsize)-p->spare);
ret = mapping->a_ops->commit_write(NULL,page,offs,
offs + info->recsize);
@@ -463,7 +460,7 @@
goto skip_it;
info->f_pos = pos;
- copy_entry(entry, rentry);
+ get_entry(entry, rentry);
ret = 0;
break;
skip_it:
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)