]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore/BlueStore: fsck_on_umount
authorSage Weil <sage@redhat.com>
Tue, 22 Dec 2015 19:02:05 +0000 (14:02 -0500)
committerSage Weil <sage@redhat.com>
Fri, 1 Jan 2016 18:07:25 +0000 (13:07 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/common/config_opts.h
src/os/bluestore/BlueStore.cc
src/test/objectstore/store_test.cc

index a667430050edb8e44145217868046b5bec574966..e4721d2c21b6bd29cf765d1e1edda062b54a2279 100644 (file)
@@ -867,6 +867,7 @@ OPTION(bluestore_cache_tails, OPT_BOOL, true)   // cache tail blocks in Onode
 OPTION(bluestore_backend, OPT_STR, "rocksdb")
 OPTION(bluestore_rocksdb_options, OPT_STR, "compression=kNoCompression,max_write_buffer_number=16,min_write_buffer_number_to_merge=3,recycle_log_file_num=16")
 OPTION(bluestore_fsck_on_mount, OPT_BOOL, false)
+OPTION(bluestore_fsck_on_umount, OPT_BOOL, false)
 OPTION(bluestore_fail_eio, OPT_BOOL, true)
 OPTION(bluestore_sync_io, OPT_BOOL, false)  // perform initial io synchronously
 OPTION(bluestore_sync_transaction, OPT_BOOL, false)  // perform kv txn synchronously
index db2f3180a8b024c1a89a9e886ecd92c79b6a4437..8ff93dd799abef1be9be0cf5ee4803b5afeb1d3d 100644 (file)
@@ -1739,6 +1739,16 @@ int BlueStore::umount()
   _close_bdev();
   _close_fsid();
   _close_path();
+
+  if (g_conf->bluestore_fsck_on_umount) {
+    int rc = fsck();
+    if (rc < 0)
+      return rc;
+    if (rc > 0) {
+      derr << __func__ << " fsck found " << rc << " errors" << dendl;
+      return -EIO;
+    }
+  }
   return 0;
 }
 
index 1341d04ae210a7b2c3bc57bb5481aded22429bb0..8727d817c82ace31e4b8cdc960de0152e7bb304a 100644 (file)
@@ -3190,6 +3190,8 @@ int main(int argc, char **argv) {
   g_ceph_context->_conf->set_val("filestore_op_thread_suicide_timeout", "10000");
   g_ceph_context->_conf->set_val("filestore_debug_disable_sharded_check", "true");
   g_ceph_context->_conf->set_val("filestore_fiemap", "true");
+  g_ceph_context->_conf->set_val("bluestore_fsck_on_mount", "true");
+  g_ceph_context->_conf->set_val("bluestore_fsck_on_umount", "true");
   g_ceph_context->_conf->set_val(
     "enable_experimental_unrecoverable_data_corrupting_features", "*");
   g_ceph_context->_conf->apply_changes(NULL);