- Merge r196244:

Avoid overflowing the swap size counters in human-readable mode
    by introducing the new CONVERT_BLOCKS macro which operates on
    sizes already converted to number of blocks.  With this macro
    it is not longer needed to perform needless multiplica

Approved by:	re (kib)
This commit is contained in:
Stanislav Sedov 2009-08-15 15:12:46 +00:00
parent 09c0ee2663
commit 81fda6adf0

View File

@ -460,6 +460,7 @@ getfiles(struct xfile **abuf, size_t *alen)
*/
#define CONVERT(v) ((int64_t)(v) * pagesize / blocksize)
#define CONVERT_BLOCKS(v) ((int64_t)(v) * pagesize)
static struct kvm_swap swtot;
static int nswdev;
@ -492,10 +493,10 @@ print_swap_line(const char *swdevname, intmax_t nblks, intmax_t bused,
printf("%-15s %*jd ", swdevname, hlen, CONVERT(nblks));
if (humanflag) {
humanize_number(usedbuf, sizeof(usedbuf),
CONVERT(blocksize * bused), "",
CONVERT_BLOCKS(bused), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
humanize_number(availbuf, sizeof(availbuf),
CONVERT(blocksize * bavail), "",
CONVERT_BLOCKS(bavail), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
printf("%8s %8s %5.0f%%\n", usedbuf, availbuf, bpercent);
} else {