[PATCH 1/2 block#for-2.6.36] bio, fs: update RWA_MASK, READA andSWRITE to match the corresponding BIO_RW_* bits

From: Tejun Heo
Date: Tue Aug 03 2010 - 05:53:50 EST

Commit a82afdf (block: use the same failfast bits for bio and request)
moved BIO_RW_* bits around such that they match up with REQ_* bits.
Unfortunately, fs.h hard coded RW_MASK, RWA_MASK, READ, WRITE, READA
and SWRITE as 0, 1, 2 and 3, and expected them to match with BIO_RW_*
bits. READ/WRITE didn't change but BIO_RW_AHEAD was moved to bit 4
instead of bit 1, breaking RWA_MASK, READA and SWRITE.

This patch updates RWA_MASK, READA and SWRITE such that they match the
BIO_RW_* bits again. A follow up patch will update the definitions to
directly use BIO_RW_* bits so that this kind of breakage won't happen

Neil also spotted missing RWA_MASK conversion.

Stable: The offending commit a82afdf was released with v2.6.32, so
this patch should be applied to all kernels since then but it must
_NOT_ be applied to kernels earlier than that.

Signed-off-by: Tejun Heo <tj@xxxxxxxxxx>
Reported-and-bisected-by: Vladislav Bolkhovitin <vst@xxxxxxxx>
Root-caused-by: Neil Brown <neilb@xxxxxxx>
Cc: Jens Axobe <axboe@xxxxxxxxx>
Cc: stable@xxxxxxxxxx
Here's the regenerated version also w/ the missing RWA_MASK conversion
Neil spotted.


include/linux/fs.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

Index: work/include/linux/fs.h
--- work.orig/include/linux/fs.h
+++ work/include/linux/fs.h
@@ -145,12 +145,12 @@ struct inodes_stat_t {
#define RW_MASK 1
-#define RWA_MASK 2
+#define RWA_MASK 16

#define READ 0
#define WRITE 1
-#define READA 2 /* readahead - don't block if no resources */
-#define SWRITE 3 /* for ll_rw_block() - wait for buffer lock */
+#define READA 16 /* readahead - don't block if no resources */
+#define SWRITE 17 /* for ll_rw_block(), wait for buffer lock */

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/