From: Igor Fedotov Date: Wed, 15 May 2019 13:55:12 +0000 (+0300) Subject: os/bluestore: show device name in "osd metadata output" X-Git-Tag: v15.1.0~2610^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=454d7f358df2e73dfaec2551e033e546508422c0;p=ceph.git os/bluestore: show device name in "osd metadata output" Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlockDevice.h b/src/os/bluestore/BlockDevice.h index 315d46c19f85..ee1afc63109b 100644 --- a/src/os/bluestore/BlockDevice.h +++ b/src/os/bluestore/BlockDevice.h @@ -177,10 +177,10 @@ public: virtual int collect_metadata(const std::string& prefix, std::map *pm) const = 0; - virtual int get_devname(std::string *out) { + virtual int get_devname(std::string *out) const { return -ENOENT; } - virtual int get_devices(std::set *ls) { + virtual int get_devices(std::set *ls) const { std::string s; if (get_devname(&s) == 0) { ls->insert(s); diff --git a/src/os/bluestore/KernelDevice.cc b/src/os/bluestore/KernelDevice.cc index 68b690e5aa98..35092a0895a9 100644 --- a/src/os/bluestore/KernelDevice.cc +++ b/src/os/bluestore/KernelDevice.cc @@ -223,7 +223,7 @@ out_fail: return r; } -int KernelDevice::get_devices(std::set *ls) +int KernelDevice::get_devices(std::set *ls) const { if (devname.empty()) { return 0; @@ -274,6 +274,22 @@ int KernelDevice::collect_metadata(const string& prefix, map *pm) (*pm)[prefix + "vdo_physical_size"] = stringify(total); } + { + string res_names; + std::set devnames; + if (get_devices(&devnames) == 0) { + for (auto& dev : devnames) { + if (!res_names.empty()) { + res_names += ","; + } + res_names += dev; + } + if (res_names.size()) { + (*pm)[prefix + "devices"] = res_names; + } + } + } + struct stat st; int r = ::fstat(fd_buffereds[WRITE_LIFE_NOT_SET], &st); if (r < 0) diff --git a/src/os/bluestore/KernelDevice.h b/src/os/bluestore/KernelDevice.h index ec8cf2f8dc40..99dfb761837a 100644 --- a/src/os/bluestore/KernelDevice.h +++ b/src/os/bluestore/KernelDevice.h @@ -117,14 +117,14 @@ public: void discard_drain() override; int collect_metadata(const std::string& prefix, map *pm) const override; - int get_devname(std::string *s) override { + int get_devname(std::string *s) const override { if (devname.empty()) { return -ENOENT; } *s = devname; return 0; } - int get_devices(std::set *ls) override; + int get_devices(std::set *ls) const override; bool get_thin_utilization(uint64_t *total, uint64_t *avail) const override;