lkml.org 
[lkml]   [2004]   [Apr]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    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 14:02    [W:0.021 / U:31.632 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site