OpenAFS Master Repository branch, master, updated. openafs-devel-1_5_66-26-g5e68422

Gerrit Code Review gerrit@openafs.org
Tue, 3 Nov 2009 11:41:23 -0800 (PST)


The following commit has been merged in the master branch:
commit 5e6842283f5c2fdf0fe3306993a6e18c2e590716
Author: Andrew Deason <adeason@sinenomine.net>
Date:   Mon Nov 2 17:18:19 2009 -0600

    DAFS: Wait for exclusive ops in FSYNC_VOL_OFF
    
    In the FSYNC_VOL_OFF handler, fssync-server.c errors out if the call to
    VGetVolumeByVp_r fails. However, this can fail if the volume is in an
    error state such as SALVAGING. Normally we don't even call GetVolume
    when the volume is salvaging, but the volume state can change to
    SALVAGING inside GetVolume. This is particularly likely to happen on a
    demand salvage, since we switch to the SALVSYNC_REQ state when
    scheduling the salvage, and if we are still in that state when the
    salvaged child requests a VOL_OFF, we will fail to get the heavyweight
    ref.
    
    Fix this in two ways. First, we VWaitExclusiveState_r before examining
    states for the short-circuit logic so our view of the volume state is
    more accurate. Second, re-examine the volume state after the call to
    GetVolume, and perform the same short-circuit logic, since the volume
    state may have changed during GetVolume.
    
    Change-Id: I4ebb87691c28170b42e0056b342477a12d0f6888
    Reviewed-on: http://gerrit.openafs.org/769
    Tested-by: Andrew Deason <adeason@sinenomine.net>
    Reviewed-by: Derrick Brashear <shadow@dementia.org>

 src/vol/fssync-server.c |   46 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 42 insertions(+), 4 deletions(-)

-- 
OpenAFS Master Repository