From: Christophe Saout <christophe@saout.de>
To: Shaohua Li <shli@kernel.org>
Cc: Mike Snitzer <snitzer@redhat.com>, Jeff Moyer <jmoyer@redhat.com>,
Jens Axboe <axboe@kernel.dk>, Tejun Heo <tj@kernel.org>,
device-mapper development <dm-devel@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: Block regression since 3.1-rc3
Date: Sun, 09 Oct 2011 10:12:03 +0200 [thread overview]
Message-ID: <1318147923.22902.3.camel@localhost> (raw)
In-Reply-To: <CANejiEV+Joc7qvWr1DF4cOR61GKy8MLX4TT4oWh7pxMkhb74Qg@mail.gmail.com>
Hi Shaohua,
> >>> 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.
> > hmm, looks I overlook the issue. cloned flush_rq has some problems but can
> > be fixed.
> > 1. it doesn't set requet->bio, request->bio_tail
> > 2. REQ_CLONE_MASK should set REQ_FLUSH_SEQ
> oh, don't need set REQ_FLUSH_SEQ, the low level queue will set it
> anyway. sorry for
> the noise. Jeff's patch looks ok then.
Just for the record: I tried your latest patch and it indeed makes the
crasher go away. However, things are getting horribly slow (hangs for
like 20 seconds when writing), at least for GFS2. This is probably
because the queue isn't kicked, like you stated in your most recent
comment, I guess.
Also for the record: Jeff's patch causes other crashes on my machine
(already posted), so while it might be fine from a technical point of
view, it still has issues in its current form. Jeff is working on it.
Thanks,
Christophe
next prev parent reply other threads:[~2011-10-09 8:12 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
2011-10-09 4:31 ` Shaohua Li
2011-10-09 7:16 ` Shaohua Li
2011-10-09 8:12 ` Christophe Saout [this message]
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=1318147923.22902.3.camel@localhost \
--to=christophe@saout.de \
--cc=axboe@kernel.dk \
--cc=dm-devel@redhat.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=shli@kernel.org \
--cc=snitzer@redhat.com \
--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