All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Mike Snitzer <snitzer@redhat.com>
Cc: Shaohua Li <shli@kernel.org>, Jeff Moyer <jmoyer@redhat.com>,
	Jens Axboe <axboe@kernel.dk>,
	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: Tue, 11 Oct 2011 13:52:51 -0700	[thread overview]
Message-ID: <20111011205251.GA6281@google.com> (raw)
In-Reply-To: <20111011195611.GA26277@redhat.com>

Hello, Mike.

On Tue, Oct 11, 2011 at 03:56:12PM -0400, Mike Snitzer wrote:
> > I don't object to the immediate fix but think that adding such special
> > case is gonna make the thing even more brittle and make future changes
> > even more difficult.  Those one off cases tend to cause pretty severe
> > headache when someone wants to evolve common code, so let's please
> > find out what went wrong and fix it properly so that everyone follows
> > the same set of rules.
> 
> Are you referring to Jeff's fix as "the immediate fix"?  Christophe
> seems to have had success with it after all.

I meant reverting the previous commit.  Oops... it seems like I
misread Jeff's patch.  Please read on.

> As for the special case that you're suggesting makes the code more
> brittle, etc.  If you could be more specific that'd be awesome.

I was still talking about the previous attempt of making dm treated
special by flush machinery.  (the purity thing someone was talking
about)

> Jeff asked a question about the need to kick the queue in this case (as
> he didn't feel he had a proper justification for why it was needed).
> 
> If we can get a proper patch header together to justify Jeff's patch
> that'd be great.  And then revisit any of the special casing you'd like
> us to avoid in >= 3.2?
> 
> (we're obviously _very_ short on time for a 3.1 fix right now).
...
> > Hmmm... another rather nasty assumption the current flush code makes
> > is that every flush request has either zero or single bio attached to
> > it.  The assumption has always been there for quite some time now.
> 
> OK.
> 
> > That somehow seems broken by request based dm (either that or wrong
> > request is taking INSERT_FLUSH path).
> 
> Where was this issue of a flush having multiple bios reported?

I was misreading Jeff's patch, so the problem is request w/o bio
reaching INSERT_FLUSH, not rq's with multiple bio's.  Sorry about
that.  Having another look...

Ah, okay, so, blk-flush on the lower layer device is seeing
q->flush_rq of the upper layer which doesn't have bio.  Yes, the
BUG_ON() change looks correct to me.  That or we can do

  BUG_ON(rq->bio != rq->bio_tail); /* assumes zero or single bio rq */

As for the blk_run_queue_async(), it's a bit confusing.  Currently,
the block layer isn't clear about who's responsible kicking the queue
after putting a request onto elevator and I suppose Jeff put it there
because blk_insert_cloned_request() doesn't kick the queue.

Hmm... Jeff, you also added blk_run_queue_async() call in
4853abaae7e4a too.  Is there a reason why blk_insert_cloned_request()
isn't calling __blk_run_queue() or async variant of it like
blk_insert_request() does?

At any rate, the queue kicking is a different issue.  Let's not mix
the two here.  The BUG_ON() change looks good to me.

Thank you.

-- 
tejun

  reply	other threads:[~2011-10-11 20:52 UTC|newest]

Thread overview: 25+ 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 15:51 ` 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-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  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 [this message]
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=20111011205251.GA6281@google.com \
    --to=tj@kernel.org \
    --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=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 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.