From f615944a6fc507f9c3b953125ba0c6280ab37f69 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/37762 Signed-off-by: Kefu Chai (cherry picked from commit 8e94b081506fa9fbdbea09113f1549772bb6ec04) Conflicts: src/osd/OSD.cc --- src/osd/OSD.cc | 1 + 1 file changed, 1 insertion(+) 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 " -- 2.47.3