On Wed, 2021-04-28 at 15:54 -0400, Mike Snitzer wrote: > > @@ -626,32 +626,16 @@ static int dm_sg_io_ioctl(struct block_device > *bdev, fmode_t mode, > } > > if (rhdr.info & SG_INFO_CHECK) { > - /* > - * See if this is a target or path error. > - * Compare blk_path_error(), > scsi_result_to_blk_status(), > - * blk_errors[]. > - */ > - switch (rhdr.host_status) { > - case DID_OK: > - if (scsi_status_is_good(rhdr.status)) > - rc = 0; > - break; > - case DID_TARGET_FAILURE: > - rc = -EREMOTEIO; > - goto out; > - case DID_NEXUS_FAILURE: > - rc = -EBADE; > - goto out; > - case DID_ALLOC_FAILURE: > - rc = -ENOSPC; > - goto out; > - case DID_MEDIUM_ERROR: > - rc = -ENODATA; > - goto out; > - default: > - /* Everything else is a path error */ > + blk_status_t sts = > scsi_result_to_blk_status(rhdr.host_status, NULL); This change makes dm_mod depend on scsi_mod. Would you seriously prefer that over a re-implementation of the logic? Regards Martin