OpenAFS Master Repository branch, openafs-devel-1_7_x, updated. openafs-devel-1_7_23-27-g31fdb07

Gerrit Code Review
Tue, 9 Apr 2013 20:19:17 -0700 (PDT)

The following commit has been merged in the openafs-devel-1_7_x branch:
commit 31fdb07b669ed321627d28ae4412745e42e915ab
Author: Jeffrey Altman <>
Date:   Mon Apr 8 08:56:31 2013 -0400

    Windows: hold locks during non-cached writes
    Writes can alter both the EndOfFile (Fcb FileSize) and the ValidDataLength
    which must remain synchronized with the data known to the service.
    Dropping the Fcb.Resource and the SectionObjectResource prior to
    performing non-cached writes opens the possibility of a race in which
    data changes and length updates can be altered independently.
    Efforts are made to avoid holding locks across calls to the service
    because they can result in deadlocks with object invalidation or extent
    management.  However, object invalidation for data version changes are
    now handled in a worker thread.  It should be safe to hold onto the
    Fcb Resource and SectionObjectResource across non-cached write processing.
    The locks are not held in the paging IO path so paging non-cached
    writes (which cannot be extending) will not prevent cached writes from
    taking place in parallel.
    The reason it is critical for the ValidDataLength and the FileSize to
    remain in sync with the data for non-paging non-cached writes is that
    these values are used to determine whether the Windows cache manager
    should trigger a page fault to read data from the service upon receiving
    an extending cached write that doesn't fill the page.
    Change-Id: I80736daafdb9e6edcc1eeec9a9203fdaad28dfe8
    Tested-by: BuildBot <>
    Reviewed-by: Rod Widdowson <>
    Reviewed-by: Peter Scott <>
    Reviewed-by: Jeffrey Altman <>

 src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp |   29 -----------------------------
 1 files changed, 0 insertions(+), 29 deletions(-)

OpenAFS Master Repository