lkml.org 
[lkml]   [2002]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH] fixing supermount for > 2.4.19pre4
Date
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 = {
\
 
 \ /
  Last update: 2005-03-22 13:26    [W:0.053 / U:3.132 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site