lkml.org 
[lkml]   [2004]   [Apr]   [12]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateMon, 12 Apr 2004 01:28:40 -0700
FromAndrew Morton <>
SubjectRe: 2.6.5-mm4
Please do not edit people out of the Cc line.

Paul P Komkoff Jr <i@stingr.net> wrote:
>
> Replying to Andrew Morton:
> > I added a might_sleep() to generic_unplug_device(), because some drivers'
> > unplug functions can sleep.
> > 
> > It appears that either the EVMS or the udm2 patch is calling
> > generic_unplug_device() under a lock.  Probably spin_lock_irq(q->lock).
> 
> can it be thisi (raid1.c):

Yes.  The below locking is not correct.

> static void unplug_slaves(mddev_t *mddev)
> {
>         conf_t *conf = mddev_to_conf(mddev);
>         int i;
>         unsigned long flags;
> 
>         spin_lock_irqsave(&conf->device_lock, flags);
>         for (i=0; i<mddev->raid_disks; i++) {
>                 mdk_rdev_t *rdev = conf->mirrors[i].rdev;
>                 if (rdev && !rdev->faulty) {
>                         request_queue_t *r_queue = bdev_get_queue(rdev->bdev);
> 
>                         if (r_queue->unplug_fn)
>                                 r_queue->unplug_fn(r_queue);
>                 }
>         }
>         spin_unlock_irqrestore(&conf->device_lock, flags);
> }

I do not know which drivers insist on sleeping in their unplug functions,
but apparently they're out there.
-
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:02    [from the cache]
©2003-2008