[1835] | 1 | From 7bcd8c5884683a38cbe04faa631bda15b38a492b Mon Sep 17 00:00:00 2001 |
---|
| 2 | From: Marc Dionne <marc.c.dionne@gmail.com> |
---|
| 3 | Date: Tue, 25 Jan 2011 18:18:56 -0500 |
---|
| 4 | Subject: [PATCH 6/8] linux: 2.6.38: Make d_revalidate RCU-walk aware |
---|
| 5 | |
---|
| 6 | Signal to the vfs that we don't support path RCU walk in |
---|
| 7 | d_revalidate. It will call back in non-RCU mode. |
---|
| 8 | |
---|
| 9 | Reviewed-on: http://gerrit.openafs.org/3759 |
---|
| 10 | Tested-by: BuildBot <buildbot@rampaginggeek.com> |
---|
| 11 | Reviewed-by: Derrick Brashear <shadow@dementia.org> |
---|
| 12 | (cherry picked from commit 52556d50298e4a636f07e9a3cf0b6557c882c82d) |
---|
| 13 | |
---|
| 14 | Change-Id: Id346ca87a1a064ab7d66140156cb8eb48a888566 |
---|
| 15 | Signed-off-by: Anders Kaseorg <andersk@mit.edu> |
---|
| 16 | Reviewed-on: http://gerrit.openafs.org/3995 |
---|
| 17 | Reviewed-by: Simon Wilkinson <sxw@inf.ed.ac.uk> |
---|
| 18 | Tested-by: BuildBot <buildbot@rampaginggeek.com> |
---|
| 19 | Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com> |
---|
| 20 | Reviewed-by: Russ Allbery <rra@stanford.edu> |
---|
| 21 | Reviewed-on: http://gerrit.openafs.org/4042 |
---|
| 22 | Reviewed-by: Derrick Brashear <shadow@dementia.org> |
---|
| 23 | Tested-by: Derrick Brashear <shadow@dementia.org> |
---|
| 24 | --- |
---|
| 25 | src/afs/LINUX/osi_vnodeops.c | 6 ++++++ |
---|
| 26 | 1 files changed, 6 insertions(+), 0 deletions(-) |
---|
| 27 | |
---|
| 28 | diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c |
---|
| 29 | index 03294b2..e2a3e28 100644 |
---|
| 30 | --- a/src/afs/LINUX/osi_vnodeops.c |
---|
| 31 | +++ b/src/afs/LINUX/osi_vnodeops.c |
---|
| 32 | @@ -865,10 +865,16 @@ afs_linux_dentry_revalidate(struct dentry *dp) |
---|
| 33 | int valid; |
---|
| 34 | struct afs_fakestat_state fakestate; |
---|
| 35 | |
---|
| 36 | +#ifdef LOOKUP_RCU |
---|
| 37 | + /* We don't support RCU path walking */ |
---|
| 38 | + if (nd->flags & LOOKUP_RCU) |
---|
| 39 | + return -ECHILD; |
---|
| 40 | +#endif |
---|
| 41 | #ifdef AFS_LINUX24_ENV |
---|
| 42 | lock_kernel(); |
---|
| 43 | #endif |
---|
| 44 | AFS_GLOCK(); |
---|
| 45 | + |
---|
| 46 | afs_InitFakeStat(&fakestate); |
---|
| 47 | |
---|
| 48 | if (dp->d_inode) { |
---|
| 49 | -- |
---|
| 50 | 1.7.3.4 |
---|
| 51 | |
---|