]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: fsck() on idempotent mkfs() request
authorxie xingguo <xie.xingguo@zte.com.cn>
Fri, 7 Oct 2016 07:24:17 +0000 (15:24 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Fri, 7 Oct 2016 07:37:58 +0000 (15:37 +0800)
E.g., if the fsck() found something during the first mkfs() try,
it can still be caught by the following retry.

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/os/bluestore/BlueStore.cc

index 5a252dd684e197f58367d44176891675eaca0159..79a4f654514b0553407e798630aa26795f083f26 100644 (file)
@@ -3698,7 +3698,19 @@ int BlueStore::mkfs()
     r = read_meta("mkfs_done", &done);
     if (r == 0) {
       dout(1) << __func__ << " already created" << dendl;
-      return 0; // idempotent
+      if (g_conf->bluestore_fsck_on_mkfs) {
+        r = fsck();
+        if (r < 0) {
+          derr << __func__ << " fsck found fatal error: " << cpp_strerror(r)
+               << dendl;
+          return r;
+        }
+        if (r > 0) {
+          derr << __func__ << " fsck found " << r << " errors" << dendl;
+          r = -EIO;
+        }
+      }
+      return r; // idempotent
     }
   }
 
@@ -3707,7 +3719,7 @@ int BlueStore::mkfs()
     r = read_meta("type", &type);
     if (r == 0) {
       if (type != "bluestore") {
-       dout(1) << __func__ << " expected bluestore, but type is " << type << dendl;
+       derr << __func__ << " expected bluestore, but type is " << type << dendl;
        return -EIO;
       }
     } else {