svn commit: r358181 - head/usr.sbin/pstat

csjp at ion.sqrt.ca csjp at ion.sqrt.ca
Thu Feb 20 21:15:29 UTC 2020


To be clear, the before and after should have read:

Before:

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

After:

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

On Thu, Feb 20, 2020 at 09:12:10PM +0000, Christian S.J. Peron wrote:
> Author: csjp
> Date: Thu Feb 20 21:12:10 2020
> New Revision: 358181
> URL: https://svnweb.freebsd.org/changeset/base/358181
> 
> Log:
>   - 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
> 
> Modified:
>   head/usr.sbin/pstat/pstat.c
> 
> Modified: head/usr.sbin/pstat/pstat.c
> ==============================================================================
> --- head/usr.sbin/pstat/pstat.c	Thu Feb 20 21:07:23 2020	(r358180)
> +++ head/usr.sbin/pstat/pstat.c	Thu Feb 20 21:12:10 2020	(r358181)
> @@ -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,
>  {
>  	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);
>  	}
>  }


More information about the svn-src-all mailing list