From: myoungwon oh Date: Thu, 5 Dec 2024 05:21:36 +0000 (+0000) Subject: crimson/os/seastore: adjust _clone to support omap tree for LOG X-Git-Tag: v20.0.0~24^2~7 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c84ef0986b87d1c527fb53dafbefe47c37043ba9;p=ceph.git crimson/os/seastore: adjust _clone to support omap tree for LOG Signed-off-by: Myoungwon Oh --- diff --git a/src/crimson/os/seastore/onode.h b/src/crimson/os/seastore/onode.h index a8d27aa4ee284..548239c671897 100644 --- a/src/crimson/os/seastore/onode.h +++ b/src/crimson/os/seastore/onode.h @@ -42,6 +42,17 @@ struct onode_layout_t { onode_layout_t() : omap_root(omap_type_t::OMAP), log_root(omap_type_t::LOG), xattr_root(omap_type_t::XATTR) {} + + const omap_root_le_t& get_root(omap_type_t type) const { + if (type == omap_type_t::XATTR) { + return xattr_root; + } else if (type == omap_type_t::OMAP) { + return omap_root; + } else { + ceph_assert(type == omap_type_t::LOG); + return log_root; + } + } } __attribute__((packed)); class Transaction; diff --git a/src/crimson/os/seastore/seastore.cc b/src/crimson/os/seastore/seastore.cc index 0d0f777b4150c..4b753b974c92b 100644 --- a/src/crimson/os/seastore/seastore.cc +++ b/src/crimson/os/seastore/seastore.cc @@ -2177,13 +2177,11 @@ SeaStore::Shard::_clone_omaps( auto& layout = onode->get_layout(); return omap_list( *onode, - otype == omap_type_t::XATTR - ? layout.xattr_root - : layout.omap_root, + layout.get_root(otype), *ctx.transaction, start, OMapManager::omap_list_config_t().with_inclusive(false, false) - ).si_then([&ctx, &onode, &d_onode, this, otype, &start](auto p) mutable { + ).si_then([&ctx, &d_onode, this, otype, &start](auto p) mutable { auto complete = std::get<0>(p); auto &attrs = std::get<1>(p); if (attrs.empty()) { @@ -2197,9 +2195,7 @@ SeaStore::Shard::_clone_omaps( ctx, d_onode, std::map(attrs.begin(), attrs.end()), - otype == omap_type_t::XATTR - ? d_onode->get_layout().xattr_root - : d_onode->get_layout().omap_root + d_onode->get_layout().get_root(otype) ).si_then([complete, nstart=std::move(nstart), &start]() mutable { if (complete) { @@ -2239,6 +2235,8 @@ SeaStore::Shard::_clone( return _clone_omaps(ctx, onode, d_onode, omap_type_t::XATTR); }).si_then([&ctx, &onode, &d_onode, this] { return _clone_omaps(ctx, onode, d_onode, omap_type_t::OMAP); + }).si_then([&ctx, &onode, &d_onode, this] { + return _clone_omaps(ctx, onode, d_onode, omap_type_t::LOG); }); }