Message ID | 1350299942-23468-1-git-send-email-sbehrens@giantdisaster.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Stefan,
when I checked your patch I found further problems to the function
parse_size():
- this function is declared two time: both in mkfs.c and in cmd-filesystem.c;
this is a good chance to move it in the utils.c file.
- your suggestion was to use atoll, which is signed. strtoull (which is
unsigned) would be a better choice.
- this function doesn't check for overflow [minor]
- if a number like 123MB is passed, it is evaluated as 123 instead of
123*1024*1024 [bug]
This suggested me to make the following patch.
Hoping to not offende anybody :-)
BR
G.Baroncelli
Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
You can pull the patch from
http://cassiopea.homelinux.net/git/btrfs-progs-unstable.git
branch
parse_size
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/mkfs.c b/mkfs.c index 47f0c9c..e62f0e4 100644 --- a/mkfs.c +++ b/mkfs.c @@ -80,7 +80,7 @@ static u64 parse_size(char *s) } s[len - 1] = '\0'; } - ret = atol(s) * mult; + ret = atoll(s) * mult; free(s); return ret; }
On 32 bit systems, a numerical parameter of 2147483648 or above to the mkfs.btrfs -b option does not work. The parameter is stored in an u64 but is read using atol() and thus not read correctly. This patch changes it to use atoll(). Specifying a multiplier (k, m or g) like "100g" in the mkfs.btrfs parameter list would also be a working workaround. Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de> --- The patch is based on the master branch of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-progs.git mkfs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)