From 6bbd02b2edb40f053e3f02c134161a8d39d2657f Mon Sep 17 00:00:00 2001 From: Xuehan Xu Date: Tue, 25 Jun 2024 16:46:57 +0800 Subject: [PATCH] crimson/os/seastore/transaction: make Transaction::is_retired() an accurate extent check Signed-off-by: Xuehan Xu (cherry picked from commit 09e06b5769683c6f8652377e2337a928a624f272) --- src/crimson/os/seastore/transaction.h | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/crimson/os/seastore/transaction.h b/src/crimson/os/seastore/transaction.h index 5e3f165560e58..849c025009ccd 100644 --- a/src/crimson/os/seastore/transaction.h +++ b/src/crimson/os/seastore/transaction.h @@ -317,19 +317,14 @@ public: } bool is_retired(paddr_t paddr, extent_len_t len) { - if (retired_set.empty()) { - return false; - } auto iter = retired_set.lower_bound(paddr); if (iter == retired_set.end() || - (*iter)->get_paddr() > paddr) { - assert(iter != retired_set.begin()); - --iter; + (*iter)->get_paddr() != paddr) { + return false; + } else { + assert(len == (*iter)->get_length()); + return true; } - auto retired_paddr = (*iter)->get_paddr(); - auto retired_length = (*iter)->get_length(); - return retired_paddr <= paddr && - retired_paddr.add_offset(retired_length) >= paddr.add_offset(len); } template -- 2.39.5