From df796fd86ff1dd6759b9b3da8fd27a6364d4c516 Mon Sep 17 00:00:00 2001 From: Adam Kupczyk Date: Sat, 30 Jan 2021 12:57:05 +0100 Subject: [PATCH] os/bluestore: Add option to check BlueFS reads Add option "bluefs_check_for_zeros" to check if there are any zero-filled page. If so, reread data. It is known that sometimes BlueStore gets such pages. See "bluestore_retry_disk_reads". Signed-off-by: Adam Kupczyk (cherry picked from commit 7e495c57fe0ec8d8bdb1dbff90b177e656a22cbe) Conflicts: (lack of fresh stuff in bufferlist) src/os/bluestore/BlueFS.cc --- src/common/legacy_config_opts.h | 1 + src/common/options.cc | 8 ++ src/os/bluestore/BlueFS.cc | 172 +++++++++++++++++++++++++++++++- src/os/bluestore/BlueFS.h | 11 ++ 4 files changed, 188 insertions(+), 4 deletions(-) diff --git a/src/common/legacy_config_opts.h b/src/common/legacy_config_opts.h index 430ef684848..72461272593 100644 --- a/src/common/legacy_config_opts.h +++ b/src/common/legacy_config_opts.h @@ -955,6 +955,7 @@ OPTION(bluefs_allocator, OPT_STR) // stupid | bitmap OPTION(bluefs_preextend_wal_files, OPT_BOOL) // this *requires* that rocksdb has recycling enabled OPTION(bluefs_replay_recovery, OPT_BOOL) OPTION(bluefs_replay_recovery_disable_compact, OPT_BOOL) +OPTION(bluefs_check_for_zeros, OPT_BOOL) OPTION(bluestore_bluefs, OPT_BOOL) OPTION(bluestore_bluefs_env_mirror, OPT_BOOL) // mirror to normal Env for debug diff --git a/src/common/options.cc b/src/common/options.cc index c0c9f06ab17..c160e7f6066 100644 --- a/src/common/options.cc +++ b/src/common/options.cc @@ -4414,6 +4414,14 @@ std::vector