OpenAFS Master Repository branch, openafs-devel-1_7_x, updated. openafs-devel-1_7_23-44-g3f8eda1

Gerrit Code Review gerrit@openafs.org
Fri, 26 Apr 2013 10:39:54 -0700 (PDT)


The following commit has been merged in the openafs-devel-1_7_x branch:
commit 5412b8f9b7deb396635e46c4f747f0a93209c347
Author: Jeffrey Altman <jaltman@your-file-system.com>
Date:   Fri Apr 12 10:58:47 2013 -0400

    Windows: AFSInitDirEntry allocated ObjInfoCBs valid
    
    In AFSInitDirEntry the pattern was to find or allocate an
    ObjectInfoCB then destroy it if the DirectoryCB creation fails
    for some reason.  The problem with this approach is that once the
    VolumeCB ObjectInfoTree.TreeLock is dropped the ObjectInfoCB is findable.
    That means that the contents of the ObjectInfoCB must be valid.
    
    This patchset makes three changes.  First, in the case where the
    ObjectInfoCB is allocated, the fields of the ObjectInfoCB are populated
    from the DirEnumEntry before the TreeLock is dropped.  Second, if the
    DirectoryCB allocation fails the ObjectInfoCB is not deleted.  It is
    perfectly valid and can be used by a subsequent AFSInitDirEntry call.
    Perhaps one that is racing with this thread.   It will eventually be
    cleaned up by the AFSPrimaryVolumeWorkerThread.  Finally, when the
    ObjectInfoCB reference count is decremented the TreeLock is held shared in
    order to prevent races with other threads that might be incrementing it
    themselves.
    
    Reviewed-on: http://gerrit.openafs.org/9781
    Reviewed-by: Rod Widdowson <rdw@steadingsoftware.com>
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
    (cherry picked from commit a1aa06e82ca770456884b1b96b4f0c109cd06a85)
    
    Change-Id: I99f08a307560b06bd8b66ee177b2c8b5799707a4
    Reviewed-on: http://gerrit.openafs.org/9818
    Tested-by: BuildBot <buildbot@rampaginggeek.com>
    Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

 src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp |  193 +++++++++++++---------------
 1 files changed, 92 insertions(+), 101 deletions(-)

-- 
OpenAFS Master Repository