From: Joao Eduardo Luis Date: Mon, 20 Apr 2015 22:37:57 +0000 (+0100) Subject: mon: Monitor: inject scrub failures X-Git-Tag: v9.0.3~18^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ba4a2c1aa32853c98afb796f5e59151529f1ef7e;p=ceph.git mon: Monitor: inject scrub failures Signed-off-by: Joao Eduardo Luis --- diff --git a/src/common/config_opts.h b/src/common/config_opts.h index ee08e0ea78b6..828919f9161e 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -245,6 +245,7 @@ OPTION(mon_data_avail_warn, OPT_INT, 30) OPTION(mon_data_size_warn, OPT_U64, 15*1024*1024*1024) // issue a warning when the monitor's data store goes over 15GB (in bytes) OPTION(mon_scrub_interval, OPT_INT, 3600*24) // once a day OPTION(mon_scrub_max_keys, OPT_INT, 100) // max number of keys to scrub each time +OPTION(mon_scrub_inject_crc_mismatch, OPT_DOUBLE, 0.0) // probability of injected crc mismatch [0.0, 1.0] OPTION(mon_config_key_max_entry_size, OPT_INT, 4096) // max num bytes per config-key entry OPTION(mon_sync_timeout, OPT_DOUBLE, 60.0) OPTION(mon_sync_max_payload_size, OPT_U32, 1048576) // max size for a sync chunk payload (say, 1MB) diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index a5e623d04bbb..ddf87acbd072 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -4339,6 +4339,12 @@ bool Monitor::_scrub(ScrubResult *r, r->prefix_crc[k.first] = 0; r->prefix_crc[k.first] = bl.crc32c(r->prefix_crc[k.first]); + if (cct->_conf->mon_scrub_inject_crc_mismatch > 0.0 && + (rand() % 10000 < cct->_conf->mon_scrub_inject_crc_mismatch*10000.0)) { + dout(10) << __func__ << " inject failure at (" << k << ")" << dendl; + r->prefix_crc[k.first] += 1; + } + ++scrubbed_keys; last_key = k; }