Index: linux-2.6/Documentation/filesystems/ext2.txt =================================================================== --- linux-2.6.orig/Documentation/filesystems/ext2.txt 2006-04-03 22:46:38.000000000 +0800 +++ linux-2.6/Documentation/filesystems/ext2.txt 2006-07-15 12:54:06.000000000 +0800 @@ -58,6 +58,22 @@ nobh Do not attach buffer_heads to fi xip Use execute in place (no caching) if possible +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/fs/dcache.c =================================================================== --- linux-2.6.orig/fs/dcache.c 2006-07-15 12:48:18.000000000 +0800 +++ linux-2.6/fs/dcache.c 2006-07-15 12:54:06.000000000 +0800 @@ -1341,14 +1341,13 @@ static void switch_names(struct dentry * * dcache entries should not be moved in this way. */ -void d_move(struct dentry * dentry, struct dentry * target) +void d_move_locked(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? @@ -1399,6 +1398,14 @@ already_unhashed: fsnotify_d_move(dentry); spin_unlock(&dentry->d_lock); write_sequnlock(&rename_lock); +} + +EXPORT_SYMBOL(d_move_locked); + +void d_move(struct dentry *dentry, struct dentry *target) +{ + spin_lock(&dcache_lock); + d_move_locked(dentry, target); spin_unlock(&dcache_lock); } Index: linux-2.6/include/linux/dcache.h =================================================================== --- linux-2.6.orig/include/linux/dcache.h 2006-07-15 12:48:41.000000000 +0800 +++ linux-2.6/include/linux/dcache.h 2006-07-15 12:54:06.000000000 +0800 @@ -292,6 +293,7 @@ static inline struct dentry *d_add_uniqu /* used for rename() and baskets */ extern void d_move(struct dentry *, struct dentry *); +extern void d_move_locked(struct dentry *, struct dentry *); /* appendix may either be NULL or be used for transname suffixes */ extern struct dentry * d_lookup(struct dentry *, struct qstr *);