X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmd%2Fdm-stripe.c;h=ab89278a56bf4b7537498819c1fe54dbd1458e54;hb=f7f1b0f1e2fbadeab12d24236000e778aa9b1ead;hp=6a3b9454c922b34a11a5ae3fea81723c1565d5a5;hpb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;p=linux-2.6.git diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c index 6a3b9454c..ab89278a5 100644 --- a/drivers/md/dm-stripe.c +++ b/drivers/md/dm-stripe.c @@ -21,7 +21,7 @@ struct stripe_c { uint32_t stripes; /* The size of this target / num. stripes */ - uint32_t stripe_width; + sector_t stripe_width; /* stripe chunk size */ uint32_t chunk_shift; @@ -173,9 +173,8 @@ static int stripe_map(struct dm_target *ti, struct bio *bio, struct stripe_c *sc = (struct stripe_c *) ti->private; sector_t offset = bio->bi_sector - ti->begin; - uint32_t chunk = (uint32_t) (offset >> sc->chunk_shift); - uint32_t stripe = chunk % sc->stripes; /* 32bit modulus */ - chunk = chunk / sc->stripes; + sector_t chunk = offset >> sc->chunk_shift; + uint32_t stripe = sector_div(chunk, sc->stripes); bio->bi_bdev = sc->stripe[stripe].dev->bdev; bio->bi_sector = sc->stripe[stripe].physical_start + @@ -189,7 +188,6 @@ static int stripe_status(struct dm_target *ti, struct stripe_c *sc = (struct stripe_c *) ti->private; unsigned int sz = 0; unsigned int i; - char buffer[32]; switch (type) { case STATUSTYPE_INFO: @@ -198,11 +196,9 @@ static int stripe_status(struct dm_target *ti, case STATUSTYPE_TABLE: DMEMIT("%d " SECTOR_FORMAT, sc->stripes, sc->chunk_mask + 1); - for (i = 0; i < sc->stripes; i++) { - format_dev_t(buffer, sc->stripe[i].dev->bdev->bd_dev); - DMEMIT(" %s " SECTOR_FORMAT, buffer, + for (i = 0; i < sc->stripes; i++) + DMEMIT(" %s " SECTOR_FORMAT, sc->stripe[i].dev->name, sc->stripe[i].physical_start); - } break; } return 0; @@ -210,7 +206,7 @@ static int stripe_status(struct dm_target *ti, static struct target_type stripe_target = { .name = "striped", - .version= {1, 0, 1}, + .version= {1, 0, 2}, .module = THIS_MODULE, .ctr = stripe_ctr, .dtr = stripe_dtr,