On 23/03/2026 16:15, Benjamin Marzinski wrote:
}
- err = alua_rtpg(sdev, pg);
- spin_lock_irqsave(&pg->lock, flags);
+ err = alua_rtpg(sdev);
+ spin_lock_irqsave(&h->lock, flags);
- /* If RTPG failed on the current device, try using another */
- if (err == SCSI_DH_RES_TEMP_UNAVAIL &&
- (prev_sdev = alua_rtpg_select_sdev(pg)))
- err = SCSI_DH_IMM_RETRY;
Previously, if the rtpg failed on a device, another device would be
tried, and the unusable device's alua state would get updated, along
with all the other device's states.
Where specifically are you referring to here please?
The removed code above here calls alua_rtpg_select_sdev() to select a
new device to retry the rtpg on, and returns with SCSI_DH_IMM_RETRY, to
retrigger the rtpg on that device. If the rtpg completed on any device,
it would update the state on all the devices. But if we are depending
each device issuing its own rtp to update its state, what happens to
the devices that can't complete the rtpg? I assume the correct answer is
to give them some failed state.
Yes, I am relying for each scsi device to issue the RTPG. If they cannot
each run it, then they should indeed give failed state and be offlined.
Thanks,
John