aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2024-01-11 14:58:31 +0000
committerMark Johnston <markj@FreeBSD.org>2024-01-25 14:58:44 +0000
commitf4524aff6d66edbfb7b3f184118b0a4299c4b1af (patch)
treefe1dc16c63c13a0fc08267043c04d6d50410dae4
parent6a7eaf04f166b141b27da70d18a737bac48fbcd4 (diff)
downloadsrc-f4524aff6d66edbfb7b3f184118b0a4299c4b1af.tar.gz
src-f4524aff6d66edbfb7b3f184118b0a4299c4b1af.zip
top: Avoid printing a blank line when the ZFS ARC is empty
PR: 275994 MFC after: 2 weeks (cherry picked from commit 1f62718d8ba26d813d8c2e826ac5f4caee4c6730)
-rw-r--r--usr.bin/top/machine.c20
1 files 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);