Windows: MergeStatus before SyncOpDone
authorJeffrey Altman <jaltman@your-file-system.com>
Mon, 27 Jun 2011 13:31:54 +0000 (09:31 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Mon, 27 Jun 2011 15:18:55 +0000 (08:18 -0700)
commit51fa590e704c77c0e9ba873ecb854448885030a5
tree9e055f2ae77b148ea977e07b47ee5dfb7a1de2e4
parent9f77a2d6b3d571a928261563763913c8c6ee2938
Windows: MergeStatus before SyncOpDone

cm_SyncOp/cm_SyncOpDone is used to synchronize the RPC processing
to ensure that calls which are in conflict cannot occur at the
same time but also to ensure that the ordering of operations
is consistent.  cm_MergeStatus() was in many cases executed after
cm_SyncOpDone() removed the synchronization barrier which in turn
permitted status information to be applied out of order.  Side
effects could have included data loss due to client side file
truncation.  More commonly two StoreData RPCs would have their
status information applied out of order forcing the cache manager
to invalidate all of the cached data for the file.

Change-Id: I8073da701cf11cd0df2b901e81180de7c193ae23
Reviewed-on: http://gerrit.openafs.org/4891
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jeffrey Altman <jaltman@openafs.org>
src/WINNT/afsd/cm_dcache.c
src/WINNT/afsd/cm_vnodeops.c