diff options
author | Mike Christie <mchristi@redhat.com> | 2016-06-05 15:31:56 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2016-06-07 15:41:38 -0400 |
commit | e1b1afa6f80172f8b5e9a629cbd16392ac66645e (patch) | |
tree | 145dc97c00a92b1867decacd612be9036e8fe00f | |
parent | 04d328defd06257bf386d58f359013e0ef329226 (diff) |
gfs2: use bio op accessors
Separate the op from the rq_flag_bits and have gfs2
set/get the bio using bio_set_op_attrs/bio_op.
Signed-off-by: Mike Christie <mchristi@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
-rw-r--r-- | fs/gfs2/log.c | 8 | ||||
-rw-r--r-- | fs/gfs2/lops.c | 11 | ||||
-rw-r--r-- | fs/gfs2/lops.h | 2 | ||||
-rw-r--r-- | fs/gfs2/meta_io.c | 7 | ||||
-rw-r--r-- | fs/gfs2/ops_fstype.c | 2 |
5 files changed, 16 insertions, 14 deletions
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c index 0ff028c15199..e58ccef09c91 100644 --- a/fs/gfs2/log.c +++ b/fs/gfs2/log.c | |||
@@ -657,7 +657,7 @@ static void log_write_header(struct gfs2_sbd *sdp, u32 flags) | |||
657 | struct gfs2_log_header *lh; | 657 | struct gfs2_log_header *lh; |
658 | unsigned int tail; | 658 | unsigned int tail; |
659 | u32 hash; | 659 | u32 hash; |
660 | int rw = WRITE_FLUSH_FUA | REQ_META; | 660 | int op_flags = WRITE_FLUSH_FUA | REQ_META; |
661 | struct page *page = mempool_alloc(gfs2_page_pool, GFP_NOIO); | 661 | struct page *page = mempool_alloc(gfs2_page_pool, GFP_NOIO); |
662 | enum gfs2_freeze_state state = atomic_read(&sdp->sd_freeze_state); | 662 | enum gfs2_freeze_state state = atomic_read(&sdp->sd_freeze_state); |
663 | lh = page_address(page); | 663 | lh = page_address(page); |
@@ -682,12 +682,12 @@ static void log_write_header(struct gfs2_sbd *sdp, u32 flags) | |||
682 | if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags)) { | 682 | if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags)) { |
683 | gfs2_ordered_wait(sdp); | 683 | gfs2_ordered_wait(sdp); |
684 | log_flush_wait(sdp); | 684 | log_flush_wait(sdp); |
685 | rw = WRITE_SYNC | REQ_META | REQ_PRIO; | 685 | op_flags = WRITE_SYNC | REQ_META | REQ_PRIO; |
686 | } | 686 | } |
687 | 687 | ||
688 | sdp->sd_log_idle = (tail == sdp->sd_log_flush_head); | 688 | sdp->sd_log_idle = (tail == sdp->sd_log_flush_head); |
689 | gfs2_log_write_page(sdp, page); | 689 | gfs2_log_write_page(sdp, page); |
690 | gfs2_log_flush_bio(sdp, rw); | 690 | gfs2_log_flush_bio(sdp, REQ_OP_WRITE, op_flags); |
691 | log_flush_wait(sdp); | 691 | log_flush_wait(sdp); |
692 | 692 | ||
693 | if (sdp->sd_log_tail != tail) | 693 | if (sdp->sd_log_tail != tail) |
@@ -738,7 +738,7 @@ void gfs2_log_flush(struct gfs2_sbd *sdp, struct gfs2_glock *gl, | |||
738 | 738 | ||
739 | gfs2_ordered_write(sdp); | 739 | gfs2_ordered_write(sdp); |
740 | lops_before_commit(sdp, tr); | 740 | lops_before_commit(sdp, tr); |
741 | gfs2_log_flush_bio(sdp, WRITE); | 741 | gfs2_log_flush_bio(sdp, REQ_OP_WRITE, 0); |
742 | 742 | ||
743 | if (sdp->sd_log_head != sdp->sd_log_flush_head) { | 743 | if (sdp->sd_log_head != sdp->sd_log_flush_head) { |
744 | log_flush_wait(sdp); | 744 | log_flush_wait(sdp); |
diff --git a/fs/gfs2/lops.c b/fs/gfs2/lops.c index ce282423a853..58d1c98b9d8b 100644 --- a/fs/gfs2/lops.c +++ b/fs/gfs2/lops.c | |||
@@ -230,17 +230,18 @@ static void gfs2_end_log_write(struct bio *bio) | |||
230 | /** | 230 | /** |
231 | * gfs2_log_flush_bio - Submit any pending log bio | 231 | * gfs2_log_flush_bio - Submit any pending log bio |
232 | * @sdp: The superblock | 232 | * @sdp: The superblock |
233 | * @rw: The rw flags | 233 | * @op: REQ_OP |
234 | * @op_flags: rq_flag_bits | ||
234 | * | 235 | * |
235 | * Submit any pending part-built or full bio to the block device. If | 236 | * Submit any pending part-built or full bio to the block device. If |
236 | * there is no pending bio, then this is a no-op. | 237 | * there is no pending bio, then this is a no-op. |
237 | */ | 238 | */ |
238 | 239 | ||
239 | void gfs2_log_flush_bio(struct gfs2_sbd *sdp, int rw) | 240 | void gfs2_log_flush_bio(struct gfs2_sbd *sdp, int op, int op_flags) |
240 | { | 241 | { |
241 | if (sdp->sd_log_bio) { | 242 | if (sdp->sd_log_bio) { |
242 | atomic_inc(&sdp->sd_log_in_flight); | 243 | atomic_inc(&sdp->sd_log_in_flight); |
243 | sdp->sd_log_bio->bi_rw = rw; | 244 | bio_set_op_attrs(sdp->sd_log_bio, op, op_flags); |
244 | submit_bio(sdp->sd_log_bio); | 245 | submit_bio(sdp->sd_log_bio); |
245 | sdp->sd_log_bio = NULL; | 246 | sdp->sd_log_bio = NULL; |
246 | } | 247 | } |
@@ -300,7 +301,7 @@ static struct bio *gfs2_log_get_bio(struct gfs2_sbd *sdp, u64 blkno) | |||
300 | nblk >>= sdp->sd_fsb2bb_shift; | 301 | nblk >>= sdp->sd_fsb2bb_shift; |
301 | if (blkno == nblk) | 302 | if (blkno == nblk) |
302 | return bio; | 303 | return bio; |
303 | gfs2_log_flush_bio(sdp, WRITE); | 304 | gfs2_log_flush_bio(sdp, REQ_OP_WRITE, 0); |
304 | } | 305 | } |
305 | 306 | ||
306 | return gfs2_log_alloc_bio(sdp, blkno); | 307 | return gfs2_log_alloc_bio(sdp, blkno); |
@@ -329,7 +330,7 @@ static void gfs2_log_write(struct gfs2_sbd *sdp, struct page *page, | |||
329 | bio = gfs2_log_get_bio(sdp, blkno); | 330 | bio = gfs2_log_get_bio(sdp, blkno); |
330 | ret = bio_add_page(bio, page, size, offset); | 331 | ret = bio_add_page(bio, page, size, offset); |
331 | if (ret == 0) { | 332 | if (ret == 0) { |
332 | gfs2_log_flush_bio(sdp, WRITE); | 333 | gfs2_log_flush_bio(sdp, REQ_OP_WRITE, 0); |
333 | bio = gfs2_log_alloc_bio(sdp, blkno); | 334 | bio = gfs2_log_alloc_bio(sdp, blkno); |
334 | ret = bio_add_page(bio, page, size, offset); | 335 | ret = bio_add_page(bio, page, size, offset); |
335 | WARN_ON(ret == 0); | 336 | WARN_ON(ret == 0); |
diff --git a/fs/gfs2/lops.h b/fs/gfs2/lops.h index a65a7ba32ffd..e529f536c117 100644 --- a/fs/gfs2/lops.h +++ b/fs/gfs2/lops.h | |||
@@ -27,7 +27,7 @@ extern const struct gfs2_log_operations gfs2_databuf_lops; | |||
27 | 27 | ||
28 | extern const struct gfs2_log_operations *gfs2_log_ops[]; | 28 | extern const struct gfs2_log_operations *gfs2_log_ops[]; |
29 | extern void gfs2_log_write_page(struct gfs2_sbd *sdp, struct page *page); | 29 | extern void gfs2_log_write_page(struct gfs2_sbd *sdp, struct page *page); |
30 | extern void gfs2_log_flush_bio(struct gfs2_sbd *sdp, int rw); | 30 | extern void gfs2_log_flush_bio(struct gfs2_sbd *sdp, int op, int op_flags); |
31 | extern void gfs2_pin(struct gfs2_sbd *sdp, struct buffer_head *bh); | 31 | extern void gfs2_pin(struct gfs2_sbd *sdp, struct buffer_head *bh); |
32 | 32 | ||
33 | static inline unsigned int buf_limit(struct gfs2_sbd *sdp) | 33 | static inline unsigned int buf_limit(struct gfs2_sbd *sdp) |
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c index b718447f7eb6..052c1132e5b6 100644 --- a/fs/gfs2/meta_io.c +++ b/fs/gfs2/meta_io.c | |||
@@ -213,7 +213,8 @@ static void gfs2_meta_read_endio(struct bio *bio) | |||
213 | * Submit several consecutive buffer head I/O requests as a single bio I/O | 213 | * Submit several consecutive buffer head I/O requests as a single bio I/O |
214 | * request. (See submit_bh_wbc.) | 214 | * request. (See submit_bh_wbc.) |
215 | */ | 215 | */ |
216 | static void gfs2_submit_bhs(int rw, struct buffer_head *bhs[], int num) | 216 | static void gfs2_submit_bhs(int op, int op_flags, struct buffer_head *bhs[], |
217 | int num) | ||
217 | { | 218 | { |
218 | struct buffer_head *bh = bhs[0]; | 219 | struct buffer_head *bh = bhs[0]; |
219 | struct bio *bio; | 220 | struct bio *bio; |
@@ -230,7 +231,7 @@ static void gfs2_submit_bhs(int rw, struct buffer_head *bhs[], int num) | |||
230 | bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh)); | 231 | bio_add_page(bio, bh->b_page, bh->b_size, bh_offset(bh)); |
231 | } | 232 | } |
232 | bio->bi_end_io = gfs2_meta_read_endio; | 233 | bio->bi_end_io = gfs2_meta_read_endio; |
233 | bio->bi_rw = rw; | 234 | bio_set_op_attrs(bio, op, op_flags); |
234 | submit_bio(bio); | 235 | submit_bio(bio); |
235 | } | 236 | } |
236 | 237 | ||
@@ -281,7 +282,7 @@ int gfs2_meta_read(struct gfs2_glock *gl, u64 blkno, int flags, | |||
281 | } | 282 | } |
282 | } | 283 | } |
283 | 284 | ||
284 | gfs2_submit_bhs(READ_SYNC | REQ_META | REQ_PRIO, bhs, num); | 285 | gfs2_submit_bhs(REQ_OP_READ, READ_SYNC | REQ_META | REQ_PRIO, bhs, num); |
285 | if (!(flags & DIO_WAIT)) | 286 | if (!(flags & DIO_WAIT)) |
286 | return 0; | 287 | return 0; |
287 | 288 | ||
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index d9e19f61077b..f423c687f02c 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -246,7 +246,7 @@ static int gfs2_read_super(struct gfs2_sbd *sdp, sector_t sector, int silent) | |||
246 | 246 | ||
247 | bio->bi_end_io = end_bio_io_page; | 247 | bio->bi_end_io = end_bio_io_page; |
248 | bio->bi_private = page; | 248 | bio->bi_private = page; |
249 | bio->bi_rw = READ_SYNC | REQ_META; | 249 | bio_set_op_attrs(bio, REQ_OP_READ, READ_SYNC | REQ_META); |
250 | submit_bio(bio); | 250 | submit_bio(bio); |
251 | wait_on_page_locked(page); | 251 | wait_on_page_locked(page); |
252 | bio_put(bio); | 252 | bio_put(bio); |