All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jens Axboe <jens.axboe@oracle.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Neil Brown <neilb@suse.de>, Arthur Jones <ajones@riverbed.com>,
	Dan Williams <dan.j.williams@intel.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-raid@vger.kernel.org, "Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: [PULL REQUEST] md bug fixes and minor improvements
Date: Fri, 1 Aug 2008 19:22:33 +0200	[thread overview]
Message-ID: <20080801172231.GF20055@kernel.dk> (raw)
In-Reply-To: <alpine.LFD.1.10.0808011007240.3277@nehalem.linux-foundation.org>

On Fri, Aug 01 2008, Linus Torvalds wrote:
> 
> 
> On Fri, 1 Aug 2008, Neil Brown wrote:
> > 
> > Hi Linus,
> >  please pull the following bugfixes for drivers/md.
> 
> Hmm. This doesn't seem to include any fix for the reported unlocked 
> blk_plug() from MD?
> 
> See the emails from Rafael on the kernel mailing list for details 
> (WARNING: at /home/rafael/src/linux-next/include/linux/blkdev.h:447), but 
> it boils down to
> 
> 	WARNING: at /home/rafael/src/linux-2.6/include/linux/blkdev.h:447 blk_plug_device+0x9b/0xb0()
> 	Pid: 2268, comm: kjournald Not tainted 2.6.27-rc1-git #211
> 
> 	Call Trace:
> 	 [<ffffffff8023af5f>] warn_on_slowpath+0x5f/0x80
> 	 [<ffffffff8034fc7b>] blk_plug_device+0x9b/0xb0
> 	 [<ffffffff8044d5bf>] bitmap_startwrite+0xbf/0x1b0
> 
> where it really looks like "bitmap_startwrite()" just calls 
> blk_plug_device() without holding the queue lock. The rule for that 
> function is documented to be:
> 
>  * This is called with interrupts off and no requests on the queue and
>  * with the queue lock held.
> 
> Hmm?
> 
> Now, admittedly, the blk interfaces here are a bit inconsistent: I think 
> blk_unplug() is supposed to be called _without_ the lock, so it's a bit 
> odd that blk_plug_device() is supposed to b called with it held, but 
> somebody should double-check me on that one.

It is a bit asymmetrical, largely due to the fact that the ->unplug_fn()
itself grabs the lock. The below patch should fix it, since Neil has
added a proper queue lock to the md queues. If someone can confirm that
this fixes it, I'll queue up a patch with proper descriptions.

> I guess Jens is gone too..

I'm back, just been busy this week :-)

diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index 621a272..f19b52f 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -1234,7 +1234,9 @@ int bitmap_startwrite(struct bitmap *bitmap, sector_t offset, unsigned long sect
 		case 0:
 			bitmap_file_set_bit(bitmap, offset);
 			bitmap_count_page(bitmap,offset, 1);
+			spin_lock_irq(&bitmap->mddev->queue->queue_lock);
 			blk_plug_device(bitmap->mddev->queue);
+			spin_unlock_irq(&bitmap->mddev->queue->queue_lock);
 			/* fall through */
 		case 1:
 			*bmc = 2;

-- 
Jens Axboe

  reply	other threads:[~2008-08-01 17:22 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-01  3:02 [PULL REQUEST] md bug fixes and minor improvements Neil Brown
2008-08-01  3:02 ` Neil Brown
2008-08-01 17:16 ` Linus Torvalds
2008-08-01 17:22   ` Jens Axboe [this message]
2008-08-01 17:34     ` Dan Williams
2008-08-01 17:40       ` Jens Axboe
2008-08-01 18:22         ` Dan Williams
2008-08-01 18:29           ` Jens Axboe
2008-08-01 18:18     ` Linus Torvalds
2008-08-01 18:22       ` Jens Axboe

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=20080801172231.GF20055@kernel.dk \
    --to=jens.axboe@oracle.com \
    --cc=ajones@riverbed.com \
    --cc=dan.j.williams@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-raid@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.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 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.