Skip to content

Commit 5b97e49

Browse files
committed
crimson/os/seastore: reuse get_omap_root()
Signed-off-by: Yingxin Cheng <[email protected]>
1 parent 0140e6d commit 5b97e49

File tree

2 files changed

+15
-25
lines changed

2 files changed

+15
-25
lines changed

src/crimson/os/seastore/seastore.cc

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1375,15 +1375,14 @@ SeaStore::Shard::omap_get_header(
13751375
return get_attr(ch, oid, OMAP_HEADER_XATTR_KEY, op_flags);
13761376
}
13771377

1378-
const omap_root_le_t& SeaStore::Shard::select_log_omap_root(Onode& onode)
1378+
omap_root_t SeaStore::Shard::select_log_omap_root(Onode& onode) const
13791379
{
1380-
const auto &log_root_le = onode.get_layout().log_root;
1381-
laddr_t hint = onode.get_metadata_hint(device->get_block_size());
1382-
if (log_root_le.get(hint).is_null()) {
1383-
return onode.get_layout().omap_root;
1380+
auto log_root = get_omap_root(omap_type_t::LOG, onode);
1381+
if (log_root.is_null()) {
1382+
return get_omap_root(omap_type_t::OMAP, onode);
13841383
} else {
1385-
ceph_assert(onode.get_layout().omap_root.get(hint).is_null());
1386-
return log_root_le;
1384+
ceph_assert(get_omap_root(omap_type_t::OMAP, onode).is_null());
1385+
return log_root;
13871386
}
13881387
}
13891388

@@ -1406,8 +1405,7 @@ SeaStore::Shard::omap_get_values(
14061405
op_flags,
14071406
[this, keys](auto &t, auto &onode)
14081407
{
1409-
auto r = select_log_omap_root(onode);
1410-
omap_root_t root = r.get(onode.get_metadata_hint(device->get_block_size()));
1408+
auto root = select_log_omap_root(onode);
14111409
return omaptree_get_values(
14121410
t, std::move(root), keys);
14131411
}).finally([this] {
@@ -1435,8 +1433,7 @@ SeaStore::Shard::omap_get_values(
14351433
op_flags,
14361434
[this, start](auto &t, auto &onode)
14371435
{
1438-
auto root = select_log_omap_root(onode).get(
1439-
onode.get_metadata_hint(device->get_block_size()));
1436+
auto root = select_log_omap_root(onode);
14401437
return omaptree_get_values(
14411438
t, std::move(root), start);
14421439
}).finally([this] {
@@ -1772,8 +1769,7 @@ SeaStore::Shard::_do_transaction_step(
17721769
{
17731770
std::map<std::string, ceph::bufferlist> aset;
17741771
i.decode_attrset(aset);
1775-
auto root = select_log_omap_root(*onode).get(
1776-
onode->get_metadata_hint(device->get_block_size()));
1772+
auto root = select_log_omap_root(*onode);
17771773
DEBUGT("op OMAP_SETKEYS, oid={}, omap size={}, type={} ...",
17781774
*ctx.transaction, oid, aset.size(), root.get_type());
17791775
return omaptree_set_keys(
@@ -1794,8 +1790,7 @@ SeaStore::Shard::_do_transaction_step(
17941790
{
17951791
omap_keys_t keys;
17961792
i.decode_keyset(keys);
1797-
auto root = select_log_omap_root(*onode).get(
1798-
onode->get_metadata_hint(device->get_block_size()));
1793+
auto root = select_log_omap_root(*onode);
17991794
DEBUGT("op OMAP_RMKEYS, oid={}, omap size={}, type={} ...",
18001795
*ctx.transaction, oid, keys.size(), root.get_type());
18011796
return omaptree_rm_keys(
@@ -1809,8 +1804,7 @@ SeaStore::Shard::_do_transaction_step(
18091804
std::string first, last;
18101805
first = i.decode_string();
18111806
last = i.decode_string();
1812-
auto root = select_log_omap_root(*onode).get(
1813-
onode->get_metadata_hint(device->get_block_size()));
1807+
auto root = select_log_omap_root(*onode);
18141808
DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={}, type={}...",
18151809
*ctx.transaction, oid, first, last, root.get_type());
18161810
return omaptree_rm_keyrange(
@@ -1838,15 +1832,11 @@ SeaStore::Shard::_do_transaction_step(
18381832
*ctx.transaction, oid);
18391833
// TODO
18401834
if (op->hint & CEPH_OSD_ALLOC_HINT_FLAG_LOG) {
1841-
OnodeRef &onode = onodes[op->oid];
1842-
const auto &log_root = onode->get_layout().log_root.get(
1843-
onode->get_metadata_hint(device->get_block_size()));
1844-
const auto &omap_root = onode->get_layout().omap_root.get(
1845-
onode->get_metadata_hint(device->get_block_size()));
1846-
ceph_assert(log_root.is_null() && omap_root.is_null());
1835+
ceph_assert(get_omap_root(omap_type_t::LOG, *onode).is_null());
1836+
ceph_assert(get_omap_root(omap_type_t::OMAP, *onode).is_null());
18471837
return BtreeOMapManager(*transaction_manager).initialize_omap(
18481838
*ctx.transaction, onode->get_metadata_hint(device->get_block_size()),
1849-
log_root.get_type()
1839+
omap_type_t::LOG
18501840
).si_then([&onode, &ctx](auto new_root) {
18511841
if (new_root.must_update()) {
18521842
onode->update_log_root(*ctx.transaction, new_root);

src/crimson/os/seastore/seastore.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ class SeaStore final : public FuturizedStore {
185185
return 256;
186186
}
187187

188-
const omap_root_le_t& select_log_omap_root(Onode& onode);
188+
omap_root_t select_log_omap_root(Onode& onode) const;
189189

190190
// only exposed to SeaStore
191191
public:

0 commit comments

Comments
 (0)