patch-1.3.85 linux/drivers/block/ll_rw_blk.c

Next file: linux/drivers/char/Makefile
Previous file: linux/drivers/block/ide.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v1.3.84/linux/drivers/block/ll_rw_blk.c linux/drivers/block/ll_rw_blk.c
@@ -28,6 +28,12 @@
 static struct request all_requests[NR_REQUEST];
 
 /*
+ * The "disk" task queue is used to start the actual requests
+ * after a plug
+ */
+DECLARE_TASK_QUEUE(tq_disk);
+
+/*
  * used to wait on when there are no free requests
  */
 struct wait_queue * wait_for_request = NULL;
@@ -101,7 +107,7 @@
 static inline void plug_device(struct blk_dev_struct * dev)
 {
 	dev->current_request = &dev->plug;
-	queue_task_irq_off(&dev->plug_tq, &tq_scheduler);
+	queue_task_irq_off(&dev->plug_tq, &tq_disk);
 }
 
 /*
@@ -152,6 +158,7 @@
 		sti();
 		if (req)
 			break;
+		run_task_queue(&tq_disk);
 		schedule();
 	}
 	remove_wait_queue(&wait_for_request, &wait);
@@ -593,6 +600,7 @@
 			req[j]->next = NULL;
 			add_request(major+blk_dev,req[j]);
 		}
+		run_task_queue(&tq_disk);
 		while (j > 0) {
 			j--;
 			down(&sem);

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov with Sam's (original) version
of this