From f0baaa329ab2f28773b9a082d74cbb773a306a53 Mon Sep 17 00:00:00 2001 From: Ameer Hamza Date: Tue, 20 May 2025 04:27:24 +0500 Subject: [PATCH] arcstat: prevent ZeroDivisionError when L2ARC becomes empty Reviewed-by: Brian Behlendorf Reviewed-by: Richard Yao Reviewed-by: Alexander Motin Reviewed-by: George Melikov Signed-off-by: Ameer Hamza Closes #17348 --- cmd/arcstat.in | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/cmd/arcstat.in b/cmd/arcstat.in index 534e4f422..6f9abb39c 100755 --- a/cmd/arcstat.in +++ b/cmd/arcstat.in @@ -735,13 +735,14 @@ def calculate(): v[group["percent"]] if v[group["percent"]] > 0 else 0 if l2exist: + l2asize = cur["l2_asize"] v["l2hits"] = d["l2_hits"] / sint v["l2miss"] = d["l2_misses"] / sint v["l2read"] = v["l2hits"] + v["l2miss"] v["l2hit%"] = 100 * v["l2hits"] / v["l2read"] if v["l2read"] > 0 else 0 v["l2miss%"] = 100 - v["l2hit%"] if v["l2read"] > 0 else 0 - v["l2asize"] = cur["l2_asize"] + v["l2asize"] = l2asize v["l2size"] = cur["l2_size"] v["l2bytes"] = d["l2_read_bytes"] / sint v["l2wbytes"] = d["l2_write_bytes"] / sint @@ -751,11 +752,11 @@ def calculate(): v["l2mru"] = cur["l2_mru_asize"] v["l2data"] = cur["l2_bufc_data_asize"] v["l2meta"] = cur["l2_bufc_metadata_asize"] - v["l2pref%"] = 100 * v["l2pref"] / v["l2asize"] - v["l2mfu%"] = 100 * v["l2mfu"] / v["l2asize"] - v["l2mru%"] = 100 * v["l2mru"] / v["l2asize"] - v["l2data%"] = 100 * v["l2data"] / v["l2asize"] - v["l2meta%"] = 100 * v["l2meta"] / v["l2asize"] + v["l2pref%"] = 100 * v["l2pref"] / l2asize if l2asize > 0 else 0 + v["l2mfu%"] = 100 * v["l2mfu"] / l2asize if l2asize > 0 else 0 + v["l2mru%"] = 100 * v["l2mru"] / l2asize if l2asize > 0 else 0 + v["l2data%"] = 100 * v["l2data"] / l2asize if l2asize > 0 else 0 + v["l2meta%"] = 100 * v["l2meta"] / l2asize if l2asize > 0 else 0 v["grow"] = 0 if cur["arc_no_grow"] else 1 v["need"] = cur["arc_need_free"]