- Implement -h (human readable) for the size of the underlying block disk.

Currently, the size of the swap device is unconditionally reported using
  blocks, even if -h has been used.
- While here, switch to CONVERT_BLOCKS() instead of CONVERT() which will
  avoid overflowing size counters (in human readable form see: r196244)
- Update the column headers to reflect that a size is being reported instead
  of the block size units being used

Before:

$ swapinfo
Device          1K-blocks     Used    Avail Capacity
/dev/gpt/swapfs   1048576        0  1048576     0%
$

After:

$ swapinfo -h
Device           Size     Used    Avail Capacity
/dev/gpt/swapfs    1.0G       0B     1.0G     0%
$

Differential Revision:	https://reviews.freebsd.org/D23758
Reviewed by:	kevans
MFC after:	3 weeks
This commit is contained in:
Christian S.J. Peron 2020-02-20 21:12:10 +00:00
parent f92bb8c19a
commit 9a990500e5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=358181

View File

@ -95,6 +95,8 @@ static struct {
#define NNAMES (sizeof(namelist) / sizeof(*namelist))
static struct nlist nl[NNAMES];
#define SIZEHDR "Size"
static int humanflag;
static int usenumflag;
static int totalflag;
@ -471,7 +473,12 @@ print_swap_header(void)
long blocksize;
const char *header;
header = getbsize(&hlen, &blocksize);
if (humanflag) {
header = SIZEHDR;
hlen = sizeof(SIZEHDR);
} else {
header = getbsize(&hlen, &blocksize);
}
if (totalflag == 0)
(void)printf("%-15s %*s %8s %8s %8s\n",
"Device", hlen, header,
@ -484,23 +491,30 @@ print_swap_line(const char *swdevname, intmax_t nblks, intmax_t bused,
{
char usedbuf[5];
char availbuf[5];
char sizebuf[5];
int hlen, pagesize;
long blocksize;
pagesize = getpagesize();
getbsize(&hlen, &blocksize);
printf("%-15s %*jd ", swdevname, hlen, CONVERT(nblks));
printf("%-15s ", swdevname);
if (humanflag) {
humanize_number(sizebuf, sizeof(sizebuf),
CONVERT_BLOCKS(nblks), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
humanize_number(usedbuf, sizeof(usedbuf),
CONVERT_BLOCKS(bused), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
humanize_number(availbuf, sizeof(availbuf),
CONVERT_BLOCKS(bavail), "",
HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL);
printf("%8s %8s %5.0f%%\n", usedbuf, availbuf, bpercent);
printf("%8s %8s %8s %5.0f%%\n", sizebuf,
usedbuf, availbuf, bpercent);
} else {
printf("%8jd %8jd %5.0f%%\n", (intmax_t)CONVERT(bused),
printf("%*jd %8jd %8jd %5.0f%%\n", hlen,
(intmax_t)CONVERT(nblks),
(intmax_t)CONVERT(bused),
(intmax_t)CONVERT(bavail), bpercent);
}
}