OpenAFS Master Repository branch, openafs-stable-1_4_x, updated. openafs-stable-1_4_12-123-g028fc36

Gerrit Code Review gerrit@openafs.org
Sun, 10 Jul 2011 07:38:46 -0700 (PDT)


The following commit has been merged in the openafs-stable-1_4_x branch:
commit 028fc36bb1bb081a7134e766399b265ff7a333dc
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Wed Jun 29 13:51:22 2011 -0500

    SOLARIS: Granular multiPage detection
    
    Currently, a struct vcache has a multiPage counter, indicating how
    many afs_getpage requests are in-flight for that vcache that involve
    retrieving multiple pages. Any dcache associated with such vcaches are
    then avoided when choosing dcache entries to evict from the cache,
    since we may deadlock when trying to evict a dcache entry from one of
    the earlier afs_GetOnePage calls in a particular afs_getpage request.
    
    This behavior can cause the client to become unusable if the cache
    becomes full, and the only items in the cache are dcache entries in a
    file that has an in-flight multi-page afs_getpage request. Since, in
    that case, we cannot kick out any entries from the cache, and so we
    wait forever to wait for the cache utilization to go down.
    
    To prevent this from occurring, record exactly which ranges in the
    file have in-flight multi-page afs_getpage requests, and just avoid
    dcache entries in those ranges. This way afs_GetDownD can evict dcache
    entries in the same file, but still avoid entries that would cause a
    deadlock.
    
    Also add some comments explaining this situation a bit more.
    
    Reviewed-on: http://gerrit.openafs.org/4896
    Reviewed-by: Derrick Brashear <shadow@dementia.org>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    (cherry picked from commit 31a001f60e5fe729b315f679d1d43b367bd74ea5)
    
    Change-Id: I4fd91d07648616fa1c9dc9ee6e1f25e8c2f3b20b
    Reviewed-on: http://gerrit.openafs.org/4928
    Reviewed-by: Derrick Brashear <shadow@dementia.org>
    Tested-by: Derrick Brashear <shadow@dementia.org>

 src/afs/SOLARIS/osi_vm.c       |   28 ++++++++++++++++++++++++++++
 src/afs/SOLARIS/osi_vnodeops.c |   29 +++++++++++++++++++++++++++--
 src/afs/afs.h                  |   17 ++++++++++++++++-
 src/afs/afs_dcache.c           |   11 +++++++----
 src/afs/afs_prototypes.h       |    1 +
 src/afs/afs_vcache.c           |    1 +
 6 files changed, 80 insertions(+), 7 deletions(-)

-- 
OpenAFS Master Repository