Re: [PATCH] scsi_dh_alua: add missing transitioning state support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2010-08-17 at 15:05 -0400, Mike Snitzer wrote:
> Handle transitioning in the prep_fn.
> Handle transitioning in alua_rtpg's implicit alua code too.
> 
> These gaps were identified during controller failover testing of an
> ALUA array.
> 
> Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx>
> ---
>  drivers/scsi/device_handler/scsi_dh_alua.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
> index 1a970a7..c1eedc5 100644
> --- a/drivers/scsi/device_handler/scsi_dh_alua.c
> +++ b/drivers/scsi/device_handler/scsi_dh_alua.c
> @@ -616,6 +616,9 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h)
>  		    h->state == TPGS_STATE_STANDBY)
>  			/* Useable path if active */
>  			err = SCSI_DH_OK;
> +		else if (h->state == TPGS_STATE_TRANSITIONING)
> +			/* State transition, retry */
> +			goto retry;
>  		else
>  			/* Path unuseable for unavailable/offline */
>  			err = SCSI_DH_DEV_OFFLINED;
> @@ -698,13 +701,14 @@ static int alua_prep_fn(struct scsi_device *sdev, struct request *req)
>  	struct alua_dh_data *h = get_alua_data(sdev);
>  	int ret = BLKPREP_OK;
>  
> -	if (h->state != TPGS_STATE_OPTIMIZED &&
> -	    h->state != TPGS_STATE_NONOPTIMIZED) {
> +	if (h->state == TPGS_STATE_TRANSITIONING)
> +		ret = BLKPREP_DEFER;
> +	else if (h->state != TPGS_STATE_OPTIMIZED &&
> +		 h->state != TPGS_STATE_NONOPTIMIZED) {
>  		ret = BLKPREP_KILL;
>  		req->cmd_flags |= REQ_QUIET;
>  	}
>  	return ret;
> -
>  }
>  

Makes sense to me..

Acked-by: Nicholas A. Bellinger <nab@xxxxxxxxxxxxxxx>

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux