diff options
| author | Kent Overstreet <koverstreet@google.com> | 2012-09-25 18:05:12 -0400 |
|---|---|---|
| committer | Kent Overstreet <koverstreet@google.com> | 2013-03-23 17:15:29 -0400 |
| commit | f73a1c7d117d07a96d89475066188a2b79e53c48 (patch) | |
| tree | b2343926df6cf7877ee398ba485a962148b67804 | |
| parent | fb9e3534768c1daa0bd09dd00d1a8828e15079c8 (diff) | |
block: Add bio_end_sector()
Just a little convenience macro - main reason to add it now is preparing
for immutable bio vecs, it'll reduce the size of the patch that puts
bi_sector/bi_size/bi_idx into a struct bvec_iter.
Signed-off-by: Kent Overstreet <koverstreet@google.com>
CC: Jens Axboe <axboe@kernel.dk>
CC: Lars Ellenberg <drbd-dev@lists.linbit.com>
CC: Jiri Kosina <jkosina@suse.cz>
CC: Alasdair Kergon <agk@redhat.com>
CC: dm-devel@redhat.com
CC: Neil Brown <neilb@suse.de>
CC: Martin Schwidefsky <schwidefsky@de.ibm.com>
CC: Heiko Carstens <heiko.carstens@de.ibm.com>
CC: linux-s390@vger.kernel.org
CC: Chris Mason <chris.mason@fusionio.com>
CC: Steven Whitehouse <swhiteho@redhat.com>
Acked-by: Steven Whitehouse <swhiteho@redhat.com>
| -rw-r--r-- | block/blk-core.c | 2 | ||||
| -rw-r--r-- | block/cfq-iosched.c | 7 | ||||
| -rw-r--r-- | block/deadline-iosched.c | 2 | ||||
| -rw-r--r-- | drivers/block/brd.c | 3 | ||||
| -rw-r--r-- | drivers/block/pktcdvd.c | 6 | ||||
| -rw-r--r-- | drivers/md/dm-stripe.c | 2 | ||||
| -rw-r--r-- | drivers/md/dm-verity.c | 2 | ||||
| -rw-r--r-- | drivers/md/faulty.c | 6 | ||||
| -rw-r--r-- | drivers/md/linear.c | 3 | ||||
| -rw-r--r-- | drivers/md/raid1.c | 4 | ||||
| -rw-r--r-- | drivers/md/raid5.c | 14 | ||||
| -rw-r--r-- | drivers/s390/block/dcssblk.c | 3 | ||||
| -rw-r--r-- | fs/btrfs/extent_io.c | 3 | ||||
| -rw-r--r-- | fs/gfs2/lops.c | 2 | ||||
| -rw-r--r-- | include/linux/bio.h | 1 |
15 files changed, 26 insertions, 34 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 86a1afeef606..7236b826f4a1 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
| @@ -1586,7 +1586,7 @@ static void handle_bad_sector(struct bio *bio) | |||
| 1586 | printk(KERN_INFO "%s: rw=%ld, want=%Lu, limit=%Lu\n", | 1586 | printk(KERN_INFO "%s: rw=%ld, want=%Lu, limit=%Lu\n", |
| 1587 | bdevname(bio->bi_bdev, b), | 1587 | bdevname(bio->bi_bdev, b), |
| 1588 | bio->bi_rw, | 1588 | bio->bi_rw, |
| 1589 | (unsigned long long)bio->bi_sector + bio_sectors(bio), | 1589 | (unsigned long long)bio_end_sector(bio), |
| 1590 | (long long)(i_size_read(bio->bi_bdev->bd_inode) >> 9)); | 1590 | (long long)(i_size_read(bio->bi_bdev->bd_inode) >> 9)); |
| 1591 | 1591 | ||
| 1592 | set_bit(BIO_EOF, &bio->bi_flags); | 1592 | set_bit(BIO_EOF, &bio->bi_flags); |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index 4f0ade74cfd0..d5cd3131c57a 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
| @@ -2270,11 +2270,8 @@ cfq_find_rq_fmerge(struct cfq_data *cfqd, struct bio *bio) | |||
| 2270 | return NULL; | 2270 | return NULL; |
| 2271 | 2271 | ||
| 2272 | cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio)); | 2272 | cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio)); |
| 2273 | if (cfqq) { | 2273 | if (cfqq) |
| 2274 | sector_t sector = bio->bi_sector + bio_sectors(bio); | 2274 | return elv_rb_find(&cfqq->sort_list, bio_end_sector(bio)); |
| 2275 | |||
| 2276 | return elv_rb_find(&cfqq->sort_list, sector); | ||
| 2277 | } | ||
| 2278 | 2275 | ||
| 2279 | return NULL; | 2276 | return NULL; |
| 2280 | } | 2277 | } |
diff --git a/block/deadline-iosched.c b/block/deadline-iosched.c index 90037b5eb17f..ba19a3afab79 100644 --- a/block/deadline-iosched.c +++ b/block/deadline-iosched.c | |||
| @@ -132,7 +132,7 @@ deadline_merge(struct request_queue *q, struct request **req, struct bio *bio) | |||
| 132 | * check for front merge | 132 | * check for front merge |
| 133 | */ | 133 | */ |
| 134 | if (dd->front_merges) { | 134 | if (dd->front_merges) { |
| 135 | sector_t sector = bio->bi_sector + bio_sectors(bio); | 135 | sector_t sector = bio_end_sector(bio); |
| 136 | 136 | ||
| 137 | __rq = elv_rb_find(&dd->sort_list[bio_data_dir(bio)], sector); | 137 | __rq = elv_rb_find(&dd->sort_list[bio_data_dir(bio)], sector); |
| 138 | if (__rq) { | 138 | if (__rq) { |
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index 531ceb31d0ff..f1a29f8e9d33 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
| @@ -334,8 +334,7 @@ static void brd_make_request(struct request_queue *q, struct bio *bio) | |||
| 334 | int err = -EIO; | 334 | int err = -EIO; |
| 335 | 335 | ||
| 336 | sector = bio->bi_sector; | 336 | sector = bio->bi_sector; |
| 337 | if (sector + (bio->bi_size >> SECTOR_SHIFT) > | 337 | if (bio_end_sector(bio) > get_capacity(bdev->bd_disk)) |
| 338 | get_capacity(bdev->bd_disk)) | ||
| 339 | goto out; | 338 | goto out; |
| 340 | 339 | ||
| 341 | if (unlikely(bio->bi_rw & REQ_DISCARD)) { | 340 | if (unlikely(bio->bi_rw & REQ_DISCARD)) { |
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index 2e7de7a59bfc..26938e8e2fc3 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c | |||
| @@ -901,7 +901,7 @@ static void pkt_iosched_process_queue(struct pktcdvd_device *pd) | |||
| 901 | pd->iosched.successive_reads += bio->bi_size >> 10; | 901 | pd->iosched.successive_reads += bio->bi_size >> 10; |
| 902 | else { | 902 | else { |
| 903 | pd->iosched.successive_reads = 0; | 903 | pd->iosched.successive_reads = 0; |
| 904 | pd->iosched.last_write = bio->bi_sector + bio_sectors(bio); | 904 | pd->iosched.last_write = bio_end_sector(bio); |
| 905 | } | 905 | } |
| 906 | if (pd->iosched.successive_reads >= HI_SPEED_SWITCH) { | 906 | if (pd->iosched.successive_reads >= HI_SPEED_SWITCH) { |
| 907 | if (pd->read_speed == pd->write_speed) { | 907 | if (pd->read_speed == pd->write_speed) { |
| @@ -2454,7 +2454,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) | |||
| 2454 | zone = ZONE(bio->bi_sector, pd); | 2454 | zone = ZONE(bio->bi_sector, pd); |
| 2455 | VPRINTK("pkt_make_request: start = %6llx stop = %6llx\n", | 2455 | VPRINTK("pkt_make_request: start = %6llx stop = %6llx\n", |
| 2456 | (unsigned long long)bio->bi_sector, | 2456 | (unsigned long long)bio->bi_sector, |
| 2457 | (unsigned long long)(bio->bi_sector + bio_sectors(bio))); | 2457 | (unsigned long long)bio_end_sector(bio)); |
| 2458 | 2458 | ||
| 2459 | /* Check if we have to split the bio */ | 2459 | /* Check if we have to split the bio */ |
| 2460 | { | 2460 | { |
| @@ -2462,7 +2462,7 @@ static void pkt_make_request(struct request_queue *q, struct bio *bio) | |||
| 2462 | sector_t last_zone; | 2462 | sector_t last_zone; |
| 2463 | int first_sectors; | 2463 | int first_sectors; |
| 2464 | 2464 | ||
| 2465 | last_zone = ZONE(bio->bi_sector + bio_sectors(bio) - 1, pd); | 2465 | last_zone = ZONE(bio_end_sector(bio) - 1, pd); |
| 2466 | if (last_zone != zone) { | 2466 | if (last_zone != zone) { |
| 2467 | BUG_ON(last_zone != zone + pd->settings.size); | 2467 | BUG_ON(last_zone != zone + pd->settings.size); |
| 2468 | first_sectors = last_zone - bio->bi_sector; | 2468 | first_sectors = last_zone - bio->bi_sector; |
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c index d8837d313f54..ea5e878a30b9 100644 --- a/drivers/md/dm-stripe.c +++ b/drivers/md/dm-stripe.c | |||
| @@ -258,7 +258,7 @@ static int stripe_map_range(struct stripe_c *sc, struct bio *bio, | |||
| 258 | sector_t begin, end; | 258 | sector_t begin, end; |
| 259 | 259 | ||
| 260 | stripe_map_range_sector(sc, bio->bi_sector, target_stripe, &begin); | 260 | stripe_map_range_sector(sc, bio->bi_sector, target_stripe, &begin); |
| 261 | stripe_map_range_sector(sc, bio->bi_sector + bio_sectors(bio), | 261 | stripe_map_range_sector(sc, bio_end_sector(bio), |
| 262 | target_stripe, &end); | 262 | target_stripe, &end); |
| 263 | if (begin < end) { | 263 | if (begin < end) { |
| 264 | bio->bi_bdev = sc->stripe[target_stripe].dev->bdev; | 264 | bio->bi_bdev = sc->stripe[target_stripe].dev->bdev; |
diff --git a/drivers/md/dm-verity.c b/drivers/md/dm-verity.c index 6ad538375c3c..923115d08baa 100644 --- a/drivers/md/dm-verity.c +++ b/drivers/md/dm-verity.c | |||
| @@ -472,7 +472,7 @@ static int verity_map(struct dm_target *ti, struct bio *bio) | |||
| 472 | return -EIO; | 472 | return -EIO; |
| 473 | } | 473 | } |
| 474 | 474 | ||
| 475 | if ((bio->bi_sector + bio_sectors(bio)) >> | 475 | if (bio_end_sector(bio) >> |
| 476 | (v->data_dev_block_bits - SECTOR_SHIFT) > v->data_blocks) { | 476 | (v->data_dev_block_bits - SECTOR_SHIFT) > v->data_blocks) { |
| 477 | DMERR_LIMIT("io out of range"); | 477 | DMERR_LIMIT("io out of range"); |
| 478 | return -EIO; | 478 | return -EIO; |
diff --git a/drivers/md/faulty.c b/drivers/md/faulty.c index 5e7dc772f5de..3193aefe982b 100644 --- a/drivers/md/faulty.c +++ b/drivers/md/faulty.c | |||
| @@ -185,8 +185,7 @@ static void make_request(struct mddev *mddev, struct bio *bio) | |||
| 185 | return; | 185 | return; |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | if (check_sector(conf, bio->bi_sector, bio->bi_sector+(bio->bi_size>>9), | 188 | if (check_sector(conf, bio->bi_sector, bio_end_sector(bio), WRITE)) |
| 189 | WRITE)) | ||
| 190 | failit = 1; | 189 | failit = 1; |
| 191 | if (check_mode(conf, WritePersistent)) { | 190 | if (check_mode(conf, WritePersistent)) { |
| 192 | add_sector(conf, bio->bi_sector, WritePersistent); | 191 | add_sector(conf, bio->bi_sector, WritePersistent); |
| @@ -196,8 +195,7 @@ static void make_request(struct mddev *mddev, struct bio *bio) | |||
| 196 | failit = 1; | 195 | failit = 1; |
| 197 | } else { | 196 | } else { |
| 198 | /* read request */ | 197 | /* read request */ |
| 199 | if (check_sector(conf, bio->bi_sector, bio->bi_sector + (bio->bi_size>>9), | 198 | if (check_sector(conf, bio->bi_sector, bio_end_sector(bio), READ)) |
| 200 | READ)) | ||
| 201 | failit = 1; | 199 | failit = 1; |
| 202 | if (check_mode(conf, ReadTransient)) | 200 | if (check_mode(conf, ReadTransient)) |
| 203 | failit = 1; | 201 | failit = 1; |
diff --git a/drivers/md/linear.c b/drivers/md/linear.c index 21014836bdbf..f03fabd2b37b 100644 --- a/drivers/md/linear.c +++ b/drivers/md/linear.c | |||
| @@ -317,8 +317,7 @@ static void linear_make_request(struct mddev *mddev, struct bio *bio) | |||
| 317 | bio_io_error(bio); | 317 | bio_io_error(bio); |
| 318 | return; | 318 | return; |
| 319 | } | 319 | } |
| 320 | if (unlikely(bio->bi_sector + (bio->bi_size >> 9) > | 320 | if (unlikely(bio_end_sector(bio) > tmp_dev->end_sector)) { |
| 321 | tmp_dev->end_sector)) { | ||
| 322 | /* This bio crosses a device boundary, so we have to | 321 | /* This bio crosses a device boundary, so we have to |
| 323 | * split it. | 322 | * split it. |
| 324 | */ | 323 | */ |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index fd86b372692d..4d8c2e0a6bad 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
| @@ -1018,7 +1018,7 @@ static void make_request(struct mddev *mddev, struct bio * bio) | |||
| 1018 | md_write_start(mddev, bio); /* wait on | ||
