On Fri, 2017-12-08 at 11:14 +0100, Hannes Reinecke wrote:
> @@ -541,6 +544,20 @@ static int alua_rtpg(struct scsi_device *sdev, struct
> alua_port_group *pg)
> retval = submit_rtpg(sdev, buff, bufflen, &sense_hdr, pg->flags);
>
> if (retval) {
> + /*
> + * If the target only supports active/optimized there's
> + * not much we can do; it's not that we can switch paths
> + * or somesuch.
> + * So ignore any errors to avoid spurious failures during
> + * path failover.
> + */
> + if ((pg->valid_states & ~TPGS_SUPPORT_OPTIMIZED) == 0) {
> + sdev_printk(KERN_INFO, sdev,
> + "%s: ignoring rtpg result %d\n",
> + ALUA_DH_NAME, retval);
> + kfree(buff);
> + return SCSI_DH_OK;
> + }
Hello Hannes,
Sorry but this change looks weird to me. If an RTPG fails, shouldn't
alua_rtpg() return SCSI_DH_IO independent of what ALUA states the target
supports? Are you perhaps trying to implement a work-around for an array
that does not respond to RTPG during path transitions?
Thanks,
Bart.