dm-io.c:  Get rid of global queues unplug.  [Jens Axboe]
--- diff/drivers/md/dm-io.c	2004-03-15 14:27:17.040544032 +0000
+++ source/drivers/md/dm-io.c	2004-03-15 14:27:32.821145016 +0000
@@ -491,11 +491,14 @@ static void do_region(int rw, unsigned i
 
 static void dispatch_io(int rw, unsigned int num_regions,
 			struct io_region *where, struct dpages *dp,
-			struct io *io)
+			struct io *io, int sync)
 {
 	int i;
 	struct dpages old_pages = *dp;
 
+	if (sync)
+		rw |= BIO_RW_SYNC;
+
 	/*
 	 * For multiple regions we need to be careful to rewind
 	 * the dp object for each call to do_region.
@@ -524,8 +527,7 @@ int sync_io(unsigned int num_regions, st
 	atomic_set(&io.count, 1); /* see dispatch_io() */
 	io.sleeper = current;
 
-	dispatch_io(rw, num_regions, where, dp, &io);
-	blk_run_queues();
+	dispatch_io(rw, num_regions, where, dp, &io, 1);
 
 	while (1) {
 		set_current_state(TASK_UNINTERRUPTIBLE);
@@ -555,7 +557,7 @@ int async_io(unsigned int num_regions, s
 	io->callback = fn;
 	io->context = context;
 
-	dispatch_io(rw, num_regions, where, dp, io);
+	dispatch_io(rw, num_regions, where, dp, io, 0);
 	return 0;
 }
 
