}
lgeneric_dout(this, 1) << "do_command '" << command << "' '"
<< ss.str() << dendl;
+ if (command == "assert" && _conf->debug_asok_assert_abort) {
+ assert(0 == "assert");
+ }
+ if (command == "abort" && _conf->debug_asok_assert_abort) {
+ abort();
+ }
if (command == "perfcounters_dump" || command == "1" ||
command == "perf dump") {
std::string logger;
_plugin_registry = new PluginRegistry(this);
_admin_hook = new CephContextHook(this);
+ _admin_socket->register_command("assert", "assert", _admin_hook, "");
+ _admin_socket->register_command("abort", "abort", _admin_hook, "");
_admin_socket->register_command("perfcounters_dump", "perfcounters_dump", _admin_hook, "");
_admin_socket->register_command("1", "1", _admin_hook, "");
_admin_socket->register_command("perf dump", "perf dump name=logger,type=CephString,req=false name=counter,type=CephString,req=false", _admin_hook, "dump perfcounters value");
OPTION(event_tracing, OPT_BOOL) // true if LTTng-UST tracepoints should be enabled
OPTION(debug_deliberately_leak_memory, OPT_BOOL)
+OPTION(debug_asok_assert_abort, OPT_BOOL)
OPTION(rgw_swift_custom_header, OPT_STR) // option to enable swift custom headers
Option("debug_asserts_on_shutdown", Option::TYPE_BOOL,Option::LEVEL_DEV)
.set_default(false)
.set_description("Enable certain asserts to check for refcounting bugs on shutdown; see http://tracker.ceph.com/issues/21738"),
+
+ Option("debug_asok_assert_abort", Option::TYPE_BOOL, Option::LEVEL_DEV)
+ .set_default(false)
+ .set_description("allow commands 'assert' and 'abort' via asok for testing crash dumps etc"),
});
}
crash dir = $CEPH_OUT_DIR
enable experimental unrecoverable data corrupting features = *
osd_crush_chooseleaf_type = 0
+ debug asok assert abort = true
$extra_conf
EOF
if [ "$lockdep" -eq 1 ] ; then