+Set the underlying block device "read only" and silently discard writes
+to the device at the block layer. This allows the block device queue
+to drain quickly for controlled failback of the device.
+
+At one time it was required to avoid crashes in the JBD layer during
+failover, but it may also be possible to just allow the inflight IO to
+complete and have Lustre handle this more gracefully.
+
diff -urp linux-2.6.18.1.orig/block/ll_rw_blk.c linux-2.6.18.1/block/ll_rw_blk.c
--- linux-2.6.18.1.orig/block/ll_rw_blk.c 2006-10-14 06:34:03.000000000 +0300
+++ linux-2.6.18.1/block/ll_rw_blk.c 2007-05-29 14:50:46.000000000 +0300
-Index: linux-2.6/fs/open.c
-===================================================================
---- linux-2.6.orig/fs/open.c 2006-07-15 16:10:37.000000000 +0800
-+++ linux-2.6/fs/open.c 2006-07-15 16:22:04.000000000 +0800
-@@ -808,7 +808,6 @@ asmlinkage long sys_lchown(const char __
- return error;
- }
-
--
- asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group)
- {
- struct file * file;
+Allow starting the commit of a journal transaction, without waiting for
+it to complete. This is a performance enhancement for OST IO so that
+the journal commit can run concurrently with the file IO. It isn't
+necessary if the client can handle bulk IO recovery (bug 16919).
+
Index: linux-2.6/fs/jbd/journal.c
===================================================================
--- linux-2.6.orig/fs/jbd/journal.c 2006-07-15 16:13:50.000000000 +0800
+Export the show_task() function in order to get better process stacks.
+It will also print the current process stack, which is useful.
+
+This is a nice-to-have but not required for Lustre to work.
+
Index: linux-2.6/kernel/sched.c
===================================================================
--- linux-2.6.orig/kernel/sched.c 2006-07-15 11:51:46.000000000 +0800