]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
src/crimson/os/seastore: add logs to track log-related OPs in transaction
authormyoungwon oh <ohmyoungwon@gmail.com>
Tue, 3 Dec 2024 06:20:20 +0000 (06:20 +0000)
committermyoungwon oh <ohmyoungwon@gmail.com>
Thu, 20 Feb 2025 12:28:37 +0000 (12:28 +0000)
Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
src/crimson/os/seastore/seastore.cc
src/crimson/os/seastore/seastore_types.cc
src/crimson/os/seastore/seastore_types.h

index 8abd6a39f7f42097c23112547817d4c4757d715e..284748250e12b1d47b6c186493bce219361401e3 100644 (file)
@@ -1537,7 +1537,8 @@ SeaStore::Shard::do_omap_get_values(
   const omap_root_le_t& omap_root)
 {
   LOG_PREFIX(SeaStoreS::do_omap_get_values);
-  DEBUGT("start={} ...", t, start.has_value() ? *start : "");
+  DEBUGT("start={} type={} ...", t, start.has_value() ? *start : "",
+    omap_root.get_type());
   return omap_list(
     onode,
     omap_root,
@@ -1906,9 +1907,9 @@ SeaStore::Shard::_do_transaction_step(
       {
         std::map<std::string, ceph::bufferlist> aset;
         i.decode_attrset(aset);
-        DEBUGT("op OMAP_SETKEYS, oid={}, omap size={} ...",
-               *ctx.transaction, oid, aset.size());
        const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+        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),
          root);
       }
@@ -1924,9 +1925,9 @@ SeaStore::Shard::_do_transaction_step(
       {
         omap_keys_t keys;
         i.decode_keyset(keys);
-        DEBUGT("op OMAP_RMKEYS, oid={}, omap size={} ...",
-               *ctx.transaction, oid, keys.size());
        const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+        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);
       }
       case Transaction::OP_OMAP_RMKEYRANGE:
@@ -1934,9 +1935,9 @@ SeaStore::Shard::_do_transaction_step(
         std::string first, last;
         first = i.decode_string();
         last = i.decode_string();
-        DEBUGT("op OMAP_RMKEYRANGE, oid={}, first={}, last={} ...",
-               *ctx.transaction, oid, first, last);
        const omap_root_le_t &root = select_log_omap_root(*onodes[op->oid]);
+        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),
index a57f56d4ab4571c85973ddfdc45f42724ad18c7f..24fb135cfa5851e5f2834a20da51b023304dc0e1 100644 (file)
@@ -1116,4 +1116,18 @@ std::ostream& operator<<(std::ostream& out, const cache_access_stats_printer_t&
   return out;
 }
 
+std::ostream& operator<<(std::ostream& out, const omap_type_t& t)
+{
+  switch(t) {
+  case omap_type_t::XATTR:
+    return out << "XATTR";
+  case omap_type_t::OMAP:
+    return out << "OMAP";
+  case omap_type_t::LOG:
+    return out << "LOG";
+  default:
+    return out << "INVALID_OMAP_TYPE!";
+  }
+}
+
 } // namespace crimson::os::seastore
index fceca0c997cdcf3bd9042e21d072d024f76cdcda..15ca4e57118268a049854d0f18d44fd72f87021d 100644 (file)
@@ -1795,6 +1795,7 @@ enum class omap_type_t : uint8_t {
   LOG,
   NUM_TYPES
 };
+std::ostream &operator<<(std::ostream &out, const omap_type_t &type);
 
 struct omap_root_t {
   laddr_t addr = L_ADDR_NULL;
@@ -1876,6 +1877,10 @@ public:
   omap_root_t get(laddr_t hint) const {
     return omap_root_t(addr, depth, hint, type);
   }
+  
+  omap_type_t get_type() const {
+    return type;
+  }
 };
 
 /**
@@ -3130,5 +3135,6 @@ template <> struct fmt::formatter<crimson::os::seastore::segment_tail_t> : fmt::
 template <> struct fmt::formatter<crimson::os::seastore::segment_type_t> : fmt::ostream_formatter {};
 template <> struct fmt::formatter<crimson::os::seastore::transaction_type_t> : fmt::ostream_formatter {};
 template <> struct fmt::formatter<crimson::os::seastore::write_result_t> : fmt::ostream_formatter {};
+template <> struct fmt::formatter<crimson::os::seastore::omap_type_t> : fmt::ostream_formatter {};
 template <> struct fmt::formatter<ceph::buffer::list> : fmt::ostream_formatter {};
 #endif