There's several UAs for PGRs that will occur when releasing/preempting reservations. If we get these with the pr_ops right now, we just log a failure and return. For dm-multipath this is a waste because it will end up trying a new path since it doesn't know what a UA is. For userspace it's also a pain, because they end up just retrying. This patch adds the PGR related UAs so scsi-ml just retries for us. Signed-off-by: Mike Christie <michael.christie@xxxxxxxxxx> --- drivers/scsi/scsi_error.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 573d926220c4..59528138328d 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -634,6 +634,14 @@ enum scsi_disposition scsi_check_sense(struct scsi_cmnd *scmd) if (scmd->device->allow_restart && (sshdr.asc == 0x04) && (sshdr.ascq == 0x02)) return FAILED; + /* + * Registration/reservations preempted or reservation + * released. + */ + if (sshdr.asc == 0x2a && + (sshdr.ascq == 0x03 || sshdr.ascq == 0x04 || + sshdr.ascq == 0x05)) + return NEEDS_RETRY; /* * Pass the UA upwards for a determination in the completion * functions. -- 2.18.2