From: Mike Snitzer <snitzer@redhat.com>
To: NeilBrown <neilb@suse.com>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org,
device-mapper development <dm-devel@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Zdenek Kabelac <zkabelac@redhat.com>
Subject: Re: [PATCH 00/13] block: assorted cleanup for bio splitting and cloning.
Date: Tue, 21 Nov 2017 07:10:50 -0500 [thread overview]
Message-ID: <20171121121049.GA17014@redhat.com> (raw)
In-Reply-To: <20171121013533.GA14520@redhat.com>
On Mon, Nov 20 2017 at 8:35pm -0500,
Mike Snitzer <snitzer@redhat.com> wrote:
> On Mon, Nov 20 2017 at 7:34pm -0500,
> NeilBrown <neilb@suse.com> wrote:
>
> > On Mon, Nov 20 2017, Mike Snitzer wrote:
> >
> > >
> > > But I've now queued this patch for once Linus gets back (reverts DM
> > > changes from commit 47e0fb461f):
> > > https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=c9fdc42ba23eabd1ba7aef199fb9bb4b4fe5c545
> >
> > This patch does two things.
> > 1/ It removes the BIOSET_NEED_RESCUER flag from biosets created by dm.
> > This a functional changed over the code from before my patches.
> > Previously, all biosets were given a rescuer thread.
> > After my patch set, biosets only got a rescuer thread if
> > BIOSET_NEED_RESCUER was passed, and it was passed for all biosets.
> > I then removed it from places were I was certain it wasn't needed.
> > I didn't remove it from dm because I wasn't certain. Your
> > patch does remove the flags, which I think is incorrect - see below.
Yeap, definitely was incorrect. I've dropped the patch.
> > 2/ It changes flush_current_bio_list() so that bios allocated from a
> > bioset that does not have a rescue_workqueue are now added to
> > the ->rescue_list for their bio_set, and ->rescue_work is queued
> > on the NULL ->rescue_workqueue, resulting in a NULL dereference.
> > I suspect you don't want this.
Yes, I see that now.
> > The patch description claims that the patch fixes something, but it
> > isn't clear to me what it is meant to be fixing.
> >
> > It makes reference to dbba42d8 which is described as removing an unused
> > bioset process, though what it actually does is remove an used bioset
> > (and obvious the process disappears with it). My patch doesn't change
> > that behavior.
>
> Well I looked at this because Zdenek reported that with more recent
> kernels he is seeing the "bioset" per DM device again (whereas it was
> thought to be removed with mikulas' commit dbba42d8 -- but that commit
> removed "bioset" only in terms of q->bio_split.
I think Zdenek triggered a false-positive that DM had magically sprouted
a new "bioset" rescue_workqueue. Reality is I cannot see how each
bio-based DM device can avoid having one. And the commit d67a5f4b59
("dm: flush queued bios when process blocks to avoid deadlock") I
referenced earlier very much makes DM depend on it even more.
So apologies for being so off-base (by looking to prematurely revert
DM's use of BIOSET_NEED_RESCUER, etc).
> > Please see
> > https://www.redhat.com/archives/dm-devel/2017-August/msg00310.html
I'll very likely pick these up for 4.16 shortly. But hope to work
through complete removal of DM's use of BIOSET_NEED_RESCUER for 4.16 as
well.
> > and
> > https://www.redhat.com/archives/dm-devel/2017-August/msg00315.html
This one [1] needs a lot of review and testing. Particularly against this
test case that Mikulas created to reproduce the snapshot deadlock (same
deadlock that motivated commit dbba42d8):
https://www.redhat.com/archives/dm-devel/2017-January/msg00064.html
> > for which the thread continues:
> > https://www.redhat.com/archives/dm-devel/2017-September/msg00001.html
Wish I could clone myself (or Kent, the world needs 2 Kents!) and pursue
this: https://www.redhat.com/archives/dm-devel/2014-May/msg00100.html
Short of that, how would you like to proceed?
> > That would then just leave bcache.... I find it a bit of a challenge to
> > reason about the code in bcache, but if we can remove
> > BIOSET_NEED_RESCUER from dm, that will be an extra incentive for me to learn :-)
>
> I'm all for properly removing BIOSET_NEED_RESCUER from DM.
Should we work to make [1] (above) sure it fixes Mikulas' test case?
I'll set in on reviewing and playing with [1] now.
Thanks,
Mike
WARNING: multiple messages have this Message-ID (diff)
From: Mike Snitzer <snitzer@redhat.com>
To: NeilBrown <neilb@suse.com>
Cc: Jens Axboe <axboe@kernel.dk>,
linux-block@vger.kernel.org,
device-mapper development <dm-devel@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Zdenek Kabelac <zkabelac@redhat.com>
Subject: Re: [PATCH 00/13] block: assorted cleanup for bio splitting and cloning.
Date: Tue, 21 Nov 2017 07:10:50 -0500 [thread overview]
Message-ID: <20171121121049.GA17014@redhat.com> (raw)
In-Reply-To: <20171121013533.GA14520@redhat.com>
On Mon, Nov 20 2017 at 8:35pm -0500,
Mike Snitzer <snitzer@redhat.com> wrote:
> On Mon, Nov 20 2017 at 7:34pm -0500,
> NeilBrown <neilb@suse.com> wrote:
>
> > On Mon, Nov 20 2017, Mike Snitzer wrote:
> >
> > >
> > > But I've now queued this patch for once Linus gets back (reverts DM
> > > changes from commit 47e0fb461f):
> > > https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=for-next&id=c9fdc42ba23eabd1ba7aef199fb9bb4b4fe5c545
> >
> > This patch does two things.
> > 1/ It removes the BIOSET_NEED_RESCUER flag from biosets created by dm.
> > This a functional changed over the code from before my patches.
> > Previously, all biosets were given a rescuer thread.
> > After my patch set, biosets only got a rescuer thread if
> > BIOSET_NEED_RESCUER was passed, and it was passed for all biosets.
> > I then removed it from places were I was certain it wasn't needed.
> > I didn't remove it from dm because I wasn't certain. Your
> > patch does remove the flags, which I think is incorrect - see below.
Yeap, definitely was incorrect. I've dropped the patch.
> > 2/ It changes flush_current_bio_list() so that bios allocated from a
> > bioset that does not have a rescue_workqueue are now added to
> > the ->rescue_list for their bio_set, and ->rescue_work is queued
> > on the NULL ->rescue_workqueue, resulting in a NULL dereference.
> > I suspect you don't want this.
Yes, I see that now.
> > The patch description claims that the patch fixes something, but it
> > isn't clear to me what it is meant to be fixing.
> >
> > It makes reference to dbba42d8 which is described as removing an unused
> > bioset process, though what it actually does is remove an used bioset
> > (and obvious the process disappears with it). My patch doesn't change
> > that behavior.
>
> Well I looked at this because Zdenek reported that with more recent
> kernels he is seeing the "bioset" per DM device again (whereas it was
> thought to be removed with mikulas' commit dbba42d8 -- but that commit
> removed "bioset" only in terms of q->bio_split.
I think Zdenek triggered a false-positive that DM had magically sprouted
a new "bioset" rescue_workqueue. Reality is I cannot see how each
bio-based DM device can avoid having one. And the commit d67a5f4b59
("dm: flush queued bios when process blocks to avoid deadlock") I
referenced earlier very much makes DM depend on it even more.
So apologies for being so off-base (by looking to prematurely revert
DM's use of BIOSET_NEED_RESCUER, etc).
> > Please see
> > https://www.redhat.com/archives/dm-devel/2017-August/msg00310.html
I'll very likely pick these up for 4.16 shortly. But hope to work
through complete removal of DM's use of BIOSET_NEED_RESCUER for 4.16 as
well.
> > and
> > https://www.redhat.com/archives/dm-devel/2017-August/msg00315.html
This one [1] needs a lot of review and testing. Particularly against this
test case that Mikulas created to reproduce the snapshot deadlock (same
deadlock that motivated commit dbba42d8):
https://www.redhat.com/archives/dm-devel/2017-January/msg00064.html
> > for which the thread continues:
> > https://www.redhat.com/archives/dm-devel/2017-September/msg00001.html
Wish I could clone myself (or Kent, the world needs 2 Kents!) and pursue
this: https://www.redhat.com/archives/dm-devel/2014-May/msg00100.html
Short of that, how would you like to proceed?
> > That would then just leave bcache.... I find it a bit of a challenge to
> > reason about the code in bcache, but if we can remove
> > BIOSET_NEED_RESCUER from dm, that will be an extra incentive for me to learn :-)
>
> I'm all for properly removing BIOSET_NEED_RESCUER from DM.
Should we work to make [1] (above) sure it fixes Mikulas' test case?
I'll set in on reviewing and playing with [1] now.
Thanks,
Mike
next prev parent reply other threads:[~2017-11-21 12:10 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-18 4:38 [PATCH 00/13] block: assorted cleanup for bio splitting and cloning NeilBrown
2017-06-18 4:38 ` [PATCH 04/13] blk: use non-rescuing bioset for q->bio_split NeilBrown
2017-06-18 4:38 ` [PATCH 01/13] blk: remove bio_set arg from blk_queue_split() NeilBrown
2017-06-18 4:38 ` [PATCH 03/13] blk: make the bioset rescue_workqueue optional NeilBrown
2017-06-18 4:38 ` [PATCH 02/13] blk: replace bioset_create_nobvec() with a flags arg to bioset_create() NeilBrown
2017-06-18 4:38 ` [PATCH 09/13] lightnvm/pblk-read: use bio_clone_fast() NeilBrown
2017-06-18 4:38 ` [PATCH 06/13] rbd: use bio_clone_fast() instead of bio_clone() NeilBrown
2017-06-18 4:38 ` [PATCH 08/13] pktcdvd: " NeilBrown
2017-06-18 4:38 ` [PATCH 05/13] block: Improvements to bounce-buffer handling NeilBrown
2017-06-18 4:38 ` [PATCH 07/13] drbd: use bio_clone_fast() instead of bio_clone() NeilBrown
2017-06-18 4:38 ` [PATCH 10/13] xen-blkfront: remove bio splitting NeilBrown
2017-06-18 4:38 ` [PATCH 12/13] block: remove bio_clone() and all references NeilBrown
2017-06-18 4:38 ` [PATCH 11/13] bcache: use kmalloc to allocate bio in bch_data_verify() NeilBrown
2017-06-18 4:38 ` [PATCH 13/13] block: don't check for BIO_MAX_PAGES in blk_bio_segment_split() NeilBrown
2017-06-18 18:41 ` [PATCH 00/13] block: assorted cleanup for bio splitting and cloning Jens Axboe
2017-06-18 21:36 ` NeilBrown
2017-11-20 16:43 ` Mike Snitzer
2017-11-21 0:34 ` [dm-devel] " NeilBrown
2017-11-21 0:34 ` NeilBrown
2017-11-21 0:34 ` NeilBrown
2017-11-21 1:35 ` Mike Snitzer
2017-11-21 1:35 ` Mike Snitzer
2017-11-21 12:10 ` Mike Snitzer [this message]
2017-11-21 12:10 ` Mike Snitzer
2017-11-21 12:43 ` Mike Snitzer
2017-11-21 12:43 ` Mike Snitzer
2017-11-21 19:47 ` new patchset to eliminate DM's use of BIOSET_NEED_RESCUER [was: Re: [PATCH 00/13] block: assorted cleanup for bio splitting and cloning.] Mike Snitzer
2017-11-21 21:23 ` [dm-devel] " Mikulas Patocka
2017-11-21 22:51 ` new patchset to eliminate DM's use of BIOSET_NEED_RESCUER Mike Snitzer
2017-11-22 1:21 ` Mikulas Patocka
2017-11-22 2:32 ` Mike Snitzer
2017-11-22 4:00 ` [dm-devel] " NeilBrown
2017-11-22 4:00 ` NeilBrown
2017-11-22 4:00 ` NeilBrown
2017-11-22 4:28 ` Mike Snitzer
2017-11-22 4:28 ` Mike Snitzer
2017-11-22 21:18 ` Mike Snitzer
2017-11-22 18:24 ` [dm-devel] " Mikulas Patocka
2017-11-22 18:49 ` Mike Snitzer
2017-11-23 5:12 ` [dm-devel] " NeilBrown
2017-11-23 5:12 ` NeilBrown
2017-11-23 22:52 ` [PATCH] dm: use cloned bio as head, not remainder, in __split_and_process_bio() NeilBrown
2017-11-23 22:52 ` NeilBrown
2017-11-27 14:23 ` Mike Snitzer
2017-11-28 22:18 ` [dm-devel] " NeilBrown
2017-11-28 22:18 ` NeilBrown
2017-11-21 23:03 ` [dm-devel] new patchset to eliminate DM's use of BIOSET_NEED_RESCUER [was: Re: [PATCH 00/13] block: assorted cleanup for bio splitting and cloning.] NeilBrown
2017-11-21 23:03 ` NeilBrown
2017-11-21 19:44 ` [dm-devel] [PATCH 00/13] block: assorted cleanup for bio splitting and cloning NeilBrown
2017-11-21 19:44 ` NeilBrown
2017-11-21 19:44 ` NeilBrown
2017-11-21 19:50 ` Mike Snitzer
2017-11-21 19:50 ` Mike Snitzer
-- strict thread matches above, loose matches on Subject: below --
2017-05-02 3:42 NeilBrown
2017-05-11 0:58 ` NeilBrown
2017-06-16 5:54 ` NeilBrown
2017-06-16 6:42 ` Christoph Hellwig
2017-06-16 7:30 ` NeilBrown
2017-06-16 7:34 ` Christoph Hellwig
2017-06-16 20:45 ` Jens Axboe
2017-06-18 4:40 ` NeilBrown
2017-06-18 4:40 ` NeilBrown
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=20171121121049.GA17014@redhat.com \
--to=snitzer@redhat.com \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.com \
--cc=zkabelac@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.