Skip to content

Commit 796a5cf

Browse files
Mike Christieaxboe
authored andcommitted
md: use bio op accessors
Separate the op from the rq_flag_bits and have md set/get the bio using bio_set_op_attrs/bio_op. Signed-off-by: Mike Christie <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Signed-off-by: Jens Axboe <[email protected]>
1 parent bb3cc85 commit 796a5cf

File tree

10 files changed

+88
-84
lines changed

10 files changed

+88
-84
lines changed

drivers/md/bitmap.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ static int read_sb_page(struct mddev *mddev, loff_t offset,
162162

163163
if (sync_page_io(rdev, target,
164164
roundup(size, bdev_logical_block_size(rdev->bdev)),
165-
page, READ, true)) {
165+
page, REQ_OP_READ, 0, true)) {
166166
page->index = index;
167167
return 0;
168168
}

drivers/md/dm-raid.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ static int read_disk_sb(struct md_rdev *rdev, int size)
792792
if (rdev->sb_loaded)
793793
return 0;
794794

795-
if (!sync_page_io(rdev, 0, size, rdev->sb_page, READ, 1)) {
795+
if (!sync_page_io(rdev, 0, size, rdev->sb_page, REQ_OP_READ, 0, 1)) {
796796
DMERR("Failed to read superblock of device at position %d",
797797
rdev->raid_disk);
798798
md_error(rdev->mddev, rdev);
@@ -1651,7 +1651,8 @@ static void attempt_restore_of_faulty_devices(struct raid_set *rs)
16511651
for (i = 0; i < rs->md.raid_disks; i++) {
16521652
r = &rs->dev[i].rdev;
16531653
if (test_bit(Faulty, &r->flags) && r->sb_page &&
1654-
sync_page_io(r, 0, r->sb_size, r->sb_page, READ, 1)) {
1654+
sync_page_io(r, 0, r->sb_size, r->sb_page, REQ_OP_READ, 0,
1655+
1)) {
16551656
DMINFO("Faulty %s device #%d has readable super block."
16561657
" Attempting to revive it.",
16571658
rs->raid_type->name, i);

drivers/md/linear.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ static void linear_make_request(struct mddev *mddev, struct bio *bio)
252252
split->bi_iter.bi_sector = split->bi_iter.bi_sector -
253253
start_sector + data_offset;
254254

255-
if (unlikely((split->bi_rw & REQ_DISCARD) &&
255+
if (unlikely((bio_op(split) == REQ_OP_DISCARD) &&
256256
!blk_queue_discard(bdev_get_queue(split->bi_bdev)))) {
257257
/* Just ignore it */
258258
bio_endio(split);

drivers/md/md.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ static void submit_flushes(struct work_struct *ws)
394394
bi->bi_end_io = md_end_flush;
395395
bi->bi_private = rdev;
396396
bi->bi_bdev = rdev->bdev;
397-
bi->bi_rw = WRITE_FLUSH;
397+
bio_set_op_attrs(bi, REQ_OP_WRITE, WRITE_FLUSH);
398398
atomic_inc(&mddev->flush_pending);
399399
submit_bio(bi);
400400
rcu_read_lock();
@@ -743,7 +743,7 @@ void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
743743
bio_add_page(bio, page, size, 0);
744744
bio->bi_private = rdev;
745745
bio->bi_end_io = super_written;
746-
bio->bi_rw = WRITE_FLUSH_FUA;
746+
bio_set_op_attrs(bio, REQ_OP_WRITE, WRITE_FLUSH_FUA);
747747

748748
atomic_inc(&mddev->pending_writes);
749749
submit_bio(bio);
@@ -756,14 +756,14 @@ void md_super_wait(struct mddev *mddev)
756756
}
757757

758758
int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
759-
struct page *page, int rw, bool metadata_op)
759+
struct page *page, int op, int op_flags, bool metadata_op)
760760
{
761761
struct bio *bio = bio_alloc_mddev(GFP_NOIO, 1, rdev->mddev);
762762
int ret;
763763

764764
bio->bi_bdev = (metadata_op && rdev->meta_bdev) ?
765765
rdev->meta_bdev : rdev->bdev;
766-
bio->bi_rw = rw;
766+
bio_set_op_attrs(bio, op, op_flags);
767767
if (metadata_op)
768768
bio->bi_iter.bi_sector = sector + rdev->sb_start;
769769
else if (rdev->mddev->reshape_position != MaxSector &&
@@ -789,7 +789,7 @@ static int read_disk_sb(struct md_rdev *rdev, int size)
789789
if (rdev->sb_loaded)
790790
return 0;
791791

792-
if (!sync_page_io(rdev, 0, size, rdev->sb_page, READ, true))
792+
if (!sync_page_io(rdev, 0, size, rdev->sb_page, REQ_OP_READ, 0, true))
793793
goto fail;
794794
rdev->sb_loaded = 1;
795795
return 0;
@@ -1475,7 +1475,7 @@ static int super_1_load(struct md_rdev *rdev, struct md_rdev *refdev, int minor_
14751475
return -EINVAL;
14761476
bb_sector = (long long)offset;
14771477
if (!sync_page_io(rdev, bb_sector, sectors << 9,
1478-
rdev->bb_page, READ, true))
1478+
rdev->bb_page, REQ_OP_READ, 0, true))
14791479
return -EIO;
14801480
bbp = (u64 *)page_address(rdev->bb_page);
14811481
rdev->badblocks.shift = sb->bblog_shift;

drivers/md/md.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,8 @@ extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,
618618
sector_t sector, int size, struct page *page);
619619
extern void md_super_wait(struct mddev *mddev);
620620
extern int sync_page_io(struct md_rdev *rdev, sector_t sector, int size,
621-
struct page *page, int rw, bool metadata_op);
621+
struct page *page, int op, int op_flags,
622+
bool metadata_op);
622623
extern void md_do_sync(struct md_thread *thread);
623624
extern void md_new_event(struct mddev *mddev);
624625
extern int md_allow_write(struct mddev *mddev);

drivers/md/raid0.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,7 @@ static void raid0_make_request(struct mddev *mddev, struct bio *bio)
488488
split->bi_iter.bi_sector = sector + zone->dev_start +
489489
tmp_dev->data_offset;
490490

491-
if (unlikely((split->bi_rw & REQ_DISCARD) &&
491+
if (unlikely((bio_op(split) == REQ_OP_DISCARD) &&
492492
!blk_queue_discard(bdev_get_queue(split->bi_bdev)))) {
493493
/* Just ignore it */
494494
bio_endio(split);

drivers/md/raid1.c

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -759,7 +759,7 @@ static void flush_pending_writes(struct r1conf *conf)
759759
while (bio) { /* submit pending writes */
760760
struct bio *next = bio->bi_next;
761761
bio->bi_next = NULL;
762-
if (unlikely((bio->bi_rw & REQ_DISCARD) &&
762+
if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
763763
!blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
764764
/* Just ignore it */
765765
bio_endio(bio);
@@ -1033,7 +1033,7 @@ static void raid1_unplug(struct blk_plug_cb *cb, bool from_schedule)
10331033
while (bio) { /* submit pending writes */
10341034
struct bio *next = bio->bi_next;
10351035
bio->bi_next = NULL;
1036-
if (unlikely((bio->bi_rw & REQ_DISCARD) &&
1036+
if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
10371037
!blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
10381038
/* Just ignore it */
10391039
bio_endio(bio);
@@ -1053,12 +1053,11 @@ static void raid1_make_request(struct mddev *mddev, struct bio * bio)
10531053
int i, disks;
10541054
struct bitmap *bitmap;
10551055
unsigned long flags;
1056+
const int op = bio_op(bio);
10561057
const int rw = bio_data_dir(bio);
10571058
const unsigned long do_sync = (bio->bi_rw & REQ_SYNC);
10581059
const unsigned long do_flush_fua = (bio->bi_rw & (REQ_FLUSH | REQ_FUA));
1059-
const unsigned long do_discard = (bio->bi_rw
1060-
& (REQ_DISCARD | REQ_SECURE));
1061-
const unsigned long do_same = (bio->bi_rw & REQ_WRITE_SAME);
1060+
const unsigned long do_sec = (bio->bi_rw & REQ_SECURE);
10621061
struct md_rdev *blocked_rdev;
10631062
struct blk_plug_cb *cb;
10641063
struct raid1_plug_cb *plug = NULL;
@@ -1166,7 +1165,7 @@ static void raid1_make_request(struct mddev *mddev, struct bio * bio)
11661165
mirror->rdev->data_offset;
11671166
read_bio->bi_bdev = mirror->rdev->bdev;
11681167
read_bio->bi_end_io = raid1_end_read_request;
1169-
read_bio->bi_rw = READ | do_sync;
1168+
bio_set_op_attrs(read_bio, op, do_sync);
11701169
read_bio->bi_private = r1_bio;
11711170

11721171
if (max_sectors < r1_bio->sectors) {
@@ -1376,8 +1375,7 @@ static void raid1_make_request(struct mddev *mddev, struct bio * bio)
13761375
conf->mirrors[i].rdev->data_offset);
13771376
mbio->bi_bdev = conf->mirrors[i].rdev->bdev;
13781377
mbio->bi_end_io = raid1_end_write_request;
1379-
mbio->bi_rw =
1380-
WRITE | do_flush_fua | do_sync | do_discard | do_same;
1378+
bio_set_op_attrs(mbio, op, do_flush_fua | do_sync | do_sec);
13811379
mbio->bi_private = r1_bio;
13821380

13831381
atomic_inc(&r1_bio->remaining);
@@ -1771,7 +1769,7 @@ static void end_sync_write(struct bio *bio)
17711769
static int r1_sync_page_io(struct md_rdev *rdev, sector_t sector,
17721770
int sectors, struct page *page, int rw)
17731771
{
1774-
if (sync_page_io(rdev, sector, sectors << 9, page, rw, false))
1772+
if (sync_page_io(rdev, sector, sectors << 9, page, rw, 0, false))
17751773
/* success */
17761774
return 1;
17771775
if (rw == WRITE) {
@@ -1825,7 +1823,7 @@ static int fix_sync_read_error(struct r1bio *r1_bio)
18251823
rdev = conf->mirrors[d].rdev;
18261824
if (sync_page_io(rdev, sect, s<<9,
18271825
bio->bi_io_vec[idx].bv_page,
1828-
READ, false)) {
1826+
REQ_OP_READ, 0, false)) {
18291827
success = 1;
18301828
break;
18311829
}
@@ -2030,7 +2028,7 @@ static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio)
20302028
!test_bit(MD_RECOVERY_SYNC, &mddev->recovery))))
20312029
continue;
20322030

2033-
wbio->bi_rw = WRITE;
2031+
bio_set_op_attrs(wbio, REQ_OP_WRITE, 0);
20342032
wbio->bi_end_io = end_sync_write;
20352033
atomic_inc(&r1_bio->remaining);
20362034
md_sync_acct(conf->mirrors[i].rdev->bdev, bio_sectors(wbio));
@@ -2090,7 +2088,7 @@ static void fix_read_error(struct r1conf *conf, int read_disk,
20902088
is_badblock(rdev, sect, s,
20912089
&first_bad, &bad_sectors) == 0 &&
20922090
sync_page_io(rdev, sect, s<<9,
2093-
conf->tmppage, READ, false))
2091+
conf->tmppage, REQ_OP_READ, 0, false))
20942092
success = 1;
20952093
else {
20962094
d++;
@@ -2201,7 +2199,7 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
22012199
wbio = bio_clone_mddev(r1_bio->master_bio, GFP_NOIO, mddev);
22022200
}
22032201

2204-
wbio->bi_rw = WRITE;
2202+
bio_set_op_attrs(wbio, REQ_OP_WRITE, 0);
22052203
wbio->bi_iter.bi_sector = r1_bio->sector;
22062204
wbio->bi_iter.bi_size = r1_bio->sectors << 9;
22072205

@@ -2344,7 +2342,7 @@ static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio)
23442342
bio->bi_iter.bi_sector = r1_bio->sector + rdev->data_offset;
23452343
bio->bi_bdev = rdev->bdev;
23462344
bio->bi_end_io = raid1_end_read_request;
2347-
bio->bi_rw = READ | do_sync;
2345+
bio_set_op_attrs(bio, REQ_OP_READ, do_sync);
23482346
bio->bi_private = r1_bio;
23492347
if (max_sectors < r1_bio->sectors) {
23502348
/* Drat - have to split this up more */
@@ -2572,7 +2570,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
25722570
if (i < conf->raid_disks)
25732571
still_degraded = 1;
25742572
} else if (!test_bit(In_sync, &rdev->flags)) {
2575-
bio->bi_rw = WRITE;
2573+
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
25762574
bio->bi_end_io = end_sync_write;
25772575
write_targets ++;
25782576
} else {
@@ -2599,7 +2597,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
25992597
if (disk < 0)
26002598
disk = i;
26012599
}
2602-
bio->bi_rw = READ;
2600+
bio_set_op_attrs(bio, REQ_OP_READ, 0);
26032601
bio->bi_end_io = end_sync_read;
26042602
read_targets++;
26052603
} else if (!test_bit(WriteErrorSeen, &rdev->flags) &&
@@ -2611,7 +2609,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
26112609
* if we are doing resync or repair. Otherwise, leave
26122610
* this device alone for this sync request.
26132611
*/
2614-
bio->bi_rw = WRITE;
2612+
bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
26152613
bio->bi_end_io = end_sync_write;
26162614
write_targets++;
26172615
}

0 commit comments

Comments
 (0)