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>
This commit is contained in:
parent
3556c2fafb
commit
15632a96f4
5
mdadm.c
5
mdadm.c
|
@ -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):
|
||||
|
|
3
util.c
3
util.c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue