From: Alasdair G Kergon Use new dm_target_offset() macro to avoid most references to ti->begin in dm targets. Signed-off-by: Alasdair G Kergon --- drivers/md/dm-crypt.c | 4 ++-- drivers/md/dm-delay.c | 5 ++--- drivers/md/dm-linear.c | 2 +- drivers/md/dm-raid1.c | 2 +- drivers/md/dm-stripe.c | 2 +- 5 files changed, 7 insertions(+), 8 deletions(-) Index: linux-2.6.35/drivers/md/dm-crypt.c =================================================================== --- linux-2.6.35.orig/drivers/md/dm-crypt.c +++ linux-2.6.35/drivers/md/dm-crypt.c @@ -1284,7 +1284,7 @@ static int crypt_map(struct dm_target *t return DM_MAPIO_REMAPPED; } - io = crypt_io_alloc(ti, bio, bio->bi_sector - ti->begin); + io = crypt_io_alloc(ti, bio, dm_target_offset(ti, bio->bi_sector)); if (bio_data_dir(io->base_bio) == READ) kcryptd_queue_io(io); @@ -1406,7 +1406,7 @@ static int crypt_merge(struct dm_target return max_size; bvm->bi_bdev = cc->dev->bdev; - bvm->bi_sector = cc->start + bvm->bi_sector - ti->begin; + bvm->bi_sector = cc->start + dm_target_offset(ti, bvm->bi_sector); return min(max_size, q->merge_bvec_fn(q, bvm, biovec)); } Index: linux-2.6.35/drivers/md/dm-delay.c =================================================================== --- linux-2.6.35.orig/drivers/md/dm-delay.c +++ linux-2.6.35/drivers/md/dm-delay.c @@ -281,14 +281,13 @@ static int delay_map(struct dm_target *t bio->bi_bdev = dc->dev_write->bdev; if (bio_sectors(bio)) bio->bi_sector = dc->start_write + - (bio->bi_sector - ti->begin); + dm_target_offset(ti, bio->bi_sector); return delay_bio(dc, dc->write_delay, bio); } bio->bi_bdev = dc->dev_read->bdev; - bio->bi_sector = dc->start_read + - (bio->bi_sector - ti->begin); + bio->bi_sector = dc->start_read + dm_target_offset(ti, bio->bi_sector); return delay_bio(dc, dc->read_delay, bio); } Index: linux-2.6.35/drivers/md/dm-linear.c =================================================================== --- linux-2.6.35.orig/drivers/md/dm-linear.c +++ linux-2.6.35/drivers/md/dm-linear.c @@ -74,7 +74,7 @@ static sector_t linear_map_sector(struct { struct linear_c *lc = ti->private; - return lc->start + (bi_sector - ti->begin); + return lc->start + dm_target_offset(ti, bi_sector); } static void linear_map_bio(struct dm_target *ti, struct bio *bio) Index: linux-2.6.35/drivers/md/dm-raid1.c =================================================================== --- linux-2.6.35.orig/drivers/md/dm-raid1.c +++ linux-2.6.35/drivers/md/dm-raid1.c @@ -445,7 +445,7 @@ static sector_t map_sector(struct mirror { if (unlikely(!bio->bi_size)) return 0; - return m->offset + (bio->bi_sector - m->ms->ti->begin); + return m->offset + dm_target_offset(m->ms->ti, bio->bi_sector); } static void map_bio(struct mirror *m, struct bio *bio) Index: linux-2.6.35/drivers/md/dm-stripe.c =================================================================== --- linux-2.6.35.orig/drivers/md/dm-stripe.c +++ linux-2.6.35/drivers/md/dm-stripe.c @@ -222,7 +222,7 @@ static int stripe_map(struct dm_target * return DM_MAPIO_REMAPPED; } - offset = bio->bi_sector - ti->begin; + offset = dm_target_offset(ti, bio->bi_sector); chunk = offset >> sc->chunk_shift; stripe = sector_div(chunk, sc->stripes);