Index: linux-2.6.4-51.0/Documentation/filesystems/ext2.txt =================================================================== --- linux-2.6.4-51.0.orig/Documentation/filesystems/ext2.txt 2004-05-06 22:21:26.000000000 -0400 +++ linux-2.6.4-51.0/Documentation/filesystems/ext2.txt 2004-05-06 22:24:42.000000000 -0400 @@ -35,6 +35,22 @@ sb=n Use alternate superblock at this location. +iopen Makes an invisible pseudo-directory called + __iopen__ available in the root directory + of the filesystem. Allows open-by-inode- + number. i.e., inode 3145 can be accessed + via /mntpt/__iopen__/3145 + +iopen_nopriv This option makes the iopen directory be + world-readable. This may be safer since it + allows daemons to run as an unprivileged user, + however it significantly changes the security + model of a Unix filesystem, since previously + all files under a mode 700 directory were not + generally avilable even if the + permissions on the file itself is + world-readable. + grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. Index: linux-2.6.4-51.0/fs/dcache.c =================================================================== --- linux-2.6.4-51.0.orig/fs/dcache.c 2004-05-06 22:24:42.000000000 -0400 +++ linux-2.6.4-51.0/fs/dcache.c 2004-05-06 22:58:37.000000000 -0400 @@ -1195,14 +1195,13 @@ * dcache entries should not be moved in this way. */ -void d_move(struct dentry * dentry, struct dentry * target) +void __d_move(struct dentry * dentry, struct dentry * target) { struct hlist_head *list; if (!dentry->d_inode) printk(KERN_WARNING "VFS: moving negative dcache entry\n"); - spin_lock(&dcache_lock); write_seqlock(&rename_lock); /* * XXXX: do we really need to take target->d_lock? @@ -1253,6 +1252,14 @@ spin_unlock(&target->d_lock); spin_unlock(&dentry->d_lock); write_sequnlock(&rename_lock); +} + +EXPORT_SYMBOL(__d_move); + +void d_move(struct dentry *dentry, struct dentry *target) +{ + spin_lock(&dcache_lock); + __d_move(dentry, target); spin_unlock(&dcache_lock); } Index: linux-2.6.4-51.0/include/linux/dcache.h =================================================================== --- linux-2.6.4-51.0.orig/include/linux/dcache.h 2004-05-06 22:24:42.000000000 -0400 +++ linux-2.6.4-51.0/include/linux/dcache.h 2004-05-06 23:03:43.000000000 -0400 @@ -234,6 +234,7 @@ * This adds the entry to the hash queues. */ extern void d_rehash(struct dentry *); +extern void d_rehash_cond(struct dentry *, int lock); /** * d_add - add dentry to hash queues @@ -252,6 +253,7 @@ /* used for rename() and baskets */ extern void d_move(struct dentry *, struct dentry *); +extern void __d_move(struct dentry *, struct dentry *); /* appendix may either be NULL or be used for transname suffixes */ extern struct dentry * d_lookup(struct dentry *, struct qstr *);