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: v12.2.11~17^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F25833%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/37762 Signed-off-by: Kefu Chai (cherry picked from commit 8e94b081506fa9fbdbea09113f1549772bb6ec04) Conflicts: src/osd/OSD.cc --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index b7ca0622eca..d37da7f8d44 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6993,6 +6993,7 @@ void OSD::do_command(Connection *con, ceph_tid_t tid, vector& cmd, buffe 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 "