]> git.proxmox.com Git - zfsonlinux.git/commitdiff
arc stat/summary: guard access to l2arc MFU/MRU stats
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 10 Nov 2021 07:09:30 +0000 (08:09 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 10 Nov 2021 07:09:37 +0000 (08:09 +0100)
for better backward compat of 2.1 userspace tooling with 2.0 kernel
    module

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
debian/patches/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch [new file with mode: 0644]
debian/patches/series

diff --git a/debian/patches/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch b/debian/patches/0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch
new file mode 100644 (file)
index 0000000..590bab7
--- /dev/null
@@ -0,0 +1,65 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Thomas Lamprecht <t.lamprecht@proxmox.com>
+Date: Wed, 10 Nov 2021 08:00:13 +0100
+Subject: [PATCH] arc stat/summary: guard access to l2arc MFU/MRU stats
+
+In 2.1 commit 085321621e79a75bea41c2b6511da6ebfbf2ba0a added printing
+MFU/MRU stats, but those keys are not available in 2.0, meaning it
+may break there due to python bailing out on the dict access.
+
+simply guard those problematic usage line by checking the
+availability of the respective keys in the dict first to avoid the
+pythonic exception, not much more we can do.
+
+Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
+---
+ cmd/arc_summary/arc_summary3 | 18 ++++++++++--------
+ cmd/arcstat/arcstat.in       |  6 ++++--
+ 2 files changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/cmd/arc_summary/arc_summary3 b/cmd/arc_summary/arc_summary3
+index 7b28012ed..1acedc884 100755
+--- a/cmd/arc_summary/arc_summary3
++++ b/cmd/arc_summary/arc_summary3
+@@ -616,14 +616,16 @@ def section_arc(kstats_dict):
+            f_hits(arc_stats['evict_l2_skip']))
+     prt_i1('L2 cached evictions:', f_bytes(arc_stats['evict_l2_cached']))
+     prt_i1('L2 eligible evictions:', f_bytes(arc_stats['evict_l2_eligible']))
+-    prt_i2('L2 eligible MFU evictions:',
+-           f_perc(arc_stats['evict_l2_eligible_mfu'],
+-           arc_stats['evict_l2_eligible']),
+-           f_bytes(arc_stats['evict_l2_eligible_mfu']))
+-    prt_i2('L2 eligible MRU evictions:',
+-           f_perc(arc_stats['evict_l2_eligible_mru'],
+-           arc_stats['evict_l2_eligible']),
+-           f_bytes(arc_stats['evict_l2_eligible_mru']))
++    if 'evict_l2_eligible_mfu' in arc_stats:
++        prt_i2('L2 eligible MFU evictions:',
++               f_perc(arc_stats['evict_l2_eligible_mfu'],
++               arc_stats['evict_l2_eligible']),
++               f_bytes(arc_stats['evict_l2_eligible_mfu']))
++    if 'evict_l2_eligible_mru' in arc_stats:
++        prt_i2('L2 eligible MRU evictions:',
++               f_perc(arc_stats['evict_l2_eligible_mru'],
++               arc_stats['evict_l2_eligible']),
++               f_bytes(arc_stats['evict_l2_eligible_mru']))
+     prt_i1('L2 ineligible evictions:',
+            f_bytes(arc_stats['evict_l2_ineligible']))
+     print()
+diff --git a/cmd/arcstat/arcstat.in b/cmd/arcstat/arcstat.in
+index 9e7c52a6c..b236ac333 100755
+--- a/cmd/arcstat/arcstat.in
++++ b/cmd/arcstat/arcstat.in
+@@ -482,8 +482,10 @@ def calculate():
+     v["el2skip"] = d["evict_l2_skip"] / sint
+     v["el2cach"] = d["evict_l2_cached"] / sint
+     v["el2el"] = d["evict_l2_eligible"] / sint
+-    v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint
+-    v["el2mru"] = d["evict_l2_eligible_mru"] / sint
++    if "evict_l2_eligible_mfu" in v:
++        v["el2mfu"] = d["evict_l2_eligible_mfu"] / sint
++    if "evict_l2_eligible_mru" in v:
++        v["el2mru"] = d["evict_l2_eligible_mru"] / sint
+     v["el2inel"] = d["evict_l2_ineligible"] / sint
+     v["mtxmis"] = d["mutex_miss"] / sint
index 91b8a3b126aae2e031f1fd8d99c1d0b664464a66..d7e37a412c116dd1972cde1bfe25d612ece958fe 100644 (file)
@@ -7,3 +7,4 @@
 0007-Use-installed-python3.patch
 0008-Add-systemd-unit-for-importing-specific-pools.patch
 0009-Patch-move-manpage-arcstat-1-to-arcstat-8.patch
+0010-arc-stat-summary-guard-access-to-l2arc-MFU-MRU-stats.patch