[dm-devel] rq-based mpath failed path on SCSI target failure (malformed discard)
Mike Snitzer
snitzer at redhat.com
Mon Jul 26 15:00:00 UTC 2010
On Mon, Jul 26 2010 at 9:30am -0400,
Mike Snitzer <snitzer at redhat.com> wrote:
> Hi,
>
> I have been implementing discard support for the various DM targets. I
> have a LUN that requires a 4K alignment for all discard requests. I
> forced the issue (by misconfiguring the alignment such that discards
> would be misaligned). Multipath failed the path once the SCSI layer got
> the following error.
>
> My question: shouldn't mpath _not_ fail the path for "Illegal
> Request".. "Parameter value invalid"? The same request would fail on
> any path given that the failure is on the target side (rejecting the
> malformed discard request). Following setup is ext4 FS ontop of linear
> DM mapping (dm-2) ontop of request-based mpath mapping (dm-1):
>
> EXT4-fs (dm-2): mounted filesystem with ordered data mode
> sd 3:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
> sd 3:0:0:0: [sda] Sense Key : Illegal Request [current]
> Info fld=0x0
> sd 3:0:0:0: [sda] Add. Sense: Parameter value invalid
> sd 3:0:0:0: [sda] CDB: Write same(16): 93 08 00 00 00 00 00 00 45 82 00 00 03 00 00 00
> end_request: I/O error, dev sda, sector 17794
> device-mapper: multipath: Failing path 8:0.
The following patch sorts this out in multipath; special-cases discard
requests so that they don't enduce path failures:
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index ec2b43e..125c80f 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -1272,6 +1272,9 @@ static int do_end_io(struct multipath *m, struct request *clone,
if (error == -EOPNOTSUPP)
return error;
+ if (clone->cmd_flags & REQ_DISCARD)
+ return error; /* pass all discard request failures up */
+
if (mpio->pgpath)
fail_path(mpio->pgpath);
More information about the dm-devel
mailing list