From: Derrick Brashear Date: Tue, 10 Jan 2006 15:03:26 +0000 (+0000) Subject: remove-vnop-lock-order-20060110 X-Git-Tag: openafs-devel-1_5_0~118 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=39b23a0dc16f2e26abf3b7df53bfadb98377748d;p=packages%2Fo%2Fopenafs.git remove-vnop-lock-order-20060110 FIXES 25118 finegrained dcache lock order not obeyed --- diff --git a/src/afs/VNOPS/afs_vnop_remove.c b/src/afs/VNOPS/afs_vnop_remove.c index 92e344f0c..a9de86702 100644 --- a/src/afs/VNOPS/afs_vnop_remove.c +++ b/src/afs/VNOPS/afs_vnop_remove.c @@ -356,7 +356,13 @@ afs_remove(OSI_VC_ARG(adp), aname, acred) FetchWholeEnchilada(tvc, &treq); #endif ReleaseWriteLock(&tvc->lock); + if (tdc) + ReleaseSharedLock(&tdc->lock); ObtainWriteLock(&adp->lock, 144); + /* Technically I don't think we need this back, but let's hold it + anyway; The "got" reference should actually be sufficient. */ + if (tdc) + ObtainSharedLock(&tdc->lock, 640); } osi_dnlc_remove(adp, aname, tvc);