Hannes,

> If a target only supports implicit ALUA sending a SET TARGET PORT
> GROUPS command is not only pointless, but might actually cause issues.

We already have a conditional in alua_stpg():

        if (!(pg->tpgs & TPGS_MODE_EXPLICIT)) {
                /* Only implicit ALUA supported, retry */
                return SCSI_DH_RETRY;
        }

> @@ -832,6 +832,10 @@ static void alua_rtpg_work(struct work_struct *work)
>               if (err != SCSI_DH_OK)
>                       pg->flags &= ~ALUA_PG_RUN_STPG;
>       }
> +     /* Do not run STPG if only implicit ALUA is supported */
> +     if (scsi_device_tpgs(sdev) == TPGS_MODE_IMPLICIT)
> +             pg->flags &= ~ALUA_PG_RUN_STPG;
> +
>       if (pg->flags & ALUA_PG_RUN_STPG) {
>               pg->flags &= ~ALUA_PG_RUN_STPG;
>               spin_unlock_irqrestore(&pg->lock, flags);

Instead of checking for EXPLICIT one place and checking for !IMPLICIT
another, can we consolidate the two and maybe do:

        if (pg->flags & ALUA_PG_RUN_STPG &&
            scsi_device_tpgs(sdev) == TPGS_MODE_EXPLICIT) {
                [...]

and then remove the redundant check in alua_stpg()?

-- 
Martin K. Petersen      Oracle Linux Engineering

Reply via email to