]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/KernelDevice: hack to inject bad device size
authorSage Weil <sage@redhat.com>
Thu, 14 Sep 2017 03:03:07 +0000 (23:03 -0400)
committerSage Weil <sage@redhat.com>
Thu, 14 Sep 2017 14:03:11 +0000 (10:03 -0400)
This conditionally reintroduces bug http://tracker.ceph.com/issues/21089,
fixed by f6f1ae3724d593d3709d982c973ec18a25a47b6e, to aid in testing
repair.

Signed-off-by: Sage Weil <sage@redhat.com>
src/common/options.cc
src/os/bluestore/KernelDevice.cc

index 0e267af0336d8a7e40bdfee6c8268219d937fa86..40d9454223567081cf8fffd0fd3cf9783162ea7d 100644 (file)
@@ -3002,6 +3002,10 @@ std::vector<Option> get_global_options() {
     // --------------------------
     // bluestore
 
+    Option("bdev_inject_bad_size", Option::TYPE_BOOL, Option::LEVEL_DEV)
+    .set_default(false)
+    .set_description(""),
+
     Option("bdev_debug_inflight_ios", Option::TYPE_BOOL, Option::LEVEL_DEV)
     .set_default(false)
     .set_description(""),
index 3ae5be1ea1e0847b63a882142ac3bba81e0a7e3e..420b59d55f936d83b72a67eeef757e684cc301f2 100644 (file)
@@ -130,6 +130,11 @@ int KernelDevice::open(const string& p)
   } else {
     size = st.st_size;
   }
+  if (cct->_conf->get_val<bool>("bdev_inject_bad_size")) {
+    derr << "injecting bad size; actual 0x" << std::hex << size
+        << " but using 0x" << (size & ~block_size) << std::dec << dendl;
+    size &= ~(block_size);
+  }
 
   {
     char partition[PATH_MAX], devname[PATH_MAX];