From c33c678760e254e67037d62e38f6eedc139eaf6f Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 22 Oct 2012 20:40:21 -0400 Subject: [PATCH] Windows: AFSMarkDirty() require ExtentsResource held Instead of dynamically testing if the ExtentsResource is held and if not acquire it within AFSMarkDirty(), simply require that it be held. AFSMarkDirty() is only called from one location. Change-Id: If30fc05fead4c9e0604555239e9b862659de3e8b Reviewed-on: http://gerrit.openafs.org/8304 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp | 12 +----------- src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp | 8 ++++++++ 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp index a5c298400..3862c6110 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSExtentsSupport.cpp @@ -3363,7 +3363,6 @@ AFSMarkDirty( IN AFSFcb *Fcb, ULONG ulCount = 0; BOOLEAN bInsertTail = FALSE, bInsertHead = FALSE; LONG lCount; - BOOLEAN bLocked = FALSE; AFSDbgLogMsg( AFS_SUBSYSTEM_LOCK_PROCESSING, AFS_TRACE_LEVEL_VERBOSE, @@ -3371,11 +3370,7 @@ AFSMarkDirty( IN AFSFcb *Fcb, &Fcb->NPFcb->Specific.File.ExtentsResource, PsGetCurrentThread()); - if( !ExIsResourceAcquiredLite( &Fcb->NPFcb->Specific.File.ExtentsResource)) - { - AFSAcquireShared( &Fcb->NPFcb->Specific.File.ExtentsResource, TRUE); - bLocked = TRUE; - } + ASSERT( ExIsResourceAcquiredLite( &pNPFcb->Specific.File.ExtentsResource)); AFSAcquireExcl( &pNPFcb->Specific.File.DirtyExtentsListLock, TRUE); @@ -3537,11 +3532,6 @@ AFSMarkDirty( IN AFSFcb *Fcb, &Fcb->NPFcb->Specific.File.ExtentsResource, PsGetCurrentThread()); - if( bLocked) - { - AFSReleaseResource( &Fcb->NPFcb->Specific.File.ExtentsResource ); - } - return; } diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp index 6f528b458..b5232b493 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp @@ -1301,6 +1301,14 @@ try_exit: Irp->IoStatus.Information > 0) { + if ( !bLocked) + { + + AFSAcquireShared( &pFcb->NPFcb->Specific.File.ExtentsResource, + TRUE); + bLocked = TRUE; + } + // // Since this is dirty we can mark the extents dirty now. // AFSMarkDirty will dereference the extents. Do not call -- 2.39.5