From 9bd8b264ec3cdd8de86753051d2ff2a311c506f2 Mon Sep 17 00:00:00 2001 From: Kozlowski Mateusz Date: Tue, 10 Jan 2023 11:57:25 +0100 Subject: [PATCH] lib/ftl: Update GC band selection mechanism Don't let the invalidity value continuously drop in degenerate scenarios - previously could have happened if band_cmp picked based on other value, when invalidity is similar. Signed-off-by: Kozlowski Mateusz Signed-off-by: Mariusz Barczak Change-Id: I33166501e832cd7f359b3acef1e614cf9b1288d5 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16215 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- lib/ftl/ftl_band.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/ftl/ftl_band.c b/lib/ftl/ftl_band.c index ac1898afd..b5a2dd6ee 100644 --- a/lib/ftl/ftl_band.c +++ b/lib/ftl/ftl_band.c @@ -610,9 +610,12 @@ ftl_band_search_next_to_reloc(struct spdk_ftl_dev *dev) if (phys_id == FTL_BAND_PHYS_ID_INVALID || band_cmp(invalidity, wr_cnt, max_invalidity, max_wr_cnt, band->phys_id, phys_id)) { - max_invalidity = invalidity; max_wr_cnt = wr_cnt; phys_id = band->phys_id; + + if (invalidity > max_invalidity) { + max_invalidity = invalidity; + } } } }