Messages in this thread Patch in this message | | | From | Jörg Prante <> | Subject | [PATCH] fixing supermount for > 2.4.19pre4 | Date | Fri, 17 May 2002 01:36:22 +0200 |
| |
Hi,
in 2.4.19pre4, the dentry revalidation has been patched, and the VFS behavior has changed due to an NFS bugfix. All non-standard remote file systems (like supermount, ftpfs, etc.) are in conflict with the patch and may not operate correctly.
Alan Cox pointed out that non-standard remote file systems should get fixed for 2.4.19. So, here is my quick hack for supermount 0.7 that changes the return policy in the d_revalidate operation. Supermount should work now in 2.4.19pre4 kernels and higher.
Other file systems with similar revalidate policy can get fixed accordingly.
Cheers,
Jörg --- linux/fs/supermount/dentry_operations.c.orig Fri May 17 00:36:21 2002 +++ linux/fs/supermount/dentry_operations.c Fri May 17 01:16:06 2002 @@ -25,8 +25,9 @@ dump_dentry(dentry); - if (!subfs_go_online(dentry->d_sb)) - goto bad_dentry; + if (!subfs_go_online(dentry->d_sb)) { + goto out; + } spin_lock(&dcache_lock); if (dentry->d_inode && is_inode_obsolete(dentry->d_inode)) { supermount_debug("found old dentry: **%s**", @@ -36,20 +37,21 @@ } spin_unlock(&dcache_lock); subd = get_subfs_dentry(dentry); - if (IS_ERR(subd)) + if (IS_ERR(subd)) { goto bad_dentry; + } if (subd->d_op && subd->d_op->d_revalidate) { supermount_debug("lowlevel revalidate"); rc = subd->d_op->d_revalidate(subd, flags); } dput(subd); + goto out; +bad_dentry: + rc = 0; out: subfs_go_inactive(dentry->d_sb); return rc; -bad_dentry: - rc = 0; - goto out; } struct dentry_operations supermount_dir_dops = { | |