OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_74_1-90-g6d48026

Gerrit Code Review gerrit@openafs.org
Tue, 11 May 2010 22:24:23 -0700 (PDT)


The following commit has been merged in the master branch:
commit 6d48026f86794ecf4dba70cc3f8f5ebd685c5255
Author: Jeffrey Altman <jaltman@your-file-system.com>
Date:   Thu May 6 17:12:48 2010 -0400

    Windows: RXAFS_InlineBulkStat errors must be processed via cm_Analyze
    
    RXAFS_InlineBulkStatus does not return errors such as EACCES,
    VNOVOL, VNOVNODE, VOFFLINE, VBUSY, VIO, VMOVED, etc. as an RPC return
    code.  Instead they are returned in the status info errorCode field
    for each file.
    
    Traditionally, the error associated with the first FID in the query
    list has been returned to the caller of cm_TryBulkStatRPC().
    However, the error has never been processed through cm_Analyze()
    which means that the per-vnode processing for VNOVNODE and the volume
    global processing for VMOVED, VNOVOL, etc. has never been performed.
    As a result, failover to other .readonly volume instances cannot occur,
    volume moves will not be handled, and files that have been deleted
    are not detected.
    
    This patchset makes the following changes:
    
    1. If an inline bulk operation has been performed and the inline
       errorCode is a volume global error, then that error replaces
       the RPC return code within the cm_Analyze() processing for
       the RPC.  This will affect whether or not a retry operation
       is performed.
    
    2. The variable 'inlinebulk' is reset to 0 at the top of the
       cm_Analyze() loop in case failover from an inlinebulk capable
       file to an inlinebulk incapable file server takes place.
    
    3. The FID that is passed into cm_Analyze() is not a real fid.
       Instead it consists of the cell and volume but vnode = 0.
       This ensures that the error (if any) is not applied to the
       directory object.
    
    4. If an inline bulk operation was performed, prior to performing
       the cm_MergeStatus() operation a vnode a check is made to
       determine if an error was returned for that vnode.  If so,
       cm_Analyze() is called with no connection, a fake cm_req_t,
       the fid, and the error.  This permits cm_Analyze() processing
       to be performed on the file.
    
    LICENSE MIT
    
    Change-Id: I91b10faae085b52ba753b3942215951e2122b937
    Reviewed-on: http://gerrit.openafs.org/1918
    Tested-by: Jeffrey Altman <jaltman@openafs.org>
    Reviewed-by: Derrick Brashear <shadow@dementia.org>
    Reviewed-by: Jeffrey Altman <jaltman@openafs.org>

 src/WINNT/afsd/cm_vnodeops.c |  157 ++++++++++++++++++++++++++++--------------
 1 files changed, 104 insertions(+), 53 deletions(-)

-- 
OpenAFS Master Repository