OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_76-2294-g7c5b834

Gerrit Code Review gerrit@openafs.org
Fri, 6 Apr 2012 08:03:59 -0700 (PDT)


The following commit has been merged in the master branch:
commit 7c5b8346b305911c981620fff70503008e9cf488
Author: Jeffrey Altman <jaltman@your-file-system.com>
Date:   Sun Apr 1 01:17:21 2012 -0400

    Windows: Add per object per user EACCES caching
    
    If a cache manager is told by a file server that the user does
    not have permission to fetch status for an object, the cache
    manager must avoid requesting a fetch status a second time for
    that object for the same user.  Doing so risks triggering the
    rx call abort throttling which can have a significant impact on
    end user usability of the Explorer Shell and other applications.
    
    The cache manager cannot make a decision on whether or not to
    issue an RXAFS_FetchStatus RPC based upon the type of the object
    because the type is unknown to the cache manager.  A file server
    will succeed a FetchStatus request when the parent directory ACL
    grants lookup permission if the object in question is the directory
    or is a symlink/mountpoint.  Only file objects require read/write
    permissions to obtain status information.
    
    The rx call abort throttling is broken is many ways and must be
    avoided.  Call aborts are tracked by call channel and occur whenever
    ten call aborts are issued on the same call channel in a row
    regardless of the amount of time that has elapsed.
    
    The EACCES cache works by storing EACCES events by the FID and User
    for which the event occurred, when it occurred and the FID of the
    parent directory.  By definition, the parent FID of a volume root
    directory is itself.
    
    Entries are removed from the cache under the following circumstances:
    
     1. When the parent FID's callback expires or is replaced.
    
     2. When the parent FID's cm_scache object is recycled.
    
     3. When the user's tokens expire or are replaced.
    
    Entries are not removed when the FID's cm_scache object is recycled.
    
    This patchset also implements correct behavior if the VLF_DFSFILESET
    flag is set on a volume.
    
    Change-Id: I69507601f9872c9544e52a1d5e01064fa42efb81
    Reviewed-on: http://gerrit.openafs.org/6996
    Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
    Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>

 src/WINNT/afsd/NTMakefile           |    2 +
 src/WINNT/afsd/afsd.h               |    1 +
 src/WINNT/afsd/afsd_init.c          |    3 +
 src/WINNT/afsd/cm.h                 |    1 +
 src/WINNT/afsd/cm_access.c          |   38 +++--
 src/WINNT/afsd/cm_aclent.c          |    2 +
 src/WINNT/afsd/cm_btree.c           |   11 +-
 src/WINNT/afsd/cm_callback.c        |    5 +
 src/WINNT/afsd/cm_daemon.c          |   13 ++
 src/WINNT/afsd/cm_eacces.c          |  294 +++++++++++++++++++++++++++++++++++
 src/WINNT/afsd/cm_eacces.h          |   89 +++++++++++
 src/WINNT/afsd/cm_scache.c          |   29 +++-
 src/WINNT/afsd/cm_scache.h          |    1 -
 src/WINNT/afsd/cm_user.c            |    8 +-
 src/WINNT/afsd/cm_vnodeops.c        |   13 ++-
 src/WINNT/afsd/cm_vnodeops.h        |    1 +
 src/WINNT/afsd/smb.c                |    6 +-
 src/WINNT/afsd/smb3.c               |    6 +-
 src/WINNT/afsrdr/user/RDRFunction.c |    4 +-
 19 files changed, 491 insertions(+), 36 deletions(-)

-- 
OpenAFS Master Repository