FBSD7: Don't sleep with the glock

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.

Change-Id: I0036aad3059805d77afe9aa9bf7f5d421d6810f8
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>
This commit is contained in:
Ben Kaduk 2010-12-19 19:33:28 -05:00 committed by Derrick Brashear
parent 6040a4daa0
commit b1cb3607ff

View File

@ -1646,7 +1646,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)