summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMikulas Patocka <mpatocka@redhat.com>2012-07-27 15:08:00 +0100
committerAlasdair G Kergon <agk@redhat.com>2012-07-27 15:08:00 +0100
commitf14fa693c93078444b5e95d7cad78ead0383ad50 (patch)
tree72efcd3104d4eab2d420626b98264dd670343fd0
parentf09996c993e256fce4b920588959866998d51250 (diff)
downloadlinux-f14fa693c93078444b5e95d7cad78ead0383ad50.tar.gz
linux-f14fa693c93078444b5e95d7cad78ead0383ad50.tar.bz2
linux-f14fa693c93078444b5e95d7cad78ead0383ad50.zip
dm stripe: fix size test
dm-stripe is supposed to ensure that all the space allocated to the stripes is fully used and that all stripes are the same size. This patch fixes the test. It checks that device length is divisible by the chunk size and checks that the resulting quotient is divisible by the number of stripes (which is equivalent to testing if device length is divisible by chunk_size * stripes). Previously, the code only tested that the number of sectors in the target was divisible by each of the chunk size and the number of stripes separately, which could leave entire stripes unused. (A setup that genuinely needs some stripes to be shorter than others can be created by concatenating striped targets.) Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
-rw-r--r--Documentation/device-mapper/striped.txt3
-rw-r--r--drivers/md/dm-stripe.c1
2 files changed, 1 insertions, 3 deletions
diff --git a/Documentation/device-mapper/striped.txt b/Documentation/device-mapper/striped.txt
index f34d3236b9da..953fe1d68068 100644
--- a/Documentation/device-mapper/striped.txt
+++ b/Documentation/device-mapper/striped.txt
@@ -16,8 +16,7 @@ Parameters: <num devs> <chunk size> [<dev path> <offset>]+
<offset>: Starting sector within the device.
One or more underlying devices can be specified. The striped device size must
-be a multiple of the chunk size and a multiple of the number of underlying
-devices.
+be a multiple of the chunk size multiplied by the number of underlying devices.
Example scripts
diff --git a/drivers/md/dm-stripe.c b/drivers/md/dm-stripe.c
index 183db5d3e48e..1f6316ed2b31 100644
--- a/drivers/md/dm-stripe.c
+++ b/drivers/md/dm-stripe.c
@@ -132,7 +132,6 @@ static int stripe_ctr(struct dm_target *ti, unsigned int argc, char **argv)
return -EINVAL;
}
- width = ti->len;
if (sector_div(width, stripes)) {
ti->error = "Target length not divisible by "
"number of stripes";