From 7dab19de36a88c7904e699276ed247c3cdbf0589 Mon Sep 17 00:00:00 2001 From: Samuel Just Date: Tue, 20 Apr 2021 23:59:46 -0700 Subject: [PATCH] crimson/os/seastore/cached_extent: fix maybe_generate_relative The only case we really care about here is that record relative addresses for initial_pending extents need to be turned into block relative extents. Signed-off-by: Samuel Just --- src/crimson/os/seastore/cached_extent.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/crimson/os/seastore/cached_extent.h b/src/crimson/os/seastore/cached_extent.h index 88300f1d4323..e3da26592d07 100644 --- a/src/crimson/os/seastore/cached_extent.h +++ b/src/crimson/os/seastore/cached_extent.h @@ -415,15 +415,11 @@ protected: * reference. */ paddr_t maybe_generate_relative(paddr_t addr) { - if (!addr.is_relative()) { - return addr; - } else if (is_mutation_pending()) { - assert(addr.is_record_relative()); - return addr; - } else { - ceph_assert(is_initial_pending()); - ceph_assert(get_paddr().is_record_relative()); + if (is_initial_pending() && addr.is_record_relative()) { return addr - get_paddr(); + } else { + ceph_assert(!addr.is_record_relative() || is_mutation_pending()); + return addr; } } -- 2.47.3