From: Samuel Just Date: Wed, 21 Apr 2021 06:59:46 +0000 (-0700) Subject: crimson/os/seastore/cached_extent: fix maybe_generate_relative X-Git-Tag: v17.1.0~2174^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F40942%2Fhead;p=ceph.git 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 --- 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; } }