[dm-devel] dm-mq and end_clone_request()
Bart Van Assche
bart.vanassche at sandisk.com
Tue Jul 26 22:51:52 UTC 2016
On 07/25/2016 06:15 PM, Mike Snitzer wrote:
> Please try this patch to see if it fixes your issue, thanks.
>
> diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
> index 52baf8a..287caa7 100644
> --- a/drivers/md/dm-mpath.c
> +++ b/drivers/md/dm-mpath.c
> @@ -433,10 +433,17 @@ failed:
> */
> static int must_push_back(struct multipath *m)
> {
> - return (test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) ||
> - ((test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) !=
> - test_bit(MPATHF_SAVED_QUEUE_IF_NO_PATH, &m->flags)) &&
> - dm_noflush_suspending(m->ti)));
> + bool r;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&m->lock, flags);
> + r = (test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) ||
> + ((test_bit(MPATHF_QUEUE_IF_NO_PATH, &m->flags) !=
> + test_bit(MPATHF_SAVED_QUEUE_IF_NO_PATH, &m->flags)) &&
> + dm_noflush_suspending(m->ti)));
> + spin_unlock_irqrestore(&m->lock, flags);
> +
> + return r;
> }
>
> /*
Hello Mike,
Thank you for having made this patch available. Unfortunately even
with this patch applied I still see fio reporting I/O errors and the
following text still appears in the system log immediately before the
I/O errors are reported (due to debug statements I added in the device
mapper; mpath 254:0 and mpathbe refer to the same dm device):
Jul 26 15:40:37 ion-dev-ib-ini kernel: mpath 254:0: queue_if_no_path 0 -> 1
Jul 26 15:40:37 ion-dev-ib-ini kernel: executing DM ioctl DEV_SUSPEND on mpathbe
Jul 26 15:40:37 ion-dev-ib-ini kernel: mpath 254:0: queue_if_no_path 1 -> 0
BTW, I have not yet been able to determine which user space code
triggers the DEV_SUSPEND ioctl. A condlog() call I had added just
above dm_simplecmd_flush(DM_DEVICE_SUSPEND, mapname, 0) call in
multipathd did not produce any output.
Bart.
More information about the dm-devel
mailing list