From 659fcd279ae82c90172fd6ca07a032d75fe50c96 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 7 Sep 2017 12:29:32 -0400 Subject: [PATCH] os/bluestore: allow repair invocation Signed-off-by: Sage Weil --- src/os/bluestore/BlueStore.cc | 12 ++++++++---- src/os/bluestore/BlueStore.h | 8 +++++++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 1bbba5ede3a..04de42e5b1b 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -5481,10 +5481,13 @@ int BlueStore::_fsck_check_extents( return errors; } -int BlueStore::fsck(bool deep) +int BlueStore::_fsck(bool deep, bool repair) { - dout(1) << __func__ << (deep ? " (deep)" : " (shallow)") << " start" << dendl; + dout(1) << __func__ + << (repair ? " fsck" : " repair") + << (deep ? " (deep)" : " (shallow)") << " start" << dendl; int errors = 0; + int repaired = 0; typedef btree::btree_set< uint64_t,std::less, @@ -6071,9 +6074,10 @@ int BlueStore::fsck(bool deep) << dendl; utime_t duration = ceph_clock_now() - start; - dout(1) << __func__ << " finish with " << errors << " errors in " + dout(1) << __func__ << " finish with " << errors << " errors, " << repaired + << " repaired, " << (errors - repaired) << " remaining in " << duration << " seconds" << dendl; - return errors; + return errors - repaired; } void BlueStore::collect_metadata(map *pm) diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 218124e66a4..4dd75d4fd65 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -2144,7 +2144,13 @@ public: return 0; } - int fsck(bool deep) override; + int fsck(bool deep) override { + return _fsck(deep, false); + } + int repair(bool deep) override { + return _fsck(deep, true); + } + int _fsck(bool deep, bool repair); void set_cache_shards(unsigned num) override; -- 2.39.5