From: Kefu Chai Date: Sun, 30 Dec 2018 13:57:04 +0000 (+0800) Subject: osd: unlock osd_lock when tweaking osd settings X-Git-Tag: v14.1.0~528^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25726%2Fhead;p=ceph.git 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 --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 2276a909f742..d3f8c4fc7076 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 "