From: Mike Snitzer <snitzer@redhat.com>
To: Shaohua Li <shli@kernel.org>
Cc: Jeff Moyer <jmoyer@redhat.com>, Jens Axboe <axboe@kernel.dk>,
Tejun Heo <tj@kernel.org>,
device-mapper development <dm-devel@redhat.com>,
Christophe Saout <christophe@saout.de>,
linux-kernel@vger.kernel.org
Subject: Re: Block regression since 3.1-rc3
Date: Sat, 8 Oct 2011 12:14:21 -0400 [thread overview]
Message-ID: <20111008161421.GA5743@redhat.com> (raw)
In-Reply-To: <CANejiEXnXJ7LkyqHyH1S2c4A95Si7v0-gDmRD824r3ROntaDCA@mail.gmail.com>
On Sat, Oct 08 2011 at 7:02am -0400,
Shaohua Li <shli@kernel.org> wrote:
> Looks the dm request based flush logic is broken.
>
> saved_make_request_fn
> __make_request
> blk_insert_flush
> but blk_insert_flush doesn't put the original request to list, instead, the
> q->flush_rq is in list.
> then
> dm_request_fn
> blk_peek_request
> dm_prep_fn
> clone_rq
> map_request
> blk_insert_cloned_request
> so q->flush_rq is cloned, and get dispatched. but we can't clone q->flush_rq
> and use it to do flush. map_request even could assign a different blockdev to
> the cloned request.
You haven't explained why cloning q->flush_rq is broken. What is the
problem with map_request changing the blockdev? For the purposes of
request-based DM the flush machinery has already managed the processing
of the flush at the higher level request_queue.
By the time request-based DM is cloning a flush request it really has no
need to reenter the flush machinery (even though Tejun wants it to --
but in practice it doesn't buy us anything because we never stack
request-based DM at the moment. Instead it showcases how brittle this
path is).
> Clone q->flush_rq is absolutely wrong.
I'm still missing the _why_.
Taking a step back:
Unless others have an immediate ah-ha moment, I'd suggest we revert
commit 4853abaae7e4a2a (block: fix flush machinery for stacking drivers
with differring flush flags). Whereby avoiding unnecessarily reentering
the flush machinery.
If commit ed8b752bccf256 (dm table: set flush capability based on
underlying devices) is in place the flush gets fed directly to
scsi_request_fn, which is fine because the request-based DM's
request_queue's flush_flags reflect the flush capabilities of the
underlying device(s).
We are then covered relative to the only request-based DM use-case
people care about (e.g. dm-multipath, which doesn't use stacked
request-based DM).
We can revisit upholding the purity of the flush machinery for stacked
devices in >= 3.2.
next prev parent reply other threads:[~2011-10-08 16:14 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-30 15:51 Block regression since 3.1-rc3 Christophe Saout
2011-09-30 18:02 ` [dm-devel] " Christophe Saout
2011-10-03 14:43 ` Jeff Moyer
2011-10-04 12:02 ` Christophe Saout
2011-10-04 13:32 ` Jeff Moyer
2011-10-04 15:06 ` Christophe Saout
2011-10-06 19:51 ` Jeff Moyer
2011-10-06 22:02 ` Christophe Saout
2011-10-08 11:02 ` Shaohua Li
2011-10-08 12:05 ` Christophe Saout
2011-10-09 4:26 ` Shaohua Li
2011-11-01 4:54 ` illdred
2011-10-08 16:14 ` Mike Snitzer [this message]
2011-10-09 4:31 ` Shaohua Li
2011-10-09 7:16 ` Shaohua Li
2011-10-09 8:12 ` Christophe Saout
2011-10-09 13:47 ` Christophe Saout
2011-10-10 21:33 ` Tejun Heo
2011-10-11 19:56 ` Mike Snitzer
2011-10-11 20:52 ` Tejun Heo
2011-10-11 22:07 ` Jeff Moyer
2011-10-09 8:08 ` [dm-devel] " Shaohua Li
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=20111008161421.GA5743@redhat.com \
--to=snitzer@redhat.com \
--cc=axboe@kernel.dk \
--cc=christophe@saout.de \
--cc=dm-devel@redhat.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=shli@kernel.org \
--cc=tj@kernel.org \
/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