It's a bitshift, not a bitmask. --- 25-akpm/include/linux/bio.h | 1 + 25-akpm/include/linux/fs.h | 4 ++-- 25-akpm/kernel/power/pmdisk.c | 2 +- drivers/md/md.c | 0 4 files changed, 4 insertions(+), 3 deletions(-) diff -puN drivers/md/md.c~per-backing_dev-unplugging-BIO_RW_SYNC-fix drivers/md/md.c diff -puN include/linux/bio.h~per-backing_dev-unplugging-BIO_RW_SYNC-fix include/linux/bio.h --- 25/include/linux/bio.h~per-backing_dev-unplugging-BIO_RW_SYNC-fix Mon Mar 15 13:13:06 2004 +++ 25-akpm/include/linux/bio.h Mon Mar 15 13:14:40 2004 @@ -119,6 +119,7 @@ struct bio { * bit 1 -- rw-ahead when set * bit 2 -- barrier * bit 3 -- fail fast, don't want low level driver retries + * bit 4 -- synchronous I/O hint: the block layer will unplug immediately */ #define BIO_RW 0 #define BIO_RW_AHEAD 1 diff -puN include/linux/fs.h~per-backing_dev-unplugging-BIO_RW_SYNC-fix include/linux/fs.h --- 25/include/linux/fs.h~per-backing_dev-unplugging-BIO_RW_SYNC-fix Mon Mar 15 13:13:06 2004 +++ 25-akpm/include/linux/fs.h Mon Mar 15 13:15:11 2004 @@ -83,8 +83,8 @@ extern int leases_enable, dir_notify_ena #define WRITE 1 #define READA 2 /* read-ahead - don't block if no resources */ #define SPECIAL 4 /* For non-blockdevice requests in request queue */ -#define READ_SYNC (READ | BIO_RW_SYNC) -#define WRITE_SYNC (WRITE | BIO_RW_SYNC) +#define READ_SYNC (READ | (1 << BIO_RW_SYNC)) +#define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC)) #define SEL_IN 1 #define SEL_OUT 2 diff -puN kernel/power/pmdisk.c~per-backing_dev-unplugging-BIO_RW_SYNC-fix kernel/power/pmdisk.c --- 25/kernel/power/pmdisk.c~per-backing_dev-unplugging-BIO_RW_SYNC-fix Mon Mar 15 13:13:06 2004 +++ 25-akpm/kernel/power/pmdisk.c Mon Mar 15 13:15:33 2004 @@ -897,7 +897,7 @@ static int submit(int rw, pgoff_t page_o if (rw == WRITE) bio_set_pages_dirty(bio); start_io(); - submit_bio(rw|BIO_RW_SYNC,bio); + submit_bio(rw | (1 << BIO_RW_SYNC), bio); wait_io(); Done: bio_put(bio); _