From: Vivek Goyal <vgoyal@redhat.com>
To: NeilBrown <neilb@suse.de>
Cc: Mike Snitzer <snitzer@redhat.com>,
Jens Axboe <jaxboe@fusionio.com>,
linux-kernel@vger.kernel.org
Subject: Re: blk_throtl_exit taking q->queue_lock is problematic
Date: Fri, 18 Feb 2011 10:04:29 -0500 [thread overview]
Message-ID: <20110218150429.GB26654@redhat.com> (raw)
In-Reply-To: <20110218143325.5738e127@notabene.brown>
On Fri, Feb 18, 2011 at 02:33:25PM +1100, NeilBrown wrote:
> On Thu, 17 Feb 2011 22:19:52 -0500 Mike Snitzer <snitzer@redhat.com> wrote:
>
> > On Thu, Feb 17, 2011 at 9:40 PM, NeilBrown <neilb@suse.de> wrote:
> > > On Thu, 17 Feb 2011 11:59:06 -0500 Vivek Goyal <vgoyal@redhat.com> wrote:
> > >> So if we do this change for performance reasons, it still makes sense
> > >> but doing this change because md provided a q->queue_lock and took away that
> > >> lock without notifying block layer hence we do this change, is still not
> > >> the right reason, IMHO.
> > >
> > > Well...I like that patch, as it makes my life easier....
> > >
> > > But I agree that md is doing something wrong. Now that ->queue_lock is
> > > always initialised, it is wrong to leave it in a state where it not defined.
> > >
> > > So maybe I'll apply this (after testing it a bit. The only reason for taking
> > > the lock queue_lock in a couple of places is to silence some warnings.
> > >
> > > Thanks,
> > > NeilBrown
> > >
> > >
> > > diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
> > > index a23ffa3..909282d 100644
> > > --- a/drivers/md/raid1.c
> > > +++ b/drivers/md/raid1.c
> > > @@ -959,7 +961,9 @@ static int make_request(mddev_t *mddev, struct bio * bio)
> > > atomic_inc(&r1_bio->remaining);
> > > spin_lock_irqsave(&conf->device_lock, flags);
> > > bio_list_add(&conf->pending_bio_list, mbio);
> > > + spin_lock(mddev->queue->queue_lock);
> > > blk_plug_device(mddev->queue);
> > > + spin_unlock(mddev->queue->queue_lock);
> > > spin_unlock_irqrestore(&conf->device_lock, flags);
> > > }
> > > r1_bio_write_done(r1_bio, bio->bi_vcnt, behind_pages, behind_pages != NULL);
> >
> > Noticed an inconsistency, raid10.c's additional locking also protects
> > the bio_list_add() whereas raid1.c's doesn't. Seems the additional
> > protection in raid10 isn't needed?
>
> Correct - not needed at all.
> I put it there because it felt a little cleaner keeping the two 'lock's
> together like the two 'unlock's. Probably confusing though...
I guess you could use blk_plug_device_unlocked() to get rid of ugliness
and this routine will take care of taking queue lock.
Thanks
Vivek
next prev parent reply other threads:[~2011-02-18 15:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-16 7:31 blk_throtl_exit taking q->queue_lock is problematic NeilBrown
2011-02-16 15:53 ` Vivek Goyal
2011-02-17 0:35 ` NeilBrown
2011-02-17 1:10 ` Vivek Goyal
2011-02-17 5:55 ` NeilBrown
2011-02-17 15:01 ` Vivek Goyal
2011-02-17 16:59 ` Vivek Goyal
2011-02-18 2:40 ` NeilBrown
2011-02-18 3:19 ` Mike Snitzer
2011-02-18 3:33 ` NeilBrown
2011-02-18 14:04 ` Mike Snitzer
2011-02-18 15:04 ` Vivek Goyal [this message]
2011-02-21 7:24 ` NeilBrown
2011-02-21 14:42 ` Vivek Goyal
2011-02-18 15:05 ` Vivek Goyal
2011-02-17 20:00 ` Vivek Goyal
2011-02-18 1:57 ` 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=20110218150429.GB26654@redhat.com \
--to=vgoyal@redhat.com \
--cc=jaxboe@fusionio.com \
--cc=linux-kernel@vger.kernel.org \
--cc=neilb@suse.de \
--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.