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>
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);
}
osi_Assert(ihP->ih_refcnt > 0);
- ihP->ih_synced = 0;
ih_fdclose(ihP);