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;
 	}