@@ -1214,7 +1214,7 @@ static int do_end_io(struct multipath *m, struct request *clone,
if (!error && !clone->errors)
return 0; /* I/O complete */
- if (error == -EOPNOTSUPP)
+ if (error == -EOPNOTSUPP || error == -EACCES)
return error;
if (mpio->pgpath)
@@ -797,6 +797,10 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes)
* happens.
*/
action = ACTION_RETRY;
+ else if (status_byte(cmd->result) == RESERVATION_CONFLICT) {
+ error = -EACCES;
+ description = "Could not access device";
+ action = ACTION_FAIL;
} else if (sense_valid && !sense_deferred) {
switch (sshdr.sense_key) {
case UNIT_ATTENTION: