OpenAFS Master Repository branch, openafs-stable-1_4_x, updated. 893233f4574e9c50dda930ace0403ecb66f8bdef
Gerrit Code Review
gerrit@openafs.org
Thu, 17 Dec 2009 06:00:40 -0800 (PST)
The following commit has been merged in the openafs-stable-1_4_x branch:
commit 893233f4574e9c50dda930ace0403ecb66f8bdef
Author: Simon Wilkinson <sxw@inf.ed.ac.uk>
Date: Wed Nov 4 23:40:39 2009 +0000
Prevent VLRUQ race in ShakeLooseVCaches
When ShakeLooseVCaches is called from afs_Daemon, the xvcache lock
is not held. This means that if the GLOCK is dropped for any reason
(for example, whilst purging the dentry cache), then
ShakeLooseVCaches can be raced, end we can end up attempting to
flush the same vcache twice.
The symptoms of this in Linux are that we oops in clear_inode.
Get the xvcache lock in afs_Daemon(), before calling
ShakeLooseVCaches. Also, remove the conditional GLOCK code from
that function. If we don't have the GLOCK on entry, then we're really
in trouble (and both code paths - afs_Daemon and afs_NewVCache should
get the GLOCK for us, anyway)
FIXES 125589
(cherry picked from 95770bf95ad766207252ea0c2d2b5ab2415c896f)
Change-Id: I3fe5b41a661cd162ec73c51492925ad87c6d4c13
Reviewed-on: http://gerrit.openafs.org/781
Reviewed-by: Marc Dionne <marc.c.dionne@gmail.com>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Reviewed-on: http://gerrit.openafs.org/986
src/afs/afs_daemons.c | 12 ++++++++++--
src/afs/afs_vcache.c | 9 ---------
2 files changed, 10 insertions(+), 11 deletions(-)
--
OpenAFS Master Repository