> +static sector_t map_to_core(struct dm_target *ti, struct bio *bio)
> +{
> +     struct unstripe_c *uc = ti->private;
> +     sector_t sector = bio->bi_iter.bi_sector;
> +
> +     /* Account for what stripe we're operating on */
> +     sector += uc->unstripe_offset;
> +
> +     /* Shift us up to the right "row" on the stripe */
> +     sector += uc->unstripe_width * (sector >> uc->chunk_shift);
> +     return sector;
> +}

This doesn't work anymore, previously we had a "group" local variable,
but removed it out. Now we're calculating the group based *after* we
switch up the stripe.

we need to swap the two sector +=  then it will work:

     /* Shift us up to the right "row" on the stripe */
     sector += uc->unstripe_width * (sector >> uc->chunk_shift);

     /* Account for what stripe we're operating on */
     sector += uc->unstripe_offset;

--
dm-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to