os/bluestore: handle spurious read errors
Some kernels (4.9+) sometime fail to return data when reading
from a block device under memory pressure. This patch retries
the read if the checksum verification fails, tests show that
the first retried read succeeds in ~99.5% of the cases, so
3 attempts are made by default before giving up on the data.
Works-around: http://tracker.ceph.com/issues/22464
Signed-off-by: Paul Emmerich <paul.emmerich@croit.io>
(cherry picked from commit
cffcbc73aaaa874829d5fc9091af3042b887f9a7)
Conflicts:
src/common/legacy_config_opts.h
- adjacent options
src/common/options.cc
- no RUNTIME flag in luminous
src/os/bluestore/BlueStore.cc
src/os/bluestore/BlueStore.h
- adjacent perfcounter
src/test/objectstore/store_test.cc
- adjacent tests, no #ifdef
- g_conf, not g_conf()
- no create_new_collection
- queue_transaction etc take osr, not ch