Skip to content

Commit 5026c1d

Browse files
cyx1231stmyoungwon
authored andcommitted
crimson/os/seastore: cleanup, reuse onode[op->oid]
Signed-off-by: Yingxin Cheng <[email protected]> Signed-off-by: Myoungwon Oh <[email protected]>
1 parent 2f5982b commit 5026c1d

File tree

1 file changed

+37
-27
lines changed

1 file changed

+37
-27
lines changed

src/crimson/os/seastore/seastore.cc

Lines changed: 37 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,10 +1807,10 @@ SeaStore::Shard::_do_transaction_step(
18071807
}
18081808
}
18091809
return fut.si_then([&, op, this, FNAME](auto get_onode) {
1810-
OnodeRef &o = onodes[op->oid];
1811-
if (!o) {
1810+
OnodeRef& onode = onodes[op->oid];
1811+
if (!onode) {
18121812
assert(get_onode);
1813-
o = get_onode;
1813+
onode = get_onode;
18141814
}
18151815
OnodeRef& d_onode = onodes[op->dest_oid];
18161816
if ((op->op == Transaction::OP_CLONE
@@ -1833,21 +1833,23 @@ SeaStore::Shard::_do_transaction_step(
18331833
}
18341834
}).si_then([&ctx, &i, &onodes, op, this, FNAME]() -> tm_ret {
18351835
const ghobject_t& oid = i.get_oid(op->oid);
1836+
OnodeRef& onode = onodes[op->oid];
1837+
assert(onode);
18361838
try {
18371839
switch (op->op) {
18381840
case Transaction::OP_REMOVE:
18391841
{
18401842
DEBUGT("op REMOVE, oid={} ...", *ctx.transaction, oid);
1841-
return _remove(ctx, onodes[op->oid]
1842-
).si_then([&onodes, op] {
1843-
onodes[op->oid].reset();
1843+
return _remove(ctx, onode
1844+
).si_then([&onode] {
1845+
onode.reset();
18441846
});
18451847
}
18461848
case Transaction::OP_CREATE:
18471849
case Transaction::OP_TOUCH:
18481850
{
18491851
DEBUGT("op CREATE/TOUCH, oid={} ...", *ctx.transaction, oid);
1850-
return _touch(ctx, onodes[op->oid]);
1852+
return _touch(ctx, onode);
18511853
}
18521854
case Transaction::OP_WRITE:
18531855
{
@@ -1859,14 +1861,14 @@ SeaStore::Shard::_do_transaction_step(
18591861
DEBUGT("op WRITE, oid={}, 0x{:x}~0x{:x}, flags=0x{:x} ...",
18601862
*ctx.transaction, oid, off, len, fadvise_flags);
18611863
return _write(
1862-
ctx, onodes[op->oid], off, len, std::move(bl),
1864+
ctx, onode, off, len, std::move(bl),
18631865
fadvise_flags);
18641866
}
18651867
case Transaction::OP_TRUNCATE:
18661868
{
18671869
uint64_t off = op->off;
18681870
DEBUGT("op TRUNCATE, oid={}, 0x{:x} ...", *ctx.transaction, oid, off);
1869-
return _truncate(ctx, onodes[op->oid], off);
1871+
return _truncate(ctx, onode, off);
18701872
}
18711873
case Transaction::OP_SETATTR:
18721874
{
@@ -1876,36 +1878,39 @@ SeaStore::Shard::_do_transaction_step(
18761878
i.decode_bl(bl);
18771879
DEBUGT("op SETATTR, oid={}, attr name={}, value length=0x{:x} ...",
18781880
*ctx.transaction, oid, name, bl.length());
1879-
return _setattrs(ctx, onodes[op->oid], std::move(to_set));
1881+
return _setattrs(ctx, onode, std::move(to_set));
18801882
}
18811883
case Transaction::OP_SETATTRS:
18821884
{
18831885
std::map<std::string, bufferlist> to_set;
18841886
i.decode_attrset(to_set);
18851887
DEBUGT("op SETATTRS, oid={}, attrs size={} ...",
18861888
*ctx.transaction, oid, to_set.size());
1887-
return _setattrs(ctx, onodes[op->oid], std::move(to_set));
1889+
return _setattrs(ctx, onode, std::move(to_set));
18881890
}
18891891
case Transaction::OP_RMATTR:
18901892
{
18911893
std::string name = i.decode_string();
18921894
DEBUGT("op RMATTR, oid={}, attr name={} ...",
18931895
*ctx.transaction, oid, name);
1894-
return _rmattr(ctx, onodes[op->oid], name);
1896+
return _rmattr(ctx, onode, name);
18951897
}
18961898
case Transaction::OP_RMATTRS:
18971899
{
18981900
DEBUGT("op RMATTRS, oid={} ...", *ctx.transaction, oid);
1899-
return _rmattrs(ctx, onodes[op->oid]);
1901+
return _rmattrs(ctx, onode);
19001902
}
19011903
case Transaction::OP_OMAP_SETKEYS:
19021904
{
19031905
std::map<std::string, ceph::bufferlist> aset;
19041906
i.decode_attrset(aset);
1905-
const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
1907+
const omap_root_le_t &root = select_log_omap_root(*onode);
19061908
DEBUGT("op OMAP_SETKEYS, oid={}, omap size={}, type={} ...",
19071909
*ctx.transaction, oid, aset.size(), root.get_type());
1908-
return _omap_set_values(ctx, onodes[op->oid], std::move(aset),
1910+
return _omap_set_values(
1911+
ctx,
1912+
onode,
1913+
std::move(aset),
19091914
root);
19101915
}
19111916
case Transaction::OP_OMAP_SETHEADER:
@@ -1914,42 +1919,47 @@ SeaStore::Shard::_do_transaction_step(
19141919
i.decode_bl(bl);
19151920
DEBUGT("op OMAP_SETHEADER, oid={}, length=0x{:x} ...",
19161921
*ctx.transaction, oid, bl.length());
1917-
return _omap_set_header(ctx, onodes[op->oid], std::move(bl));
1922+
return _omap_set_header(ctx, onode, std::move(bl));
19181923
}
19191924
case Transaction::OP_OMAP_RMKEYS:
19201925
{
19211926
omap_keys_t keys;
19221927
i.decode_keyset(keys);
1923-
const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
1928+
const omap_root_le_t &root = select_log_omap_root(*onode);
19241929
DEBUGT("op OMAP_RMKEYS, oid={}, omap size={}, type={} ...",
19251930
*ctx.transaction, oid, keys.size(), root.get_type());
1926-
return _omap_rmkeys(ctx, onodes[op->oid], std::move(keys), root);
1931+
return _omap_rmkeys(
1932+
ctx,
1933+
onode,
1934+
std::move(keys),
1935+
root);
19271936
}
19281937
case Transaction::OP_OMAP_RMKEYRANGE:
19291938
{
19301939
std::string first, last;
19311940
first = i.decode_string();
19321941
last = i.decode_string();
1933-
const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
1942+
const omap_root_le_t &root = select_log_omap_root(*onode);
19341943
DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={}, type={}...",
19351944
*ctx.transaction, oid, first, last, root.get_type());
19361945
return _omap_rmkeyrange(
1937-
ctx, onodes[op->oid],
1938-
std::move(first), std::move(last),
1946+
ctx,
1947+
onode,
1948+
std::move(first), std::move(last),
19391949
root);
19401950
}
19411951
case Transaction::OP_OMAP_CLEAR:
19421952
{
19431953
DEBUGT("op OMAP_CLEAR, oid={} ...", *ctx.transaction, oid);
1944-
return _omap_clear(ctx, onodes[op->oid]);
1954+
return _omap_clear(ctx, onode);
19451955
}
19461956
case Transaction::OP_ZERO:
19471957
{
19481958
objaddr_t off = op->off;
19491959
extent_len_t len = op->len;
19501960
DEBUGT("op ZERO, oid={}, 0x{:x}~0x{:x} ...",
19511961
*ctx.transaction, oid, off, len);
1952-
return _zero(ctx, onodes[op->oid], off, len);
1962+
return _zero(ctx, onode, off, len);
19531963
}
19541964
case Transaction::OP_SETALLOCHINT:
19551965
{
@@ -1978,17 +1988,17 @@ SeaStore::Shard::_do_transaction_step(
19781988
{
19791989
DEBUGT("op CLONE, oid={}, dest oid={} ...",
19801990
*ctx.transaction, oid, i.get_oid(op->dest_oid));
1981-
return _clone(ctx, onodes[op->oid], onodes[op->dest_oid]);
1991+
return _clone(ctx, onode, onodes[op->dest_oid]);
19821992
}
19831993
case Transaction::OP_COLL_MOVE_RENAME:
19841994
{
19851995
DEBUGT("op COLL_MOVE_RENAME, oid={}, dest oid={} ...",
19861996
*ctx.transaction, oid, i.get_oid(op->dest_oid));
19871997
ceph_assert(op->cid == op->dest_cid);
19881998
return _rename(
1989-
ctx, onodes[op->oid], onodes[op->dest_oid]
1990-
).si_then([&onodes, op] {
1991-
onodes[op->oid].reset();
1999+
ctx, onode, onodes[op->dest_oid]
2000+
).si_then([&onode] {
2001+
onode.reset();
19922002
});
19932003
}
19942004
default:

0 commit comments

Comments
 (0)