Because call bio_alloc, the bi_rw is zero by default,but in bio_add_page used the bi_rw. So evalue bi_rw. Signed-off-by: Jianpeng Ma <majianpeng@xxxxxxxxx> --- fs/xfs/xfs_aops.c | 2 ++ fs/xfs/xfs_buf.c | 1 + 2 files changed, 3 insertions(+) diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index 8dad722..f69f4b2 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c @@ -496,6 +496,8 @@ xfs_submit_ioend( if (!bio) { retry: bio = xfs_alloc_ioend_bio(bh); + bio->bi_rw = (wbc->sync_mode == WB_SYNC_ALL + ? WRITE_SYNC : WRITE); } else if (bh->b_blocknr != lastblock + 1) { xfs_submit_ioend_bio(wbc, ioend, bio); goto retry; diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 269b35c..744ec64 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1186,6 +1186,7 @@ next_chunk: bio->bi_sector = sector; bio->bi_end_io = xfs_buf_bio_end_io; bio->bi_private = bp; + bio->bi_rw = rw; for (; size && nr_pages; nr_pages--, map_i++) { -- 1.7.9.5 _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs