From: Benoît Knecht Date: Mon, 6 Dec 2021 08:14:56 +0000 (+0100) Subject: mon: Abort device health when device not found X-Git-Tag: v17.1.0~108^2~1 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c05a3b769dccf5fe839a2150e39d899516469164;p=ceph-ci.git mon: Abort device health when device not found If `store->get_devname()` returns an empty device name, it means it couldn't determine the device that backs the monitor DB store directory. This can happen if `ceph-mon` runs with `PrivateDevices=yes` in systemd, or within a container where the host `/dev` isn't exposed. This commit makes sure we abort trying to get the device health at that point, and return an appropriate error. Signed-off-by: Benoît Knecht --- diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc index e8856a5d120..946e44abd23 100644 --- a/src/mon/Monitor.cc +++ b/src/mon/Monitor.cc @@ -421,6 +421,11 @@ int Monitor::do_admin_command( cmd_getval(cmdmap, "devid", want_devid); string devname = store->get_devname(); + if (devname.empty()) { + err << "could not determine device name for " << store->get_path(); + r = -ENOENT; + goto abort; + } set devnames; get_raw_devices(devname, &devnames); json_spirit::mObject json_map; diff --git a/src/mon/MonitorDBStore.h b/src/mon/MonitorDBStore.h index 515a0472797..c33d35e486d 100644 --- a/src/mon/MonitorDBStore.h +++ b/src/mon/MonitorDBStore.h @@ -57,6 +57,10 @@ class MonitorDBStore return devname; } + std::string get_path() { + return path; + } + std::shared_ptr get_priority_cache() const { return db->get_priority_cache(); }