From: "Benjamin Marzinski" <bmarzins@redhat.com>
To: Mike Snitzer <snitzer@redhat.com>
Cc: Bart Van Assche <bart.vanassche@sandisk.com>,
device-mapper development <dm-devel@redhat.com>,
"linux-scsi@vger.kernel.org" <linux-scsi@vger.kernel.org>
Subject: Re: [dm-devel] dm-mq and end_clone_request()
Date: Wed, 27 Jul 2016 10:52:15 -0500 [thread overview]
Message-ID: <20160727155215.GA12197@octiron.msp.redhat.com> (raw)
In-Reply-To: <20160727140828.GA5692@redhat.com>
On Wed, Jul 27, 2016 at 10:08:28AM -0400, Mike Snitzer wrote:
> On Tue, Jul 26 2016 at 6:51pm -0400,
> Bart Van Assche <bart.vanassche@sandisk.com> wrote:
>
> > 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
>
> This is all as expected. Only question I have: is
> dm_noflush_suspending() false? -- I assume so given must_push_back() is
> returning false.
>
> I'm struggling to appreciate why must_push_back() is only true if
> noflush is used. Regardless of which type, if there are no paths and
> queue_if_no_path was configured (implied by current != saved) then we
> shouldn't be returning -EIO back up the stack.
>
> > 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.
if you look in drivers/md/dm-ioctl.c at do_resume(), device mapper
internally does a suspend when you call resume with a new table loaded.
That's when these suspends are happening.
In the userspace tools, this happens in the DM_DEVICE_RESUME calls after
dm_addmap_reload(), which loads the new table. These all happen in the
domap() function.
> I need to dig into the multipath-tools userspace code more to be able to
> answer. But I've cc'd Ben Marzinski explicitly to get his insight.
>
> Curious if multipath-tools _always_ use the noflush variant of suspend?
> If not then we're setting ourselves up to return -EIO when we shouldn't.
There is only one time when we don't use noflush. That's when we resize
the table, and that's because we could otherwise have IOs that are past
the end of the device. It's been a known issue for a while now that you
cannot resize a multipath device with no working paths. Or (to say it in
a way that doesn't assume that people are stupid) if you lose all of
your paths while resizing a multipath device, IOs will fail. I've never
heard of anyone pushing back on that limitation.
-Ben
> Mike
>
> --
> dm-devel mailing list
> dm-devel@redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
next prev parent reply other threads:[~2016-07-27 15:52 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-19 22:57 dm-mq and end_clone_request() Bart Van Assche
2016-07-20 14:08 ` Mike Snitzer
2016-07-20 14:27 ` Mike Snitzer
2016-07-20 17:37 ` Bart Van Assche
2016-07-20 18:33 ` Mike Snitzer
2016-07-21 20:58 ` [dm-devel] " Bart Van Assche
2016-07-25 17:53 ` Mike Snitzer
2016-07-25 21:23 ` Mike Snitzer
2016-07-25 22:00 ` Bart Van Assche
2016-07-26 1:16 ` Mike Snitzer
2016-07-26 22:51 ` Bart Van Assche
2016-07-27 14:08 ` Mike Snitzer
2016-07-27 15:52 ` Benjamin Marzinski [this message]
2016-07-27 19:06 ` [dm-devel] " Bart Van Assche
2016-07-27 19:54 ` Mike Snitzer
2016-07-27 20:09 ` Mike Snitzer
2016-07-27 23:05 ` Bart Van Assche
2016-07-28 13:33 ` Mike Snitzer
2016-07-28 15:23 ` Bart Van Assche
2016-07-28 15:40 ` Mike Snitzer
2016-07-29 6:28 ` [dm-devel] " Hannes Reinecke
2016-07-26 6:02 ` Hannes Reinecke
2016-07-26 16:06 ` Mike Snitzer
[not found] ` <317679447.7168375.1469729769593.JavaMail.zimbra@redhat.com>
[not found] ` <6880321d-e14f-169b-d100-6e460dd9bd09@sandisk.com>
[not found] ` <1110327939.7305916.1469819453678.JavaMail.zimbra@redhat.com>
[not found] ` <a5c1a149-b1a2-b5a4-2207-bdaf32db3cbd@sandisk.com>
[not found] ` <757522831.7667712.1470059860543.JavaMail.zimbra@redhat.com>
[not found] ` <536022978.7668211.1470060125271.JavaMail.zimbra@redhat.com>
[not found] ` <931235537.7668834.1470060339483.JavaMail.zimbra@redhat.com>
[not found] ` <1264951811.7684268.1470065187014.JavaMail.zimbra@redhat.com>
[not found] ` <17da3ab0-233a-2cec-f921-bfd42c953ccc@sandisk.com>
2016-08-01 17:59 ` Mike Snitzer
2016-08-01 18:55 ` Bart Van Assche
2016-08-01 19:15 ` Mike Snitzer
2016-08-01 20:46 ` Mike Snitzer
2016-08-01 22:41 ` Bart Van Assche
2016-08-02 17:45 ` Mike Snitzer
2016-08-03 0:19 ` Bart Van Assche
2016-08-03 0:40 ` Mike Snitzer
2016-08-03 1:33 ` Laurence Oberman
2016-08-03 2:10 ` Mike Snitzer
2016-08-03 2:18 ` Laurence Oberman
2016-08-03 2:55 ` Laurence Oberman
2016-08-03 15:10 ` Laurence Oberman
2016-08-03 16:06 ` Bart Van Assche
2016-08-03 17:25 ` Laurence Oberman
2016-08-03 18:03 ` [dm-devel] " Laurence Oberman
2016-08-03 16:55 ` Bart Van Assche
2016-08-04 9:53 ` Hannes Reinecke
2016-08-04 10:09 ` Hannes Reinecke
2016-08-04 15:10 ` Mike Snitzer
2016-08-04 16:10 ` Mike Snitzer
2016-08-04 17:42 ` Bart Van Assche
2016-08-04 23:58 ` Mike Snitzer
2016-08-05 1:07 ` Laurence Oberman
2016-08-05 11:43 ` Laurence Oberman
2016-08-05 15:39 ` Laurence Oberman
2016-08-05 15:43 ` Bart Van Assche
2016-08-05 18:42 ` [dm-devel] " Bart Van Assche
2016-08-06 14:47 ` Laurence Oberman
2016-08-07 22:31 ` [dm-devel] " Bart Van Assche
2016-08-08 12:45 ` Laurence Oberman
2016-08-08 13:44 ` Johannes Thumshirn
2016-08-08 14:32 ` Laurence Oberman
2016-08-08 14:54 ` Bart Van Assche
2016-08-08 15:11 ` Bart Van Assche
2016-08-08 15:26 ` Laurence Oberman
2016-08-08 15:28 ` Bart Van Assche
2016-08-08 22:39 ` Bart Van Assche
2016-08-08 22:52 ` Laurence Oberman
2016-08-09 0:09 ` Laurence Oberman
2016-08-09 15:51 ` Bart Van Assche
2016-08-09 17:12 ` [dm-devel] " Laurence Oberman
2016-08-09 17:16 ` Bart Van Assche
2016-08-09 17:21 ` Laurence Oberman
2016-08-10 21:38 ` Laurence Oberman
2016-08-11 16:51 ` Laurence Oberman
2016-08-05 18:40 ` Bart Van Assche
2016-07-21 20:32 ` Mike Snitzer
2016-07-21 20:40 ` [dm-devel] " Bart Van Assche
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160727155215.GA12197@octiron.msp.redhat.com \
--to=bmarzins@redhat.com \
--cc=bart.vanassche@sandisk.com \
--cc=dm-devel@redhat.com \
--cc=linux-scsi@vger.kernel.org \
--cc=snitzer@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).