]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/os/seastore: cleanup, reuse onode[op->oid] 59213/head
authorYingxin Cheng <yingxin.cheng@intel.com>
Tue, 10 Dec 2024 08:53:37 +0000 (16:53 +0800)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 20 Feb 2025 12:29:16 +0000 (12:29 +0000)
Signed-off-by: Yingxin Cheng <yingxin.cheng@intel.com>
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/seastore.cc

index dfba4c361486fbb21834492e11d3ee4f5495b033..29fdf0f2ee80b520ff5341f206e1fa4d85007452 100644 (file)
@@ -1807,10 +1807,10 @@ SeaStore::Shard::_do_transaction_step(
     }
   }
   return fut.si_then([&, op, this, FNAME](auto get_onode) {
-    OnodeRef &o = onodes[op->oid];
-    if (!o) {
+    OnodeRef& onode = onodes[op->oid];
+    if (!onode) {
       assert(get_onode);
-      o = get_onode;
+      onode = get_onode;
     }
     OnodeRef& d_onode = onodes[op->dest_oid];
     if ((op->op == Transaction::OP_CLONE
@@ -1833,21 +1833,23 @@ SeaStore::Shard::_do_transaction_step(
     }
   }).si_then([&ctx, &i, &onodes, op, this, FNAME]() -> tm_ret {
     const ghobject_t& oid = i.get_oid(op->oid);
+    OnodeRef& onode = onodes[op->oid];
+    assert(onode);
     try {
       switch (op->op) {
       case Transaction::OP_REMOVE:
       {
         DEBUGT("op REMOVE, oid={} ...", *ctx.transaction, oid);
-        return _remove(ctx, onodes[op->oid]
-       ).si_then([&onodes, op] {
-         onodes[op->oid].reset();
+        return _remove(ctx, onode
+       ).si_then([&onode] {
+         onode.reset();
        });
       }
       case Transaction::OP_CREATE:
       case Transaction::OP_TOUCH:
       {
         DEBUGT("op CREATE/TOUCH, oid={} ...", *ctx.transaction, oid);
-        return _touch(ctx, onodes[op->oid]);
+        return _touch(ctx, onode);
       }
       case Transaction::OP_WRITE:
       {
@@ -1859,14 +1861,14 @@ SeaStore::Shard::_do_transaction_step(
         DEBUGT("op WRITE, oid={}, 0x{:x}~0x{:x}, flags=0x{:x} ...",
                *ctx.transaction, oid, off, len, fadvise_flags);
         return _write(
-         ctx, onodes[op->oid], off, len, std::move(bl),
+         ctx, onode, off, len, std::move(bl),
          fadvise_flags);
       }
       case Transaction::OP_TRUNCATE:
       {
         uint64_t off = op->off;
         DEBUGT("op TRUNCATE, oid={}, 0x{:x} ...", *ctx.transaction, oid, off);
-        return _truncate(ctx, onodes[op->oid], off);
+        return _truncate(ctx, onode, off);
       }
       case Transaction::OP_SETATTR:
       {
@@ -1876,7 +1878,7 @@ SeaStore::Shard::_do_transaction_step(
         i.decode_bl(bl);
         DEBUGT("op SETATTR, oid={}, attr name={}, value length=0x{:x} ...",
                *ctx.transaction, oid, name, bl.length());
-        return _setattrs(ctx, onodes[op->oid], std::move(to_set));
+        return _setattrs(ctx, onode, std::move(to_set));
       }
       case Transaction::OP_SETATTRS:
       {
@@ -1884,28 +1886,31 @@ SeaStore::Shard::_do_transaction_step(
         i.decode_attrset(to_set);
         DEBUGT("op SETATTRS, oid={}, attrs size={} ...",
                *ctx.transaction, oid, to_set.size());
-        return _setattrs(ctx, onodes[op->oid], std::move(to_set));
+        return _setattrs(ctx, onode, std::move(to_set));
       }
       case Transaction::OP_RMATTR:
       {
         std::string name = i.decode_string();
         DEBUGT("op RMATTR, oid={}, attr name={} ...",
                *ctx.transaction, oid, name);
-        return _rmattr(ctx, onodes[op->oid], name);
+        return _rmattr(ctx, onode, name);
       }
       case Transaction::OP_RMATTRS:
       {
         DEBUGT("op RMATTRS, oid={} ...", *ctx.transaction, oid);
-        return _rmattrs(ctx, onodes[op->oid]);
+        return _rmattrs(ctx, onode);
       }
       case Transaction::OP_OMAP_SETKEYS:
       {
         std::map<std::string, ceph::bufferlist> aset;
         i.decode_attrset(aset);
-       const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+       const omap_root_le_t &root = select_log_omap_root(*onode);
         DEBUGT("op OMAP_SETKEYS, oid={}, omap size={}, type={} ...",
                *ctx.transaction, oid, aset.size(), root.get_type());
-        return _omap_set_values(ctx, onodes[op->oid], std::move(aset),
+        return _omap_set_values(
+          ctx,
+          onode,
+          std::move(aset),
          root);
       }
       case Transaction::OP_OMAP_SETHEADER:
@@ -1914,34 +1919,39 @@ SeaStore::Shard::_do_transaction_step(
         i.decode_bl(bl);
         DEBUGT("op OMAP_SETHEADER, oid={}, length=0x{:x} ...",
                *ctx.transaction, oid, bl.length());
-        return _omap_set_header(ctx, onodes[op->oid], std::move(bl));
+        return _omap_set_header(ctx, onode, std::move(bl));
       }
       case Transaction::OP_OMAP_RMKEYS:
       {
         omap_keys_t keys;
         i.decode_keyset(keys);
-       const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+       const omap_root_le_t &root = select_log_omap_root(*onode);
         DEBUGT("op OMAP_RMKEYS, oid={}, omap size={}, type={} ...",
                *ctx.transaction, oid, keys.size(), root.get_type());
-        return _omap_rmkeys(ctx, onodes[op->oid], std::move(keys), root);
+        return _omap_rmkeys(
+          ctx,
+          onode,
+          std::move(keys),
+         root);
       }
       case Transaction::OP_OMAP_RMKEYRANGE:
       {
         std::string first, last;
         first = i.decode_string();
         last = i.decode_string();
-       const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+       const omap_root_le_t &root = select_log_omap_root(*onode);
         DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={}, type={}...",
                *ctx.transaction, oid, first, last, root.get_type());
         return _omap_rmkeyrange(
-         ctx, onodes[op->oid],
-         std::move(first), std::move(last),
+          ctx,
+          onode,
+          std::move(first), std::move(last),
          root);
       }
       case Transaction::OP_OMAP_CLEAR:
       {
         DEBUGT("op OMAP_CLEAR, oid={} ...", *ctx.transaction, oid);
-        return _omap_clear(ctx, onodes[op->oid]);
+        return _omap_clear(ctx, onode);
       }
       case Transaction::OP_ZERO:
       {
@@ -1949,7 +1959,7 @@ SeaStore::Shard::_do_transaction_step(
         extent_len_t len = op->len;
         DEBUGT("op ZERO, oid={}, 0x{:x}~0x{:x} ...",
                *ctx.transaction, oid, off, len);
-        return _zero(ctx, onodes[op->oid], off, len);
+        return _zero(ctx, onode, off, len);
       }
       case Transaction::OP_SETALLOCHINT:
       {
@@ -1978,7 +1988,7 @@ SeaStore::Shard::_do_transaction_step(
       {
         DEBUGT("op CLONE, oid={}, dest oid={} ...",
                *ctx.transaction, oid, i.get_oid(op->dest_oid));
-       return _clone(ctx, onodes[op->oid], onodes[op->dest_oid]);
+       return _clone(ctx, onode, onodes[op->dest_oid]);
       }
       case Transaction::OP_COLL_MOVE_RENAME:
       {
@@ -1986,9 +1996,9 @@ SeaStore::Shard::_do_transaction_step(
                *ctx.transaction, oid, i.get_oid(op->dest_oid));
        ceph_assert(op->cid == op->dest_cid);
        return _rename(
-         ctx, onodes[op->oid], onodes[op->dest_oid]
-       ).si_then([&onodes, op] {
-         onodes[op->oid].reset();
+         ctx, onode, onodes[op->dest_oid]
+       ).si_then([&onode] {
+         onode.reset();
        });
       }
       default: