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:57:12 +0000
commit1c090bf880bf8879f75e4cd4b93c9a277faef2fa (patch)
tree96b753dc72a94b34ff6af120a31aba50c3a641d7
parentf1186fab56e86b963a127bcdacbd1e8e1f03acf2 (diff)
downloadsrc-1c090bf880bf8879f75e4cd4b93c9a277faef2fa.tar.gz
src-1c090bf880bf8879f75e4cd4b93c9a277faef2fa.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);