Re: dm: dm_blk_ioctl(): implement failover for SG_IO on dm-multipath

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 29/04/21 10:33, Martin Wilck wrote:
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?

You could just make it an inline function too.

Paolo




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux