diff -ur --exclude-from /home/axboe/cdrom/exclude /opt/kernel/linux-2.4.3/drivers/block/cciss.c linux/drivers/block/cciss.c --- /opt/kernel/linux-2.4.3/drivers/block/cciss.c Fri Feb 9 20:30:22 2001 +++ linux/drivers/block/cciss.c Fri Apr 6 08:53:12 2001 @@ -1221,10 +1221,9 @@ struct request *creq; u64bit temp64; - if (q->plugged || list_empty(queue_head)) { - start_io(h); - return; - } +next: + if (q->plugged || list_empty(queue_head)) + goto startio; creq = blkdev_entry_next_request(queue_head); if (creq->nr_segments > MAXSGENTRIES) @@ -1236,15 +1235,12 @@ h->ctlr, creq->rq_dev, creq); blkdev_dequeue_request(creq); complete_buffers(creq->bh, 0); - start_io(h); - return; + goto startio; } if (( c = cmd_alloc(h)) == NULL) - { - start_io(h); - return; - } + goto startio; + c->cmd_type = CMD_RWREQ; bh = c->bh = creq->bh; @@ -1328,6 +1324,10 @@ h->Qdepth++; if(h->Qdepth > h->maxQsinceinit) h->maxQsinceinit = h->Qdepth; + + goto next; + +startio: start_io(h); }