From: Mike Christie <michaelc@cs.wisc.edu>

DM, MD, rd and loop use blk_alloc_queue and blk_queue_make_request to
initialize their queue, because they only use the make_request_fn.  The
attached patch prevents the queue from being registered if only
blk_alloc_queue was called.



---

 drivers/block/ll_rw_blk.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff -puN drivers/block/ll_rw_blk.c~nr_requests-oops-fix drivers/block/ll_rw_blk.c
--- 25/drivers/block/ll_rw_blk.c~nr_requests-oops-fix	2004-01-07 19:11:09.000000000 -0800
+++ 25-akpm/drivers/block/ll_rw_blk.c	2004-01-07 19:11:09.000000000 -0800
@@ -2903,7 +2903,7 @@ int blk_register_queue(struct gendisk *d
 
 	request_queue_t *q = disk->queue;
 
-	if (!q)
+	if (!q || !q->request_fn)
 		return -ENXIO;
 
 	q->kobj.parent = kobject_get(&disk->kobj);
@@ -2930,7 +2930,7 @@ void blk_unregister_queue(struct gendisk
 {
 	request_queue_t *q = disk->queue;
 
-	if (q) {
+	if (q && q->request_fn) {
 		elv_unregister_queue(q);
 
 		kobject_unregister(&q->kobj);

_