diff options
author | NeilBrown <neilb@suse.de> | 2012-04-04 04:00:42 +1000 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-04-04 14:03:13 +1000 |
commit | 15632a96f4e6919b4fa54c622e9e14d7fdae42d1 (patch) | |
tree | 876582e51d98f08bd2962851c992b9e008e9c91a | |
parent | 3556c2fafbfb408103c9ed92d61b492b7adf6a6f (diff) | |
download | mdadm-15632a96f4e6919b4fa54c622e9e14d7fdae42d1.tar.gz |
parse_size: distinguish between 0 and error.
It isn't sufficient to use '0' for 'error' as well will
later have fields that can validly be '0'.
So return "-1" on error.
Also fix parsing of --bitmap_check so that '0' is treated
as an error: we don't support 512B anyway.
Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r-- | mdadm.c | 5 | ||||
-rw-r--r-- | util.c | 3 |
2 files changed, 4 insertions, 4 deletions
@@ -1056,15 +1056,14 @@ int main(int argc, char *argv[]) case O(BUILD,BitmapChunk): case O(CREATE,BitmapChunk): /* bitmap chunksize */ bitmap_chunk = parse_size(optarg); - if (bitmap_chunk < 0 || + if (bitmap_chunk <= 0 || bitmap_chunk & (bitmap_chunk - 1)) { fprintf(stderr, Name ": invalid bitmap chunksize: %s\n", optarg); exit(2); } - /* convert sectors to B, chunk of 0 means 512B */ - bitmap_chunk = bitmap_chunk ? bitmap_chunk * 512 : 512; + bitmap_chunk = bitmap_chunk * 512; continue; case O(GROW, WriteBehind): @@ -194,6 +194,7 @@ long long parse_size(char *size) * followed by 'K', 'M', or 'G'. * Without a suffix, K is assumed. * Number returned is in sectors (half-K) + * -1 returned on error. */ char *c; long long s = strtoll(size, &c, 10); @@ -215,7 +216,7 @@ long long parse_size(char *size) } } if (*c) - s = 0; + s = -1; return s; } |