]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
linux: 2.6.38: Make d_revalidate RCU-walk aware
authorMarc Dionne <marc.c.dionne@gmail.com>
Tue, 25 Jan 2011 23:18:56 +0000 (18:18 -0500)
committerRuss Allbery <rra@debian.org>
Tue, 1 Mar 2011 00:02:48 +0000 (16:02 -0800)
Signal to the vfs that we don't support path RCU walk in
d_revalidate.  It will call back in non-RCU mode.

Reviewed-on: http://gerrit.openafs.org/3759
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 52556d50298e4a636f07e9a3cf0b6557c882c82d)

Change-Id: I6662782068e317a36ca70caa0d09665ff2183c2d
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
Reviewed-on: http://gerrit.openafs.org/3995
Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Reviewed-by: Russ Allbery <rra@stanford.edu>
(cherry picked from commit 9a91534004f853de427a661347fe029218ea9ac2)

src/afs/LINUX/osi_vnodeops.c

index 03294b2e9d87e2310f2bb253c6bbb03cb949ec79..e2a3e283bdfcb87f8ae2f498569ec52b4f9e6e20 100644 (file)
@@ -865,10 +865,16 @@ afs_linux_dentry_revalidate(struct dentry *dp)
     int valid;
     struct afs_fakestat_state fakestate;
 
+#ifdef LOOKUP_RCU
+    /* We don't support RCU path walking */
+    if (nd->flags & LOOKUP_RCU)
+       return -ECHILD;
+#endif
 #ifdef AFS_LINUX24_ENV
     lock_kernel();
 #endif
     AFS_GLOCK();
+
     afs_InitFakeStat(&fakestate);
 
     if (dp->d_inode) {