From: Andrew Deason Date: Fri, 27 Apr 2012 17:59:25 +0000 (-0500) Subject: vol: A GOING_OFFLINE volume should yield VOFFLINE X-Git-Tag: upstream/1.6.2_pre2^2~180 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=fe588efd2df9adb6d393f223a4359cdc46a16185;p=packages%2Fo%2Fopenafs.git vol: A GOING_OFFLINE volume should yield VOFFLINE Currently, GetVolume treats a volume in the VOL_STATE_GOING_OFFLINE state the same as VOL_STATE_SHUTTING_DOWN, and so returns VNOVOL for a GOING_OFFLINE volume, but these states are very different. GOING_OFFLINE indicates that a volume should soon be in the UNATTACHED state, so we should treat GOING_OFFLINE the same as UNATTACHED for returning errors to the user. For UNATTACHED, we return specialStatus if it's set, or VOFFLINE otherwise; so, just do the same for GOING_OFFLINE. Reviewed-on: http://gerrit.openafs.org/7290 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit d10f71d44fddd7ea6e37481cffd7ee1be2a93217) Change-Id: I1f75992da7732596c78041e9eac3b1e3a12082e8 Reviewed-on: http://gerrit.openafs.org/7488 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- diff --git a/src/vol/volume.c b/src/vol/volume.c index c6fa1e805..53c994cf3 100644 --- a/src/vol/volume.c +++ b/src/vol/volume.c @@ -3980,18 +3980,18 @@ GetVolume(Error * ec, Error * client_ec, VolId volumeId, Volume * hint, * - VOL_STATE_SHUTTING_DOWN */ if ((V_attachState(vp) == VOL_STATE_ERROR) || - (V_attachState(vp) == VOL_STATE_SHUTTING_DOWN) || - (V_attachState(vp) == VOL_STATE_GOING_OFFLINE)) { + (V_attachState(vp) == VOL_STATE_SHUTTING_DOWN)) { *ec = VNOVOL; vp = NULL; break; } /* - * short circuit with VOFFLINE for VOL_STATE_UNATTACHED and + * short circuit with VOFFLINE for VOL_STATE_UNATTACHED/GOING_OFFLINE and * VNOVOL for VOL_STATE_DELETED */ if ((V_attachState(vp) == VOL_STATE_UNATTACHED) || + (V_attachState(vp) == VOL_STATE_GOING_OFFLINE) || (V_attachState(vp) == VOL_STATE_DELETED)) { if (vp->specialStatus) { *ec = vp->specialStatus;