OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_76-2250-gb3b267d

Gerrit Code Review gerrit@openafs.org
Mon, 26 Mar 2012 11:21:13 -0700 (PDT)


The following commit has been merged in the master branch:
commit b3b267d16eefb993f52f66bf44f3e659c1017e58
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Thu Mar 22 10:42:38 2012 -0500

    afs: Set DWriting when truncating a dcache entry
    
    When we truncate a file, we truncate the contents of the relevant
    dcache entry chunks, and prevent future FetchData operations from
    fetching data beyond the truncation offset. If we never write anything
    to that chunk, we never set DWriting, and so on disk it looks like
    that dcache entry has valid data for the specified DV. However, since
    the data is truncated, this is not true.
    
    If a process holds a file open, truncates it without writing to it,
    and then the client crashes (or we have trouble contacting the
    fileserver when we close the file), the dcache entry will appear valid
    on disk. So the next time we read the dcache entry, we will use the
    incorrect cache contents as if they were accurate for the specified
    DV.
    
    To avoid this, set DWriting when we truncate a chunk. Normally we only
    clear DWriting when we actually send data to the fileserver, so to
    clear DWriting in this case, add an additional line to clear it in
    afs_StoreAllSegments, after the StoreMini has completed.
    
    Change-Id: Ifc3bfc21712ab37b1f2865ce59fa45bf03811dd8
    Reviewed-on: http://gerrit.openafs.org/6937
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Derrick Brashear <shadow@dementix.org>

 src/afs/afs_segments.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)

-- 
OpenAFS Master Repository