]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
vol: clear ih_synced before dropping lock
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 20 Jan 2011 06:23:37 +0000 (01:23 -0500)
committerDerrick Brashear <shadow@dementia.org>
Fri, 4 Feb 2011 19:57:22 +0000 (11:57 -0800)
in ih_reallyclose() clear ihP->ih_synced before dropped
the IH_LOCK.  ih_reallyclose() is already committed to
performing the OS_SYNC() call.  Failing to clear the ih_synced
flag before dropping the lock permits another thread, the ih_sync_all()
thread for example, to also conclude that it must sync the
file.

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

Change-Id: I18baf1e1cd409a108845c2db2cb38144593016c8
Reviewed-on: http://gerrit.openafs.org/3845
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/vol/ihandle.c

index 3e8a5c83853ee9c8c1b8c76c257dbc9720b66628..b57929d315defbe02a86da052c0b5a2d951fb543 100644 (file)
@@ -870,6 +870,7 @@ ih_reallyclose(IHandle_t * ihP)
     ihP->ih_refcnt++;   /* must not disappear over unlock */
     if (ihP->ih_synced) {
        FdHandle_t *fdP;
+        ihP->ih_synced = 0;
        IH_UNLOCK;
 
        fdP = IH_OPEN(ihP);
@@ -882,7 +883,6 @@ ih_reallyclose(IHandle_t * ihP)
     }
 
     osi_Assert(ihP->ih_refcnt > 0);
-    ihP->ih_synced = 0;
 
     ih_fdclose(ihP);