mirror of
https://github.com/kdave/btrfs-progs
synced 2024-12-15 19:05:50 +00:00
btrfs-progs: util: Fix a wrong unit of pretty_size
If parameter for pretty_size is smaller than default base(1024), pretty_size() will output wrong unit. For example, pretty_size(1008) will output '0.98B' not '1008B' or '0.98KiB'. The cause is, for default base and auto-detect unit, base will be 1024 but num_divs is still 0, last result will still be divided by base, causing the bug. Fix it by checking num_divs in default case, and if num_divs is 0, change base to 1. Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
9f76654de8
commit
af83da99d6
7
utils.c
7
utils.c
@ -1672,6 +1672,13 @@ int pretty_size_snprintf(u64 size, char *str, size_t str_size, unsigned unit_mod
|
||||
size /= mult;
|
||||
num_divs++;
|
||||
}
|
||||
/*
|
||||
* If the value is smaller than base, we didn't do any
|
||||
* division, in that case, base should be 1, not original
|
||||
* base, or the unit will be wrong
|
||||
*/
|
||||
if (num_divs == 0)
|
||||
base = 1;
|
||||
}
|
||||
|
||||
if (num_divs >= ARRAY_SIZE(unit_suffix_binary)) {
|
||||
|
Loading…
Reference in New Issue
Block a user