Skip to content

Commit 4f024f3

Browse files
author
Kent Overstreet
committed
block: Abstract out bvec iterator
Immutable biovecs are going to require an explicit iterator. To implement immutable bvecs, a later patch is going to add a bi_bvec_done member to this struct; for now, this patch effectively just renames things. Signed-off-by: Kent Overstreet <[email protected]> Cc: Jens Axboe <[email protected]> Cc: Geert Uytterhoeven <[email protected]> Cc: Benjamin Herrenschmidt <[email protected]> Cc: Paul Mackerras <[email protected]> Cc: "Ed L. Cashin" <[email protected]> Cc: Nick Piggin <[email protected]> Cc: Lars Ellenberg <[email protected]> Cc: Jiri Kosina <[email protected]> Cc: Matthew Wilcox <[email protected]> Cc: Geoff Levand <[email protected]> Cc: Yehuda Sadeh <[email protected]> Cc: Sage Weil <[email protected]> Cc: Alex Elder <[email protected]> Cc: [email protected] Cc: Joshua Morris <[email protected]> Cc: Philip Kelleher <[email protected]> Cc: Rusty Russell <[email protected]> Cc: "Michael S. Tsirkin" <[email protected]> Cc: Konrad Rzeszutek Wilk <[email protected]> Cc: Jeremy Fitzhardinge <[email protected]> Cc: Neil Brown <[email protected]> Cc: Alasdair Kergon <[email protected]> Cc: Mike Snitzer <[email protected]> Cc: [email protected] Cc: Martin Schwidefsky <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: [email protected] Cc: Boaz Harrosh <[email protected]> Cc: Benny Halevy <[email protected]> Cc: "James E.J. Bottomley" <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: "Nicholas A. Bellinger" <[email protected]> Cc: Alexander Viro <[email protected]> Cc: Chris Mason <[email protected]> Cc: "Theodore Ts'o" <[email protected]> Cc: Andreas Dilger <[email protected]> Cc: Jaegeuk Kim <[email protected]> Cc: Steven Whitehouse <[email protected]> Cc: Dave Kleikamp <[email protected]> Cc: Joern Engel <[email protected]> Cc: Prasad Joshi <[email protected]> Cc: Trond Myklebust <[email protected]> Cc: KONISHI Ryusuke <[email protected]> Cc: Mark Fasheh <[email protected]> Cc: Joel Becker <[email protected]> Cc: Ben Myers <[email protected]> Cc: [email protected] Cc: Steven Rostedt <[email protected]> Cc: Frederic Weisbecker <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Len Brown <[email protected]> Cc: Pavel Machek <[email protected]> Cc: "Rafael J. Wysocki" <[email protected]> Cc: Herton Ronaldo Krzesinski <[email protected]> Cc: Ben Hutchings <[email protected]> Cc: Andrew Morton <[email protected]> Cc: Guo Chao <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Asai Thambi S P <[email protected]> Cc: Selvan Mani <[email protected]> Cc: Sam Bradshaw <[email protected]> Cc: Wei Yongjun <[email protected]> Cc: "Roger Pau Monné" <[email protected]> Cc: Jan Beulich <[email protected]> Cc: Stefano Stabellini <[email protected]> Cc: Ian Campbell <[email protected]> Cc: Sebastian Ott <[email protected]> Cc: Christian Borntraeger <[email protected]> Cc: Minchan Kim <[email protected]> Cc: Jiang Liu <[email protected]> Cc: Nitin Gupta <[email protected]> Cc: Jerome Marchand <[email protected]> Cc: Joe Perches <[email protected]> Cc: Peng Tao <[email protected]> Cc: Andy Adamson <[email protected]> Cc: fanchaoting <[email protected]> Cc: Jie Liu <[email protected]> Cc: Sunil Mushran <[email protected]> Cc: "Martin K. Petersen" <[email protected]> Cc: Namjae Jeon <[email protected]> Cc: Pankaj Kumar <[email protected]> Cc: Dan Magenheimer <[email protected]> Cc: Mel Gorman <[email protected]>6
1 parent ed9c47b commit 4f024f3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+700
-638
lines changed

Documentation/block/biodoc.txt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -447,14 +447,13 @@ struct bio_vec {
447447
* main unit of I/O for the block layer and lower layers (ie drivers)
448448
*/
449449
struct bio {
450-
sector_t bi_sector;
451450
struct bio *bi_next; /* request queue link */
452451
struct block_device *bi_bdev; /* target device */
453452
unsigned long bi_flags; /* status, command, etc */
454453
unsigned long bi_rw; /* low bits: r/w, high: priority */
455454

456455
unsigned int bi_vcnt; /* how may bio_vec's */
457-
unsigned int bi_idx; /* current index into bio_vec array */
456+
struct bvec_iter bi_iter; /* current index into bio_vec array */
458457

459458
unsigned int bi_size; /* total size in bytes */
460459
unsigned short bi_phys_segments; /* segments after physaddr coalesce*/
@@ -480,7 +479,7 @@ With this multipage bio design:
480479
- Code that traverses the req list can find all the segments of a bio
481480
by using rq_for_each_segment. This handles the fact that a request
482481
has multiple bios, each of which can have multiple segments.
483-
- Drivers which can't process a large bio in one shot can use the bi_idx
482+
- Drivers which can't process a large bio in one shot can use the bi_iter
484483
field to keep track of the next bio_vec entry to process.
485484
(e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE)
486485
[TBD: Should preferably also have a bi_voffset and bi_vlen to avoid modifying
@@ -589,7 +588,7 @@ driver should not modify these values. The block layer sets up the
589588
nr_sectors and current_nr_sectors fields (based on the corresponding
590589
hard_xxx values and the number of bytes transferred) and updates it on
591590
every transfer that invokes end_that_request_first. It does the same for the
592-
buffer, bio, bio->bi_idx fields too.
591+
buffer, bio, bio->bi_iter fields too.
593592

594593
The buffer field is just a virtual address mapping of the current segment
595594
of the i/o buffer in cases where the buffer resides in low-memory. For high

arch/m68k/emu/nfblock.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ static void nfhd_make_request(struct request_queue *queue, struct bio *bio)
6464
struct nfhd_device *dev = queue->queuedata;
6565
struct bio_vec *bvec;
6666
int i, dir, len, shift;
67-
sector_t sec = bio->bi_sector;
67+
sector_t sec = bio->bi_iter.bi_sector;
6868

6969
dir = bio_data_dir(bio);
7070
shift = dev->bshift;

arch/powerpc/sysdev/axonram.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@ axon_ram_make_request(struct request_queue *queue, struct bio *bio)
113113
unsigned int transfered;
114114
unsigned short idx;
115115

116-
phys_mem = bank->io_addr + (bio->bi_sector << AXON_RAM_SECTOR_SHIFT);
116+
phys_mem = bank->io_addr + (bio->bi_iter.bi_sector <<
117+
AXON_RAM_SECTOR_SHIFT);
117118
phys_end = bank->io_addr + bank->size;
118119
transfered = 0;
119120
bio_for_each_segment(vec, bio, idx) {

block/blk-core.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ static void req_bio_endio(struct request *rq, struct bio *bio,
130130
bio_advance(bio, nbytes);
131131

132132
/* don't actually finish bio if it's part of flush sequence */
133-
if (bio->bi_size == 0 && !(rq->cmd_flags & REQ_FLUSH_SEQ))
133+
if (bio->bi_iter.bi_size == 0 && !(rq->cmd_flags & REQ_FLUSH_SEQ))
134134
bio_endio(bio, error);
135135
}
136136

@@ -1326,7 +1326,7 @@ void blk_add_request_payload(struct request *rq, struct page *page,
13261326
bio->bi_io_vec->bv_offset = 0;
13271327
bio->bi_io_vec->bv_len = len;
13281328

1329-
bio->bi_size = len;
1329+
bio->bi_iter.bi_size = len;
13301330
bio->bi_vcnt = 1;
13311331
bio->bi_phys_segments = 1;
13321332

@@ -1351,7 +1351,7 @@ bool bio_attempt_back_merge(struct request_queue *q, struct request *req,
13511351

13521352
req->biotail->bi_next = bio;
13531353
req->biotail = bio;
1354-
req->__data_len += bio->bi_size;
1354+
req->__data_len += bio->bi_iter.bi_size;
13551355
req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
13561356

13571357
blk_account_io_start(req, false);
@@ -1380,8 +1380,8 @@ bool bio_attempt_front_merge(struct request_queue *q, struct request *req,
13801380
* not touch req->buffer either...
13811381
*/
13821382
req->buffer = bio_data(bio);
1383-
req->__sector = bio->bi_sector;
1384-
req->__data_len += bio->bi_size;
1383+
req->__sector = bio->bi_iter.bi_sector;
1384+
req->__data_len += bio->bi_iter.bi_size;
13851385
req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
13861386

13871387
blk_account_io_start(req, false);
@@ -1459,7 +1459,7 @@ void init_request_from_bio(struct request *req, struct bio *bio)
14591459
req->cmd_flags |= REQ_FAILFAST_MASK;
14601460

14611461
req->errors = 0;
1462-
req->__sector = bio->bi_sector;
1462+
req->__sector = bio->bi_iter.bi_sector;
14631463
req->ioprio = bio_prio(bio);
14641464
blk_rq_bio_prep(req->q, req, bio);
14651465
}
@@ -1583,12 +1583,12 @@ static inline void blk_partition_remap(struct bio *bio)
15831583
if (bio_sectors(bio) && bdev != bdev->bd_contains) {
15841584
struct hd_struct *p = bdev->bd_part;
15851585

1586-
bio->bi_sector += p->start_sect;
1586+
bio->bi_iter.bi_sector += p->start_sect;
15871587
bio->bi_bdev = bdev->bd_contains;
15881588

15891589
trace_block_bio_remap(bdev_get_queue(bio->bi_bdev), bio,
15901590
bdev->bd_dev,
1591-
bio->bi_sector - p->start_sect);
1591+
bio->bi_iter.bi_sector - p->start_sect);
15921592
}
15931593
}
15941594

@@ -1654,7 +1654,7 @@ static inline int bio_check_eod(struct bio *bio, unsigned int nr_sectors)
16541654
/* Test device or partition size, when known. */
16551655
maxsector = i_size_read(bio->bi_bdev->bd_inode) >> 9;
16561656
if (maxsector) {
1657-
sector_t sector = bio->bi_sector;
1657+
sector_t sector = bio->bi_iter.bi_sector;
16581658

16591659
if (maxsector < nr_sectors || maxsector - nr_sectors < sector) {
16601660
/*
@@ -1690,7 +1690,7 @@ generic_make_request_checks(struct bio *bio)
16901690
"generic_make_request: Trying to access "
16911691
"nonexistent block-device %s (%Lu)\n",
16921692
bdevname(bio->bi_bdev, b),
1693-
(long long) bio->bi_sector);
1693+
(long long) bio->bi_iter.bi_sector);
16941694
goto end_io;
16951695
}
16961696

@@ -1704,9 +1704,9 @@ generic_make_request_checks(struct bio *bio)
17041704
}
17051705

17061706
part = bio->bi_bdev->bd_part;
1707-
if (should_fail_request(part, bio->bi_size) ||
1707+
if (should_fail_request(part, bio->bi_iter.bi_size) ||
17081708
should_fail_request(&part_to_disk(part)->part0,
1709-
bio->bi_size))
1709+
bio->bi_iter.bi_size))
17101710
goto end_io;
17111711

17121712
/*
@@ -1865,7 +1865,7 @@ void submit_bio(int rw, struct bio *bio)
18651865
if (rw & WRITE) {
18661866
count_vm_events(PGPGOUT, count);
18671867
} else {
1868-
task_io_account_read(bio->bi_size);
1868+
task_io_account_read(bio->bi_iter.bi_size);
18691869
count_vm_events(PGPGIN, count);
18701870
}
18711871

@@ -1874,7 +1874,7 @@ void submit_bio(int rw, struct bio *bio)
18741874
printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
18751875
current->comm, task_pid_nr(current),
18761876
(rw & WRITE) ? "WRITE" : "READ",
1877-
(unsigned long long)bio->bi_sector,
1877+
(unsigned long long)bio->bi_iter.bi_sector,
18781878
bdevname(bio->bi_bdev, b),
18791879
count);
18801880
}
@@ -2007,7 +2007,7 @@ unsigned int blk_rq_err_bytes(const struct request *rq)
20072007
for (bio = rq->bio; bio; bio = bio->bi_next) {
20082008
if ((bio->bi_rw & ff) != ff)
20092009
break;
2010-
bytes += bio->bi_size;
2010+
bytes += bio->bi_iter.bi_size;
20112011
}
20122012

20132013
/* this could lead to infinite loop */
@@ -2378,9 +2378,9 @@ bool blk_update_request(struct request *req, int error, unsigned int nr_bytes)
23782378
total_bytes = 0;
23792379
while (req->bio) {
23802380
struct bio *bio = req->bio;
2381-
unsigned bio_bytes = min(bio->bi_size, nr_bytes);
2381+
unsigned bio_bytes = min(bio->bi_iter.bi_size, nr_bytes);
23822382

2383-
if (bio_bytes == bio->bi_size)
2383+
if (bio_bytes == bio->bi_iter.bi_size)
23842384
req->bio = bio->bi_next;
23852385

23862386
req_bio_endio(req, bio, bio_bytes, error);
@@ -2728,7 +2728,7 @@ void blk_rq_bio_prep(struct request_queue *q, struct request *rq,
27282728
rq->nr_phys_segments = bio_phys_segments(q, bio);
27292729
rq->buffer = bio_data(bio);
27302730
}
2731-
rq->__data_len = bio->bi_size;
2731+
rq->__data_len = bio->bi_iter.bi_size;
27322732
rq->bio = rq->biotail = bio;
27332733

27342734
if (bio->bi_bdev)

block/blk-flush.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask,
548548
* copied from blk_rq_pos(rq).
549549
*/
550550
if (error_sector)
551-
*error_sector = bio->bi_sector;
551+
*error_sector = bio->bi_iter.bi_sector;
552552

553553
bio_put(bio);
554554
return ret;

block/blk-lib.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
108108
req_sects = end_sect - sector;
109109
}
110110

111-
bio->bi_sector = sector;
111+
bio->bi_iter.bi_sector = sector;
112112
bio->bi_end_io = bio_batch_end_io;
113113
bio->bi_bdev = bdev;
114114
bio->bi_private = &bb;
115115

116-
bio->bi_size = req_sects << 9;
116+
bio->bi_iter.bi_size = req_sects << 9;
117117
nr_sects -= req_sects;
118118
sector = end_sect;
119119

@@ -174,7 +174,7 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
174174
break;
175175
}
176176

177-
bio->bi_sector = sector;
177+
bio->bi_iter.bi_sector = sector;
178178
bio->bi_end_io = bio_batch_end_io;
179179
bio->bi_bdev = bdev;
180180
bio->bi_private = &bb;
@@ -184,11 +184,11 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
184184
bio->bi_io_vec->bv_len = bdev_logical_block_size(bdev);
185185

186186
if (nr_sects > max_write_same_sectors) {
187-
bio->bi_size = max_write_same_sectors << 9;
187+
bio->bi_iter.bi_size = max_write_same_sectors << 9;
188188
nr_sects -= max_write_same_sectors;
189189
sector += max_write_same_sectors;
190190
} else {
191-
bio->bi_size = nr_sects << 9;
191+
bio->bi_iter.bi_size = nr_sects << 9;
192192
nr_sects = 0;
193193
}
194194

@@ -240,7 +240,7 @@ int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
240240
break;
241241
}
242242

243-
bio->bi_sector = sector;
243+
bio->bi_iter.bi_sector = sector;
244244
bio->bi_bdev = bdev;
245245
bio->bi_end_io = bio_batch_end_io;
246246
bio->bi_private = &bb;

block/blk-map.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ int blk_rq_append_bio(struct request_queue *q, struct request *rq,
2020
rq->biotail->bi_next = bio;
2121
rq->biotail = bio;
2222

23-
rq->__data_len += bio->bi_size;
23+
rq->__data_len += bio->bi_iter.bi_size;
2424
}
2525
return 0;
2626
}
@@ -76,7 +76,7 @@ static int __blk_rq_map_user(struct request_queue *q, struct request *rq,
7676

7777
ret = blk_rq_append_bio(q, rq, bio);
7878
if (!ret)
79-
return bio->bi_size;
79+
return bio->bi_iter.bi_size;
8080

8181
/* if it was boucned we must call the end io function */
8282
bio_endio(bio, 0);
@@ -220,7 +220,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
220220
if (IS_ERR(bio))
221221
return PTR_ERR(bio);
222222

223-
if (bio->bi_size != len) {
223+
if (bio->bi_iter.bi_size != len) {
224224
/*
225225
* Grab an extra reference to this bio, as bio_unmap_user()
226226
* expects to be able to drop it twice as it happens on the

block/blk-merge.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,9 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
543543

544544
int blk_try_merge(struct request *rq, struct bio *bio)
545545
{
546-
if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_sector)
546+
if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_iter.bi_sector)
547547
return ELEVATOR_BACK_MERGE;
548-
else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_sector)
548+
else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_iter.bi_sector)
549549
return ELEVATOR_FRONT_MERGE;
550550
return ELEVATOR_NO_MERGE;
551551
}

block/blk-mq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ void blk_mq_complete_request(struct request *rq, int error)
301301
struct bio *next = bio->bi_next;
302302

303303
bio->bi_next = NULL;
304-
bytes += bio->bi_size;
304+
bytes += bio->bi_iter.bi_size;
305305
blk_mq_bio_endio(rq, bio, error);
306306
bio = next;
307307
}

block/blk-throttle.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -877,14 +877,14 @@ static bool tg_with_in_bps_limit(struct throtl_grp *tg, struct bio *bio,
877877
do_div(tmp, HZ);
878878
bytes_allowed = tmp;
879879

880-
if (tg->bytes_disp[rw] + bio->bi_size <= bytes_allowed) {
880+
if (tg->bytes_disp[rw] + bio->bi_iter.bi_size <= bytes_allowed) {
881881
if (wait)
882882
*wait = 0;
883883
return 1;
884884
}
885885

886886
/* Calc approx time to dispatch */
887-
extra_bytes = tg->bytes_disp[rw] + bio->bi_size - bytes_allowed;
887+
extra_bytes = tg->bytes_disp[rw] + bio->bi_iter.bi_size - bytes_allowed;
888888
jiffy_wait = div64_u64(extra_bytes * HZ, tg->bps[rw]);
889889

890890
if (!jiffy_wait)
@@ -987,7 +987,7 @@ static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio)
987987
bool rw = bio_data_dir(bio);
988988

989989
/* Charge the bio to the group */
990-
tg->bytes_disp[rw] += bio->bi_size;
990+
tg->bytes_disp[rw] += bio->bi_iter.bi_size;
991991
tg->io_disp[rw]++;
992992

993993
/*
@@ -1003,8 +1003,8 @@ static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio)
10031003
*/
10041004
if (!(bio->bi_rw & REQ_THROTTLED)) {
10051005
bio->bi_rw |= REQ_THROTTLED;
1006-
throtl_update_dispatch_stats(tg_to_blkg(tg), bio->bi_size,
1007-
bio->bi_rw);
1006+
throtl_update_dispatch_stats(tg_to_blkg(tg),
1007+
bio->bi_iter.bi_size, bio->bi_rw);
10081008
}
10091009
}
10101010

@@ -1508,7 +1508,7 @@ bool blk_throtl_bio(struct request_queue *q, struct bio *bio)
15081508
if (tg) {
15091509
if (!tg->has_rules[rw]) {
15101510
throtl_update_dispatch_stats(tg_to_blkg(tg),
1511-
bio->bi_size, bio->bi_rw);
1511+
bio->bi_iter.bi_size, bio->bi_rw);
15121512
goto out_unlock_rcu;
15131513
}
15141514
}
@@ -1564,7 +1564,7 @@ bool blk_throtl_bio(struct request_queue *q, struct bio *bio)
15641564
/* out-of-limit, queue to @tg */
15651565
throtl_log(sq, "[%c] bio. bdisp=%llu sz=%u bps=%llu iodisp=%u iops=%u queued=%d/%d",
15661566
rw == READ ? 'R' : 'W',
1567-
tg->bytes_disp[rw], bio->bi_size, tg->bps[rw],
1567+
tg->bytes_disp[rw], bio->bi_iter.bi_size, tg->bps[rw],
15681568
tg->io_disp[rw], tg->iops[rw],
15691569
sq->nr_queued[READ], sq->nr_queued[WRITE]);
15701570

block/elevator.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio)
440440
/*
441441
* See if our hash lookup can find a potential backmerge.
442442
*/
443-
__rq = elv_rqhash_find(q, bio->bi_sector);
443+
__rq = elv_rqhash_find(q, bio->bi_iter.bi_sector);
444444
if (__rq && elv_rq_merge_ok(__rq, bio)) {
445445
*req = __rq;
446446
return ELEVATOR_BACK_MERGE;

drivers/block/aoe/aoecmd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -929,8 +929,8 @@ bufinit(struct buf *buf, struct request *rq, struct bio *bio)
929929
memset(buf, 0, sizeof(*buf));
930930
buf->rq = rq;
931931
buf->bio = bio;
932-
buf->resid = bio->bi_size;
933-
buf->sector = bio->bi_sector;
932+
buf->resid = bio->bi_iter.bi_size;
933+
buf->sector = bio->bi_iter.bi_sector;
934934
bio_pageinc(bio);
935935
buf->bv = bio_iovec(bio);
936936
buf->bv_resid = buf->bv->bv_len;
@@ -1152,7 +1152,7 @@ aoe_end_request(struct aoedev *d, struct request *rq, int fastfail)
11521152
do {
11531153
bio = rq->bio;
11541154
bok = !fastfail && test_bit(BIO_UPTODATE, &bio->bi_flags);
1155-
} while (__blk_end_request(rq, bok ? 0 : -EIO, bio->bi_size));
1155+
} while (__blk_end_request(rq, bok ? 0 : -EIO, bio->bi_iter.bi_size));
11561156

11571157
/* cf. http://lkml.org/lkml/2006/10/31/28 */
11581158
if (!fastfail)

drivers/block/brd.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,13 +333,13 @@ static void brd_make_request(struct request_queue *q, struct bio *bio)
333333
int i;
334334
int err = -EIO;
335335

336-
sector = bio->bi_sector;
336+
sector = bio->bi_iter.bi_sector;
337337
if (bio_end_sector(bio) > get_capacity(bdev->bd_disk))
338338
goto out;
339339

340340
if (unlikely(bio->bi_rw & REQ_DISCARD)) {
341341
err = 0;
342-
discard_from_brd(brd, sector, bio->bi_size);
342+
discard_from_brd(brd, sector, bio->bi_iter.bi_size);
343343
goto out;
344344
}
345345

0 commit comments

Comments
 (0)