From: David Zafman Date: Thu, 25 May 2017 17:37:00 +0000 (-0700) Subject: osd debug: Add testing support by adding random read error only when building push ops X-Git-Tag: ses5-milestone8~1^2~19^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=af34e78cc594a0cfb0805c99938f3784a0716b1e;p=ceph.git osd debug: Add testing support by adding random read error only when building push ops add osd_debug_random_push_read_error config option Signed-off-by: David Zafman --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index 9d3a418fa330..c152bf085759 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -897,6 +897,7 @@ OPTION(osd_debug_reject_backfill_probability, OPT_DOUBLE, 0) OPTION(osd_debug_inject_copyfrom_error, OPT_BOOL, false) // inject failure during copyfrom completion OPTION(osd_debug_misdirected_ops, OPT_BOOL, false) OPTION(osd_debug_skip_full_check_in_recovery, OPT_BOOL, false) +OPTION(osd_debug_random_push_read_error, OPT_DOUBLE, 0) OPTION(osd_debug_verify_cached_snaps, OPT_BOOL, false) OPTION(osd_enable_op_tracker, OPT_BOOL, true) // enable/disable OSD op tracking OPTION(osd_num_op_tracker_shard, OPT_U32, 32) // The number of shards for holding the ops diff --git a/src/osd/ReplicatedBackend.cc b/src/osd/ReplicatedBackend.cc index 4e9ea976f29e..591e8a4c1ed3 100644 --- a/src/osd/ReplicatedBackend.cc +++ b/src/osd/ReplicatedBackend.cc @@ -2038,6 +2038,11 @@ int ReplicatedBackend::build_push_op(const ObjectRecoveryInfo &recovery_info, int r = store->read(ch, ghobject_t(recovery_info.soid), p.get_start(), p.get_len(), bit, cache_dont_need ? CEPH_OSD_OP_FLAG_FADVISE_DONTNEED: 0); + if (cct->_conf->osd_debug_random_push_read_error && + (rand() % (int)(cct->_conf->osd_debug_random_push_read_error * 100.0)) == 0) { + dout(0) << __func__ << ": inject EIO " << recovery_info.soid << dendl; + r = -EIO; + } if (r < 0) { return r; }