From: David Zafman Date: Thu, 30 Apr 2015 17:20:24 +0000 (-0700) Subject: osd: Add admin socket feature set_recovery_delay X-Git-Tag: v9.0.2~168^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=73b17319379d904ffdf9479ca476da8e8e34e935;p=ceph.git osd: Add admin socket feature set_recovery_delay Set the value of osd_recovery_delay_start to specified seconds Signed-off-by: David Zafman --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 88b08e556055b..f15bf07f2ea28 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -2019,6 +2019,13 @@ void OSD::final_init() test_ops_hook, "inject metadata error"); assert(r == 0); + r = admin_socket->register_command( + "set_recovery_delay", + "set_recovery_delay " \ + "name=utime,type=CephInt,req=false", + test_ops_hook, + "Delay osd recovery by specified seconds"); + assert(r == 0); } void OSD::create_logger() @@ -2276,6 +2283,7 @@ int OSD::shutdown() cct->get_admin_socket()->unregister_command("truncobj"); cct->get_admin_socket()->unregister_command("injectdataerr"); cct->get_admin_socket()->unregister_command("injectmdataerr"); + cct->get_admin_socket()->unregister_command("set_recovery_delay"); delete test_ops_hook; test_ops_hook = NULL; @@ -3963,6 +3971,8 @@ void OSD::check_ops_in_flight() // truncobj [namespace/] // injectmdataerr [namespace/] [shardid] // injectdataerr [namespace/] [shardid] +// +// set_recovery_delay [utime] void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, std::string command, cmdmap_t& cmdmap, ostream &ss) { @@ -4091,6 +4101,24 @@ void TestOpsSocketHook::test_ops(OSDService *service, ObjectStore *store, } return; } + if (command == "set_recovery_delay") { + int64_t delay; + cmd_getval(service->cct, cmdmap, "utime", delay, (int64_t)0); + ostringstream oss; + oss << delay; + int r = service->cct->_conf->set_val("osd_recovery_delay_start", + oss.str().c_str()); + if (r != 0) { + ss << "set_recovery_delay: error setting " + << "osd_recovery_delay_start to '" << delay << "': error " + << r; + return; + } + service->cct->_conf->apply_changes(NULL); + ss << "set_recovery_delay: set osd_recovery_delay_start " + << "to " << service->cct->_conf->osd_recovery_delay_start; + return; + } ss << "Internal error - command=" << command; return; }