|
@@ -2384,11 +2384,11 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in
|
|
|
} else
|
|
|
bip = &sh->dev[dd_idx].toread;
|
|
|
while (*bip && (*bip)->bi_sector < bi->bi_sector) {
|
|
|
- if ((*bip)->bi_sector + ((*bip)->bi_size >> 9) > bi->bi_sector)
|
|
|
+ if (bio_end_sector(*bip) > bi->bi_sector)
|
|
|
goto overlap;
|
|
|
bip = & (*bip)->bi_next;
|
|
|
}
|
|
|
- if (*bip && (*bip)->bi_sector < bi->bi_sector + ((bi->bi_size)>>9))
|
|
|
+ if (*bip && (*bip)->bi_sector < bio_end_sector(bi))
|
|
|
goto overlap;
|
|
|
|
|
|
BUG_ON(*bip && bi->bi_next && (*bip) != bi->bi_next);
|
|
@@ -2404,8 +2404,8 @@ static int add_stripe_bio(struct stripe_head *sh, struct bio *bi, int dd_idx, in
|
|
|
sector < sh->dev[dd_idx].sector + STRIPE_SECTORS &&
|
|
|
bi && bi->bi_sector <= sector;
|
|
|
bi = r5_next_bio(bi, sh->dev[dd_idx].sector)) {
|
|
|
- if (bi->bi_sector + (bi->bi_size>>9) >= sector)
|
|
|
- sector = bi->bi_sector + (bi->bi_size>>9);
|
|
|
+ if (bio_end_sector(bi) >= sector)
|
|
|
+ sector = bio_end_sector(bi);
|
|
|
}
|
|
|
if (sector >= sh->dev[dd_idx].sector + STRIPE_SECTORS)
|
|
|
set_bit(R5_OVERWRITE, &sh->dev[dd_idx].flags);
|
|
@@ -3941,7 +3941,7 @@ static int chunk_aligned_read(struct mddev *mddev, struct bio * raid_bio)
|
|
|
0,
|
|
|
&dd_idx, NULL);
|
|
|
|
|
|
- end_sector = align_bi->bi_sector + (align_bi->bi_size >> 9);
|
|
|
+ end_sector = bio_end_sector(align_bi);
|
|
|
rcu_read_lock();
|
|
|
rdev = rcu_dereference(conf->disks[dd_idx].replacement);
|
|
|
if (!rdev || test_bit(Faulty, &rdev->flags) ||
|
|
@@ -4216,7 +4216,7 @@ static void make_request(struct mddev *mddev, struct bio * bi)
|
|
|
}
|
|
|
|
|
|
logical_sector = bi->bi_sector & ~((sector_t)STRIPE_SECTORS-1);
|
|
|
- last_sector = bi->bi_sector + (bi->bi_size>>9);
|
|
|
+ last_sector = bio_end_sector(bi);
|
|
|
bi->bi_next = NULL;
|
|
|
bi->bi_phys_segments = 1; /* over-loaded to count active stripes */
|
|
|
|
|
@@ -4679,7 +4679,7 @@ static int retry_aligned_read(struct r5conf *conf, struct bio *raid_bio)
|
|
|
logical_sector = raid_bio->bi_sector & ~((sector_t)STRIPE_SECTORS-1);
|
|
|
sector = raid5_compute_sector(conf, logical_sector,
|
|
|
0, &dd_idx, NULL);
|
|
|
- last_sector = raid_bio->bi_sector + (raid_bio->bi_size>>9);
|
|
|
+ last_sector = bio_end_sector(raid_bio);
|
|
|
|
|
|
for (; logical_sector < last_sector;
|
|
|
logical_sector += STRIPE_SECTORS,
|