[sheepdog] [PATCH] erasure: allow y >= x in x:y scheme
Liu Yuan
namei.unix at gmail.com
Fri Oct 25 13:21:41 CEST 2013
There is no technically reason that we must have y < x. So better remove this
condition. One use case is for smaller cluster with 2:x scheme, where x >= 2
Signed-off-by: Liu Yuan <namei.unix at gmail.com>
---
dog/vdi.c | 5 ++--
tests/functional/029 | 10 +++----
tests/functional/029.out | 75 +++++++++++++++++++++++++++++++++-------------
3 files changed, 61 insertions(+), 29 deletions(-)
diff --git a/dog/vdi.c b/dog/vdi.c
index dc3d1f1..6d00d36 100644
--- a/dog/vdi.c
+++ b/dog/vdi.c
@@ -2288,7 +2288,7 @@ static uint8_t parse_copy(const char *str, uint8_t *copy_policy)
return 0;
parity = strtol(n2, NULL, 10);
- if (parity >= SD_EC_MAX_STRIP || parity >= copy || parity == 0)
+ if (parity >= SD_EC_MAX_STRIP || parity == 0)
return 0;
/*
@@ -2345,8 +2345,7 @@ static int vdi_parser(int ch, const char *opt)
" x(1 to %d) - number of replicated copies\n"
"To create erasure coded vdi, set -c x:y\n"
" x(2,4,8,16) - number of data strips\n"
- " y(1 to 15) - number of parity strips\n"
- "and meet the condition x > y",
+ " y(1 to 15) - number of parity strips",
opt, SD_MAX_COPIES);
exit(EXIT_FAILURE);
}
diff --git a/tests/functional/029 b/tests/functional/029
index e0eb771..935abf4 100755
--- a/tests/functional/029
+++ b/tests/functional/029
@@ -18,10 +18,10 @@ done
$DOG vdi create -c 4:2 test5 20M -P
$DOG vdi create -c 4:3 test6 20M -P
-$DOG vdi create -c 4:4 fail 20M -P
-$DOG vdi create -c 4:5 fail 20M -P
-$DOG vdi create -c 16:7 test7 20M -P
-$DOG vdi create -c 16:8 fail 20M -P
+$DOG vdi create -c 4:4 test7 20M -P
+$DOG vdi create -c 4:5 test8 20M -P
+$DOG vdi create -c 16:7 test9 20M -P
+$DOG vdi create -c 16:16 fail 20M -P
$DOG vdi snapshot -s tag test2
$DOG vdi clone -s 1 test2 clone -c 3
@@ -40,7 +40,7 @@ $DOG vdi delete -s 1 test2
_vdi_list
-for i in `seq 2 7`; do
+for i in `seq 2 9`; do
$DOG vdi object test$i -i 1;
done
diff --git a/tests/functional/029.out b/tests/functional/029.out
index ea80196..af50642 100644
--- a/tests/functional/029.out
+++ b/tests/functional/029.out
@@ -1,37 +1,20 @@
QA output created by 029
using backend plain store
-Invalid parameter 4:4
+Invalid parameter 16:16
To create replicated vdi, set -c x
x(1 to 31) - number of replicated copies
To create erasure coded vdi, set -c x:y
x(2,4,8,16) - number of data strips
y(1 to 15) - number of parity strips
-and meet the condition x > y
-Invalid parameter 4:5
-To create replicated vdi, set -c x
- x(1 to 31) - number of replicated copies
-To create erasure coded vdi, set -c x:y
- x(2,4,8,16) - number of data strips
- y(1 to 15) - number of parity strips
-and meet the condition x > y
-There are not enough nodes(23) to hold the copies(24)
-Usage: dog vdi create [-P] [-c copies] [-a address] [-p port] [-h] [-r] [-v] <vdiname> <size>
-Options:
- -P, --prealloc preallocate all the data objects
- -c, --copies specify the data redundancy level
- -a, --address specify the daemon address (default: localhost)
- -p, --port specify the daemon port
- -h, --help display this help and exit
- -r, --raw raw output mode: omit headers, separate fields with
- single spaces and print all sizes in decimal bytes
- -v, --verbose print more information than default
Name Id Size Used Shared Creation time VDI id Copies Tag
test5 0 20 MB 20 MB 0.0 MB DATE fd2c30 6
test4 0 20 MB 20 MB 0.0 MB DATE fd2de3 4
- test7 0 20 MB 20 MB 0.0 MB DATE fd2f96 23
+ test7 0 20 MB 20 MB 0.0 MB DATE fd2f96 8
test6 0 20 MB 20 MB 0.0 MB DATE fd3149 7
test3 0 20 MB 20 MB 0.0 MB DATE fd3662 3
test2 0 20 MB 0.0 MB 20 MB DATE fd3816 2
+ test9 0 20 MB 20 MB 0.0 MB DATE fd4094 23
+ test8 0 20 MB 20 MB 0.0 MB DATE fd4247 9
Looking for the object 0xfd381500000001 (the inode vid 0xfd3816 idx 1) with 23 nodes
127.0.0.1:7000 doesn't have the object
@@ -159,6 +142,56 @@ Looking for the object 0xfd314900000001 (the inode vid 0xfd3149 idx 1) with 23 n
127.0.0.1:7024 has the object (should be 7 copies)
Looking for the object 0xfd2f9600000001 (the inode vid 0xfd2f96 idx 1) with 23 nodes
+127.0.0.1:7000 doesn't have the object
+127.0.0.1:7001 has the object (should be 8 copies)
+127.0.0.1:7004 has the object (should be 8 copies)
+127.0.0.1:7005 doesn't have the object
+127.0.0.1:7006 has the object (should be 8 copies)
+127.0.0.1:7007 doesn't have the object
+127.0.0.1:7008 has the object (should be 8 copies)
+127.0.0.1:7009 doesn't have the object
+127.0.0.1:7010 doesn't have the object
+127.0.0.1:7011 doesn't have the object
+127.0.0.1:7012 has the object (should be 8 copies)
+127.0.0.1:7013 has the object (should be 8 copies)
+127.0.0.1:7014 has the object (should be 8 copies)
+127.0.0.1:7015 doesn't have the object
+127.0.0.1:7016 doesn't have the object
+127.0.0.1:7017 doesn't have the object
+127.0.0.1:7018 doesn't have the object
+127.0.0.1:7019 has the object (should be 8 copies)
+127.0.0.1:7020 doesn't have the object
+127.0.0.1:7021 doesn't have the object
+127.0.0.1:7022 doesn't have the object
+127.0.0.1:7023 doesn't have the object
+127.0.0.1:7024 doesn't have the object
+Looking for the object 0xfd424700000001 (the inode vid 0xfd4247 idx 1) with 23 nodes
+
+127.0.0.1:7000 doesn't have the object
+127.0.0.1:7001 doesn't have the object
+127.0.0.1:7004 has the object (should be 9 copies)
+127.0.0.1:7005 doesn't have the object
+127.0.0.1:7006 has the object (should be 9 copies)
+127.0.0.1:7007 doesn't have the object
+127.0.0.1:7008 doesn't have the object
+127.0.0.1:7009 doesn't have the object
+127.0.0.1:7010 has the object (should be 9 copies)
+127.0.0.1:7011 has the object (should be 9 copies)
+127.0.0.1:7012 doesn't have the object
+127.0.0.1:7013 doesn't have the object
+127.0.0.1:7014 has the object (should be 9 copies)
+127.0.0.1:7015 has the object (should be 9 copies)
+127.0.0.1:7016 doesn't have the object
+127.0.0.1:7017 doesn't have the object
+127.0.0.1:7018 doesn't have the object
+127.0.0.1:7019 doesn't have the object
+127.0.0.1:7020 doesn't have the object
+127.0.0.1:7021 doesn't have the object
+127.0.0.1:7022 has the object (should be 9 copies)
+127.0.0.1:7023 has the object (should be 9 copies)
+127.0.0.1:7024 has the object (should be 9 copies)
+Looking for the object 0xfd409400000001 (the inode vid 0xfd4094 idx 1) with 23 nodes
+
127.0.0.1:7000 has the object (should be 23 copies)
127.0.0.1:7001 has the object (should be 23 copies)
127.0.0.1:7004 has the object (should be 23 copies)
--
1.7.9.5
More information about the sheepdog
mailing list