--- x/drivers/block/ll_rw_blk.c.~1~	2003-02-14 03:55:54.000000000 +0100
+++ x/drivers/block/ll_rw_blk.c	2003-02-14 03:59:07.000000000 +0100
@@ -1473,9 +1473,7 @@ void ll_rw_block(int rw, int nr, struct 
 	for (i = 0; i < nr; i++) {
 		struct buffer_head *bh = bhs[i];
 
-		/* Only one thread can actually submit the I/O. */
-		if (test_and_set_bit(BH_Lock, &bh->b_state))
-			continue;
+		lock_buffer(bh);
 
 		/* We have the buffer lock */
 		atomic_inc(&bh->b_count);