lkml.org 
[lkml]   [2003]   [Aug]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: IDE locking problem
On Sun, Aug 03 2003, Jens Axboe wrote:
> On Sun, Aug 03 2003, Benjamin Herrenschmidt wrote:
> > Hi Alan & Bart !
> >
> > While fixing my hotswap media-bay IDE controller for 2.6, I found
> > a locking problem with IDE (again ? :) in ide_unregister_hw. Basically
> > the problem is that it calls blk_cleanup_queue(), which is unsafe to
> > call with a lock held (it will call flush_workqueue() at one point).
> > Other side effect, flush_workqueue() will re-enable IRQs, thus allowing
> > us to get an IRQ while holding the spinlock -> double lock, but that's
> > just a side effect of calling flush_workqueue in that context.
>
> Irk someone made blk_cleanup_queue() non-atomic. I blame Andrew. And now
> it looks like it's impossible to make it atomic again :/. Not very nice,
> imo it's preferable to keep such unregister functions atomic.
>
> > So the call to blk_cleanup_queue() shall be moved outside of the
> > spinlock. I don't know much about the BIO details, is it possible
> > to first unregister_blkdev, then only call blk_cleanup_queue() ? That
>
> That should work, yes.
>
> > would help making sure we don't get a request sneaking in ?
>
> Hmm not really, there's still a chance that could happen.

and unregister_blkdev() itself isn't even atomic. So I guess IDE does
need fixing anyways.

--
Jens Axboe

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:47    [from the cache]
©2003-2011 Jasper Spaans