|
@@ -94,7 +94,7 @@ static int get_stripe(struct dm_target *ti, struct stripe_c *sc,
|
|
|
static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
|
|
{
|
|
|
struct stripe_c *sc;
|
|
|
- sector_t width;
|
|
|
+ sector_t width, tmp_len;
|
|
|
uint32_t stripes;
|
|
|
uint32_t chunk_size;
|
|
|
int r;
|
|
@@ -116,15 +116,16 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
|
|
}
|
|
|
|
|
|
width = ti->len;
|
|
|
- if (sector_div(width, chunk_size)) {
|
|
|
+ if (sector_div(width, stripes)) {
|
|
|
ti->error = "Target length not divisible by "
|
|
|
- "chunk size";
|
|
|
+ "number of stripes";
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- if (sector_div(width, stripes)) {
|
|
|
+ tmp_len = width;
|
|
|
+ if (sector_div(tmp_len, chunk_size)) {
|
|
|
ti->error = "Target length not divisible by "
|
|
|
- "number of stripes";
|
|
|
+ "chunk size";
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|