]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/memstore, crimson/os: introduce memstore_debug_omit_block_device_write. 28601/head
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Thu, 6 Jun 2019 20:06:58 +0000 (22:06 +0200)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 17 Jun 2019 14:41:12 +0000 (16:41 +0200)
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/common/legacy_config_opts.h
src/common/options.cc
src/crimson/os/cyan_store.cc
src/os/memstore/MemStore.cc

index 305ec25ed3f8e4d976eb339f4f6931c1638a4af5..704059a833e5e40581868a199979484a9b4d7594 100644 (file)
@@ -891,6 +891,7 @@ OPTION(osd_discard_disconnected_ops, OPT_BOOL)
 OPTION(memstore_device_bytes, OPT_U64)
 OPTION(memstore_page_set, OPT_BOOL)
 OPTION(memstore_page_size, OPT_U64)
+OPTION(memstore_debug_omit_block_device_write, OPT_BOOL)
 
 OPTION(bdev_debug_inflight_ios, OPT_BOOL)
 OPTION(bdev_inject_crash, OPT_INT)  // if N>0, then ~ 1/N IOs will complete before we crash on flush.
index 7fe98fa7c1ffd713b4fb4866aa49ed53d6c5001b..9a1eefd31f43d971f3e31067605662b5739ff15e 100644 (file)
@@ -4107,6 +4107,11 @@ std::vector<Option> get_global_options() {
     .set_default(64_K)
     .set_description(""),
 
+    Option("memstore_debug_omit_block_device_write", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .add_see_also("bluestore_debug_omit_block_device_write")
+    .set_description("write metadata only"),
+
     Option("objectstore_blackhole", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
     .set_default(false)
     .set_description(""),
index 2486c53521464b1e61215b94494ad93d8904108b..60f73a419b4accff43ae157dd722741243953968 100644 (file)
@@ -15,6 +15,8 @@ namespace {
   }
 }
 
+using ceph::common::local_conf;
+
 namespace ceph::os {
 
 using ObjectRef = boost::intrusive_ptr<Object>;
@@ -346,7 +348,7 @@ int CyanStore::_write(const coll_t& cid, const ghobject_t& oid,
     return -ENOENT;
 
   ObjectRef o = c->get_or_create_object(oid);
-  if (len > 0) {
+  if (len > 0 && !local_conf()->memstore_debug_omit_block_device_write) {
     const ssize_t old_size = o->get_size();
     o->write(offset, bl);
     used_bytes += (o->get_size() - old_size);
@@ -366,6 +368,8 @@ int CyanStore::_truncate(const coll_t& cid, const ghobject_t& oid, uint64_t size
   ObjectRef o = c->get_object(oid);
   if (!o)
     return -ENOENT;
+  if (local_conf()->memstore_debug_omit_block_device_write)
+    return 0;
   const ssize_t old_size = o->get_size();
   int r = o->truncate(size);
   used_bytes += (o->get_size() - old_size);
index dc1d5ff55abb567912b8caba3bf86a1194659fc0..ee60b1556b07b3731a2a7cf8085e6fadc3804dea 100644 (file)
@@ -1045,7 +1045,7 @@ int MemStore::_write(const coll_t& cid, const ghobject_t& oid,
     return -ENOENT;
 
   ObjectRef o = c->get_or_create_object(oid);
-  if (len > 0) {
+  if (len > 0 && !cct->_conf->memstore_debug_omit_block_device_write) {
     const ssize_t old_size = o->get_size();
     o->write(offset, bl);
     used_bytes += (o->get_size() - old_size);
@@ -1074,6 +1074,8 @@ int MemStore::_truncate(const coll_t& cid, const ghobject_t& oid, uint64_t size)
   ObjectRef o = c->get_object(oid);
   if (!o)
     return -ENOENT;
+  if (cct->_conf->memstore_debug_omit_block_device_write)
+    return 0;
   const ssize_t old_size = o->get_size();
   int r = o->truncate(size);
   used_bytes += (o->get_size() - old_size);