The branch main has been updated by markj:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=1f62718d8ba26d813d8c2e826ac5f4caee4c6730

commit 1f62718d8ba26d813d8c2e826ac5f4caee4c6730
Author:     Mark Johnston <ma...@freebsd.org>
AuthorDate: 2024-01-11 14:58:31 +0000
Commit:     Mark Johnston <ma...@freebsd.org>
CommitDate: 2024-01-11 15:01:37 +0000

    top: Avoid printing a blank line when the ZFS ARC is empty
    
    PR:             275994
    MFC after:      2 weeks
---
 usr.bin/top/machine.c | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c
index b4cd29dab878..a76d77a80ce4 100644
--- a/usr.bin/top/machine.c
+++ b/usr.bin/top/machine.c
@@ -293,17 +293,27 @@ machine_init(struct statics *statics)
        size = sizeof(carc_en);
        if (arc_enabled &&
            sysctlbyname("vfs.zfs.compressed_arc_enabled", &carc_en, &size,
-           NULL, 0) == 0 && carc_en == 1)
-               carc_enabled = 1;
+           NULL, 0) == 0 && carc_en == 1) {
+               uint64_t uncomp_sz;
+
+               /*
+                * Don't report compression stats if no data is in the ARC.
+                * Otherwise, we end up printing a blank line.
+                */
+               size = sizeof(uncomp_sz);
+               if (sysctlbyname("kstat.zfs.misc.arcstats.uncompressed_size",
+                   &uncomp_sz, &size, NULL, 0) == 0 && uncomp_sz != 0)
+                       carc_enabled = 1;
+       }
 
        kd = kvm_open(NULL, _PATH_DEVNULL, NULL, O_RDONLY, "kvm_open");
        if (kd == NULL)
                return (-1);
 
        size = sizeof(nswapdev);
-       if (sysctlbyname("vm.nswapdev", &nswapdev, &size, NULL,
-               0) == 0 && nswapdev != 0)
-                       has_swap = 1;
+       if (sysctlbyname("vm.nswapdev", &nswapdev, &size, NULL, 0) == 0 &&
+           nswapdev != 0)
+               has_swap = 1;
 
        GETSYSCTL("kern.ccpu", ccpu);
 

Reply via email to