From 8e94b081506fa9fbdbea09113f1549772bb6ec04 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Sun, 30 Dec 2018 21:57:04 +0800 Subject: [PATCH] osd: unlock osd_lock when tweaking osd settings unlock osd_lock when serving "debug kick_recovery_wq" command we need to unlock osd_lock temporarily when updating the osd settings, otherwise we will run into assert failure. because OSD::handle_conf_change() acquires the osd_lock which is not a recursive lock. Fixes: http://tracker.ceph.com/issues/37751 Signed-off-by: Kefu Chai --- src/osd/OSD.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 2276a909f74..d3f8c4fc707 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6508,6 +6508,7 @@ int OSD::_do_command( cmd_getval(cct, cmdmap, "delay", delay); ostringstream oss; oss << delay; + unlock_guard unlock{osd_lock}; r = cct->_conf.set_val("osd_recovery_delay_start", oss.str().c_str()); if (r != 0) { ss << "kick_recovery_wq: error setting " -- 2.39.5