From: xie xingguo Date: Fri, 7 Oct 2016 07:24:17 +0000 (+0800) Subject: os/bluestore: fsck() on idempotent mkfs() request X-Git-Tag: v11.1.0~705^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ff5aa939f6d82347530dae0b1e47ce1e10092e6d;p=ceph.git os/bluestore: fsck() on idempotent mkfs() request 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 --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 5a252dd684e1..79a4f654514b 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -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 {