]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
FBSD7: Don't sleep with the glock
authorBen Kaduk <kaduk@mit.edu>
Mon, 20 Dec 2010 00:33:28 +0000 (19:33 -0500)
committerDerrick Brashear <shadow@dementia.org>
Wed, 12 Jan 2011 19:49:18 +0000 (11:49 -0800)
On FreeBSD 7.X, vinvalbuf() can (will) sleep; this results in a panic
when the kernel is configured with WITNESS and we hold the glock around
it.
Drop the glock in this case.

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

Change-Id: I3b22c12a20b33ca0e4df5a66c2edfc4167000a1c
Reviewed-on: http://gerrit.openafs.org/3650
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
src/afs/afs_vcache.c

index 20ff3f5b0f668e569c33f6512a9ed024a7ce9706..90268871f30a453ba9e9a26549d5a0704da1b1aa 100644 (file)
@@ -1645,7 +1645,9 @@ afs_GetVCache(struct VenusFid *afid, struct vrequest *areq,
        iheldthelock = VOP_ISLOCKED(vp, curthread);
        if (!iheldthelock)
            vn_lock(vp, LK_EXCLUSIVE | LK_RETRY, curthread);
+       AFS_GUNLOCK();
        vinvalbuf(vp, V_SAVE, curthread, PINOD, 0);
+       AFS_GLOCK();
        if (!iheldthelock)
            VOP_UNLOCK(vp, LK_EXCLUSIVE, curthread);
 #elif defined(AFS_FBSD_ENV)