From: Marc Dionne Date: Tue, 25 Jan 2011 23:18:56 +0000 (-0500) Subject: linux: 2.6.38: Make d_revalidate RCU-walk aware X-Git-Tag: debian/1.4.14+dfsg-2~10 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=59459cef97317f5e72d8065e648c0bf231f4641e;p=packages%2Fo%2Fopenafs.git linux: 2.6.38: Make d_revalidate RCU-walk aware 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 Reviewed-by: Derrick Brashear (cherry picked from commit 52556d50298e4a636f07e9a3cf0b6557c882c82d) Change-Id: I6662782068e317a36ca70caa0d09665ff2183c2d Signed-off-by: Anders Kaseorg Reviewed-on: http://gerrit.openafs.org/3995 Reviewed-by: Simon Wilkinson Tested-by: BuildBot Reviewed-by: Marc Dionne Reviewed-by: Russ Allbery (cherry picked from commit 9a91534004f853de427a661347fe029218ea9ac2) --- diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c index 03294b2e9..e2a3e283b 100644 --- a/src/afs/LINUX/osi_vnodeops.c +++ b/src/afs/LINUX/osi_vnodeops.c @@ -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) {