Whamcloud - gitweb
LU-1693 obdfilter: Set bi_rw before calling bio_add_page()
authorJohn L. Hammond <jhammond@tacc.utexas.edu>
Tue, 31 Jul 2012 21:51:24 +0000 (16:51 -0500)
committerOleg Drokin <green@whamcloud.com>
Fri, 31 Aug 2012 22:30:00 +0000 (18:30 -0400)
In filter_do_bio() and osd_do_io() set bi_rw before calling
bio_add_page() so that the correct bio direction is used in
mgrge_bvec_fn().

Signed-off-by: John L. Hammond <jhammond@tacc.utexas.edu>
Change-Id: Ife34d5d89337ea7fea41b5844fd724211b05c670
Reviewed-on: http://review.whamcloud.com/3501
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Fan Yong <yong.fan@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/obdfilter/filter_io_26.c
lustre/osd-ldiskfs/osd_io.c

index 3311afb..853e4f5 100644 (file)
@@ -396,6 +396,7 @@ int filter_do_bio(struct obd_export *exp, struct inode *inode,
 
                         bio->bi_bdev = inode->i_sb->s_bdev;
                         bio->bi_sector = sector;
 
                         bio->bi_bdev = inode->i_sb->s_bdev;
                         bio->bi_sector = sector;
+                       bio->bi_rw = (rw == OBD_BRW_READ ? READ : WRITE);
                         bio->bi_end_io = dio_complete_routine;
                         bio->bi_private = iobuf;
 
                         bio->bi_end_io = dio_complete_routine;
                         bio->bi_private = iobuf;
 
index b7ad5a0..4b50e5a 100644 (file)
@@ -351,6 +351,7 @@ static int osd_do_bio(struct osd_device *osd, struct inode *inode,
 
                         bio->bi_bdev = inode->i_sb->s_bdev;
                         bio->bi_sector = sector;
 
                         bio->bi_bdev = inode->i_sb->s_bdev;
                         bio->bi_sector = sector;
+                       bio->bi_rw = (iobuf->dr_rw == 0) ? READ : WRITE;
                         bio->bi_end_io = dio_complete_routine;
                         bio->bi_private = iobuf;
 
                         bio->bi_end_io = dio_complete_routine;
                         bio->bi_private = iobuf;