From: Jens Axboe <jens.axboe@oracle.com>
To: Arjan van de Ven <arjan@infradead.org>
Cc: Mark Lord <liml@rtr.ca>,
IDE/ATA development list <linux-ide@vger.kernel.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
mingo@elte.hu
Subject: Re: 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state
Date: Mon, 30 Oct 2006 16:44:44 +0100 [thread overview]
Message-ID: <20061030154444.GH4563@kernel.dk> (raw)
In-Reply-To: <1162220239.2948.27.camel@laptopd505.fenrus.org>
On Mon, Oct 30 2006, Arjan van de Ven wrote:
>
> > which has always been considered safe, while not very pretty.
>
>
> actually it's different I think (based on a brief inspection of the
> code, I could well be wrong):
> get_request_wait() causes a get_request() call with a GFP_NOIO gfp_mask
> which perculates upto cfq_set_request() as argument.
> cfq_set_request() then calls the inline cfq_get_queue() (which isn't in
> the backtrace due to inlining) which does
> } else if (gfp_mask & __GFP_WAIT) {
> /*
> * Inform the allocator of the fact that we will
> * just repeat this allocation if it fails, to allow
> * the allocator to do whatever it needs to attempt to
> * free memory.
> */
> spin_unlock_irq(cfqd->queue->queue_lock);
>
> which enables interrupts right smack in the middle of holding a whole
> bunch of locks.....
Where do you get 'a bunch' from? If you call get_request() with a
gfp_mask that includes __GFP_WAIT with a spinlock held, it's a bug. Just
as if you had called kmalloc() or similar with __GFP_WAIT set and
holding a lock. cfq even includes a warning check:
might_sleep_if(gfp_mask & __GFP_WAIT);
So there's no bug there, cfq even grabbed the lock on its own before
calling cfq_get_queue().
> so to me it looks like lockdep at least has the appearance of moaning
> about a reasonably fishy situation...
To me it looks more about lockdep complaining because it doesn't grok
the full picture. The question is how to shut it up.
--
Jens Axboe
next prev parent reply other threads:[~2006-10-30 15:44 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-30 14:33 2.6.19-rc3-git7: scsi_device_unbusy: inconsistent lock state Mark Lord
2006-10-30 14:43 ` Jens Axboe
2006-10-30 14:57 ` Arjan van de Ven
2006-10-30 15:44 ` Jens Axboe [this message]
2006-10-30 16:16 ` Arjan van de Ven
2006-10-30 16:26 ` Jens Axboe
2006-10-30 16:31 ` Arjan van de Ven
2006-10-30 17:52 ` Jens Axboe
2006-10-30 17:54 ` Ingo Molnar
2006-10-30 18:03 ` Jens Axboe
2006-10-30 17:54 ` Mark Lord
2006-10-30 18:11 ` Mark Lord
2006-10-30 18:16 ` Jens Axboe
2006-10-30 18:30 ` Mark Lord
2006-10-30 18:35 ` Mark Lord
2006-10-30 18:45 ` Arjan van de Ven
2006-10-30 18:56 ` Jens Axboe
2006-10-30 18:52 ` Jens Axboe
2006-10-30 18:59 ` Mark Lord
2006-10-30 19:04 ` Jens Axboe
2006-10-30 18:20 ` Mark Lord
2006-10-30 17:56 ` Arjan van de Ven
2006-10-30 17:57 ` Ingo Molnar
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=20061030154444.GH4563@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=arjan@infradead.org \
--cc=liml@rtr.ca \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
/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.