]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph_test_objectstore: occasional umount/fsck/mount
authorSage Weil <sage@redhat.com>
Thu, 1 Sep 2016 21:44:22 +0000 (17:44 -0400)
committerSage Weil <sage@redhat.com>
Tue, 6 Sep 2016 21:58:38 +0000 (17:58 -0400)
Signed-off-by: Sage Weil <sage@redhat.com>
src/test/objectstore/store_test.cc

index 5a423a19b399a76e169f9f514b3748f5f471707f..1fdac1235905cf3961eed7160dc5fed1408b76f3 100644 (file)
@@ -3560,6 +3560,20 @@ public:
     return status;
   }
 
+  void fsck() {
+    Mutex::Locker locker(lock);
+    EnterExit ee("fsck");
+    while (in_flight)
+      cond.Wait(lock);
+    store->umount();
+    // fixme: this is bluestore specific, but...
+    if (!g_conf->bluestore_fsck_on_mount &&
+       !g_conf->bluestore_fsck_on_umount) {
+      store->fsck();
+    }
+    store->mount();
+  }
+
   void scan() {
     Mutex::Locker locker(lock);
     EnterExit ee("scan");
@@ -3726,23 +3740,25 @@ void doSyntheticTest(boost::scoped_ptr<ObjectStore>& store,
       cerr << "Op " << i << std::endl;
       test_obj.print_internal_state();
     }
-    boost::uniform_int<> true_false(0, 99);
+    boost::uniform_int<> true_false(0, 999);
     int val = true_false(rng);
-    if (val > 97) {
+    if (val > 998) {
+      test_obj.fsck();
+    } else if (val > 970) {
       test_obj.scan();
-    } else if (val > 95) {
+    } else if (val > 950) {
       test_obj.stat();
-    } else if (val > 85) {
+    } else if (val > 850) {
       test_obj.zero();
-    } else if (val > 80) {
+    } else if (val > 800) {
       test_obj.unlink();
-    } else if (val > 55) {
+    } else if (val > 550) {
       test_obj.write();
-    } else if (val > 50) {
+    } else if (val > 500) {
       test_obj.clone();
-    } else if (val > 30) {
+    } else if (val > 300) {
       test_obj.stash();
-    } else if (val > 10) {
+    } else if (val > 100) {
       test_obj.read();
     } else {
       test_obj.truncate();