]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: move _dump_xxx methods out of BlueStore class
authorIgor Fedotov <ifedotov@suse.com>
Wed, 1 May 2019 13:47:20 +0000 (16:47 +0300)
committerIgor Fedotov <ifedotov@suse.com>
Wed, 1 May 2019 22:19:26 +0000 (01:19 +0300)
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h

index a558677f682c608e881a0e81c016b9865f8f6eff..269b10639ce3a6f5b4d04bec4860d153b575415e 100644 (file)
@@ -585,6 +585,74 @@ static int get_key_pool_stat(const string& key, uint64_t* pool_id)
   return 0;
 }
 
+template <int LogLevelV>
+void _dump_extent_map(CephContext *cct, const BlueStore::ExtentMap &em)
+{
+  uint64_t pos = 0;
+  for (auto& s : em.shards) {
+    dout(LogLevelV) << __func__ << "  shard " << *s.shard_info
+                   << (s.loaded ? " (loaded)" : "")
+                   << (s.dirty ? " (dirty)" : "")
+                   << dendl;
+  }
+  for (auto& e : em.extent_map) {
+    dout(LogLevelV) << __func__ << "  " << e << dendl;
+    ceph_assert(e.logical_offset >= pos);
+    pos = e.logical_offset + e.length;
+    const bluestore_blob_t& blob = e.blob->get_blob();
+    if (blob.has_csum()) {
+      vector<uint64_t> v;
+      unsigned n = blob.get_csum_count();
+      for (unsigned i = 0; i < n; ++i)
+       v.push_back(blob.get_csum_item(i));
+      dout(LogLevelV) << __func__ << "      csum: " << std::hex << v << std::dec
+                     << dendl;
+    }
+    std::lock_guard l(e.blob->shared_blob->get_cache()->lock);
+    for (auto& i : e.blob->shared_blob->bc.buffer_map) {
+      dout(LogLevelV) << __func__ << "       0x" << std::hex << i.first
+                     << "~" << i.second->length << std::dec
+                     << " " << *i.second << dendl;
+    }
+  }
+}
+
+template <int LogLevelV>
+void _dump_onode(CephContext *cct, const BlueStore::Onode& o)
+{
+  if (!cct->_conf->subsys.should_gather<ceph_subsys_bluestore, LogLevelV>())
+    return;
+  dout(LogLevelV) << __func__ << " " << &o << " " << o.oid
+                 << " nid " << o.onode.nid
+                 << " size 0x" << std::hex << o.onode.size
+                 << " (" << std::dec << o.onode.size << ")"
+                 << " expected_object_size " << o.onode.expected_object_size
+                 << " expected_write_size " << o.onode.expected_write_size
+                 << " in " << o.onode.extent_map_shards.size() << " shards"
+                 << ", " << o.extent_map.spanning_blob_map.size()
+                 << " spanning blobs"
+                 << dendl;
+  for (auto p = o.onode.attrs.begin();
+       p != o.onode.attrs.end();
+       ++p) {
+    dout(LogLevelV) << __func__ << "  attr " << p->first
+                   << " len " << p->second.length() << dendl;
+  }
+  _dump_extent_map<LogLevelV>(cct, o.extent_map);
+}
+
+template <int LogLevelV>
+void _dump_transaction(CephContext *cct, ObjectStore::Transaction *t)
+{
+  dout(LogLevelV) << __func__ << " transaction dump:\n";
+  JSONFormatter f(true);
+  f.open_object_section("transaction");
+  t->dump(&f);
+  f.close_section();
+  f.flush(*_dout);
+  *_dout << dendl;
+}
+
 // merge operators
 
 struct Int64ArrayMergeOperator : public KeyValueDB::MergeOperator {
@@ -7082,7 +7150,7 @@ int BlueStore::_fsck(bool deep, bool repair)
       ++num_objects;
       num_spanning_blobs += o->extent_map.spanning_blob_map.size();
       o->extent_map.fault_range(db, 0, OBJECT_MAX_SIZE);
-      _dump_onode(o);
+      _dump_onode<30>(cct, *o);
       // shards
       if (!o->extent_map.shards.empty()) {
        ++num_sharded_objects;
@@ -7436,7 +7504,7 @@ int BlueStore::_fsck(bool deep, bool repair)
            if (misref_extents.intersects(e.offset, e.length)) {
              if (first_dump) {
                first_dump = false;
-               _dump_onode<10>(o);
+               _dump_onode<10>(cct, *o);
              }
              broken_blob = true;
              break;
@@ -8435,7 +8503,7 @@ int BlueStore::_do_read(
   auto start = mono_clock::now();
   o->extent_map.fault_range(db, offset, length);
   LOG_LATENCY(logger, cct, l_bluestore_read_onode_meta_lat, mono_clock::now() - start);
-  _dump_onode(o);
+  _dump_onode<30>(cct, *o);
 
   ready_regions_t ready_regions;
 
@@ -8836,7 +8904,7 @@ int BlueStore::_fiemap(
     if (!o || !o->exists) {
       return -ENOENT;
     }
-    _dump_onode(o);
+    _dump_onode<30>(cct, *o);
 
     dout(20) << __func__ << " 0x" << std::hex << offset << "~" << length
             << " size 0x" << o->onode.size << std::dec << dendl;
@@ -8942,7 +9010,7 @@ int BlueStore::dump_onode(CollectionHandle &c_,
     //
     o->extent_map.fault_range(db, 0, OBJECT_MAX_SIZE);
 
-    _dump_onode<0>(o);
+    _dump_onode<0>(cct, *o);
     f->open_object_section(section_name.c_str());
     o->dump(f);
     f->close_section();
@@ -10941,7 +11009,7 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t)
 {
   Transaction::iterator i = t->begin();
 
-  _dump_transaction(t);
+  _dump_transaction<30>(cct, t);
 
   vector<CollectionRef> cvec(i.colls.size());
   unsigned j = 0;
@@ -11054,7 +11122,7 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t)
       derr << __func__ << " error " << cpp_strerror(r)
            << " not handled on operation " << op->op
            << " (op " << pos << ", counting from 0)" << dendl;
-      _dump_transaction<0>(t);
+      _dump_transaction<0>(cct, t);
       ceph_abort_msg("unexpected error");
     }
 
@@ -11298,7 +11366,7 @@ void BlueStore::_txc_add_transaction(TransContext *txc, Transaction *t)
              << " (op " << pos << ", counting from 0)"
              << dendl;
         derr << msg << dendl;
-        _dump_transaction<0>(t);
+        _dump_transaction<0>(cct, t);
        ceph_abort_msg("unexpected error");
       }
     }
@@ -11322,74 +11390,6 @@ int BlueStore::_touch(TransContext *txc,
   return r;
 }
 
-template <int LogLevelV>
-void BlueStore::_dump_onode(const OnodeRef& o)
-{
-  if (!cct->_conf->subsys.should_gather<ceph_subsys_bluestore, LogLevelV>())
-    return;
-  dout(LogLevelV) << __func__ << " " << o << " " << o->oid
-                 << " nid " << o->onode.nid
-                 << " size 0x" << std::hex << o->onode.size
-                 << " (" << std::dec << o->onode.size << ")"
-                 << " expected_object_size " << o->onode.expected_object_size
-                 << " expected_write_size " << o->onode.expected_write_size
-                 << " in " << o->onode.extent_map_shards.size() << " shards"
-                 << ", " << o->extent_map.spanning_blob_map.size()
-                 << " spanning blobs"
-                 << dendl;
-  for (auto p = o->onode.attrs.begin();
-       p != o->onode.attrs.end();
-       ++p) {
-    dout(LogLevelV) << __func__ << "  attr " << p->first
-                   << " len " << p->second.length() << dendl;
-  }
-  _dump_extent_map<LogLevelV>(o->extent_map);
-}
-
-template <int LogLevelV>
-void BlueStore::_dump_extent_map(ExtentMap &em)
-{
-  uint64_t pos = 0;
-  for (auto& s : em.shards) {
-    dout(LogLevelV) << __func__ << "  shard " << *s.shard_info
-                   << (s.loaded ? " (loaded)" : "")
-                   << (s.dirty ? " (dirty)" : "")
-                   << dendl;
-  }
-  for (auto& e : em.extent_map) {
-    dout(LogLevelV) << __func__ << "  " << e << dendl;
-    ceph_assert(e.logical_offset >= pos);
-    pos = e.logical_offset + e.length;
-    const bluestore_blob_t& blob = e.blob->get_blob();
-    if (blob.has_csum()) {
-      vector<uint64_t> v;
-      unsigned n = blob.get_csum_count();
-      for (unsigned i = 0; i < n; ++i)
-       v.push_back(blob.get_csum_item(i));
-      dout(LogLevelV) << __func__ << "      csum: " << std::hex << v << std::dec
-                     << dendl;
-    }
-    std::lock_guard l(e.blob->shared_blob->get_cache()->lock);
-    for (auto& i : e.blob->shared_blob->bc.buffer_map) {
-      dout(LogLevelV) << __func__ << "       0x" << std::hex << i.first
-                     << "~" << i.second->length << std::dec
-                     << " " << *i.second << dendl;
-    }
-  }
-}
-
-template <int LogLevelV>
-void BlueStore::_dump_transaction(Transaction *t)
-{
-  dout(LogLevelV) << __func__ << " transaction dump:\n";
-  JSONFormatter f(true);
-  f.open_object_section("transaction");
-  t->dump(&f);
-  f.close_section();
-  f.flush(*_dout);
-  *_dout << dendl;
-}
-
 void BlueStore::_pad_zeros(
   bufferlist *bl, uint64_t *offset,
   uint64_t chunk_size)
@@ -12441,7 +12441,7 @@ int BlueStore::_do_write(
           << " bytes"
           << " fadvise_flags 0x" << std::hex << fadvise_flags << std::dec
           << dendl;
-  _dump_onode(o);
+  _dump_onode<30>(cct, *o);
 
   if (length == 0) {
     return 0;
@@ -12558,7 +12558,7 @@ int BlueStore::_do_zero(TransContext *txc,
           << dendl;
   int r = 0;
 
-  _dump_onode(o);
+  _dump_onode<30>(cct, *o);
 
   WriteContext wctx;
   o->extent_map.fault_range(db, offset, length);
@@ -12586,7 +12586,7 @@ void BlueStore::_do_truncate(
   dout(15) << __func__ << " " << c->cid << " " << o->oid
           << " 0x" << std::hex << offset << std::dec << dendl;
 
-  _dump_onode(o);
+  _dump_onode<30>(cct, *o);
 
   if (offset == o->onode.size)
     return;
@@ -13130,12 +13130,12 @@ int BlueStore::_do_clone_range(
           << " 0x" << dstoff << "~" << length << std::dec << dendl;
   oldo->extent_map.fault_range(db, srcoff, length);
   newo->extent_map.fault_range(db, dstoff, length);
-  _dump_onode(oldo);
-  _dump_onode(newo);
+  _dump_onode<30>(cct, *oldo);
+  _dump_onode<30>(cct, *newo);
 
   oldo->extent_map.dup(this, txc, c, oldo, newo, srcoff, length, dstoff);
-  _dump_onode(oldo);
-  _dump_onode(newo);
+  _dump_onode<30>(cct, *oldo);
+  _dump_onode<30>(cct, *newo);
   return 0;
 }
 
index 60690973961bbc51c09ebf4d97621a84a3741596..b74a873cd5241982b8c38ba2cc3c6330ac055497 100644 (file)
@@ -2259,9 +2259,12 @@ private:
   void _assign_nid(TransContext *txc, OnodeRef o);
   uint64_t _assign_blobid(TransContext *txc);
 
-  template <int LogLevelV = 30> void _dump_onode(const OnodeRef& o);
-  template <int LogLevelV = 30> void _dump_extent_map(ExtentMap& em);
-  template <int LogLevelV = 30> void _dump_transaction(Transaction *t);
+  template <int LogLevelV>
+  friend void _dump_onode(CephContext *cct, const Onode& o);
+  template <int LogLevelV>
+  friend void _dump_extent_map(CephContext *cct, const ExtentMap& em);
+  template <int LogLevelV>
+  friend void _dump_transaction(CephContext *cct, Transaction *t);
 
   TransContext *_txc_create(Collection *c, OpSequencer *osr,
                            list<Context*> *on_commits);