diff -urpN -X /home/fletch/.diff.exclude 250-lkcd_fixups/drivers/dump/dump_blockdev.c 251-lkcd_fixups2/drivers/dump/dump_blockdev.c --- 250-lkcd_fixups/drivers/dump/dump_blockdev.c Fri May 30 19:24:56 2003 +++ 251-lkcd_fixups2/drivers/dump/dump_blockdev.c Fri May 30 19:26:22 2003 @@ -258,10 +258,19 @@ static int dump_block_silence(struct dump_dev *dev) { struct dump_blockdev *dump_bdev = DUMP_BDEV(dev); + struct request_queue *q = bdev_get_queue(dump_bdev->bdev); + int ret; + + /* If we can't get request queue lock, refuse to take the dump */ + if (!spin_trylock(q->queue_lock)) + return -EBUSY; + + ret = elv_queue_empty(q); + spin_unlock(q->queue_lock); /* For now we assume we have the device to ourselves */ /* Just a quick sanity check */ - if (!blk_queue_empty(bdev_get_queue(dump_bdev->bdev))) { + if (!ret) { /* i/o in flight - safer to quit */ return -EBUSY; }