From 8d93bd18037c1b4e5a4c453d094992ed85678224 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 1 Nov 2018 05:09:42 -0500 Subject: [PATCH] os/filestore: collect partition/device metadata from journal Signed-off-by: Sage Weil --- src/os/filestore/FileJournal.cc | 19 ++++++++++++++++++- src/os/filestore/FileJournal.h | 1 + src/os/filestore/FileStore.cc | 3 +++ src/os/filestore/Journal.h | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/os/filestore/FileJournal.cc b/src/os/filestore/FileJournal.cc index c0f5113761ac0..9e8b1cd31acc5 100644 --- a/src/os/filestore/FileJournal.cc +++ b/src/os/filestore/FileJournal.cc @@ -2191,10 +2191,27 @@ void FileJournal::get_devices(set *ls) char dev_node[PATH_MAX]; BlkDev blkdev(fd); if (int rc = blkdev.wholedisk(dev_node, PATH_MAX); rc) { - return rc; + return; } ls->insert(dev_node); if (strncmp(dev_node, "dm-", 3) == 0) { get_dm_parents(dev_node, ls); } } + +void FileJournal::collect_metadata(map *pm) +{ + BlkDev blkdev(fd); + char partition_path[PATH_MAX]; + char dev_node[PATH_MAX]; + if (blkdev.partition(partition_path, PATH_MAX)) { + (*pm)["backend_filestore_journal_partition_path"] = "unknown"; + } else { + (*pm)["backend_filestore_journal_partition_path"] = string(partition_path); + } + if (blkdev.wholedisk(dev_node, PATH_MAX)) { + (*pm)["backend_filestore_journal_dev_node"] = "unknown"; + } else { + (*pm)["backend_filestore_journal_dev_node"] = string(dev_node); + } +} diff --git a/src/os/filestore/FileJournal.h b/src/os/filestore/FileJournal.h index 52376d18f39a4..23ca024d65b26 100644 --- a/src/os/filestore/FileJournal.h +++ b/src/os/filestore/FileJournal.h @@ -464,6 +464,7 @@ private: void flush() override; void get_devices(set *ls) override; + void collect_metadata(map *pm) override; void reserve_throttle_and_backoff(uint64_t count) override; diff --git a/src/os/filestore/FileStore.cc b/src/os/filestore/FileStore.cc index 3d39d1b0ca290..dd0efe0275280 100644 --- a/src/os/filestore/FileStore.cc +++ b/src/os/filestore/FileStore.cc @@ -708,6 +708,9 @@ void FileStore::collect_metadata(map *pm) (*pm)["vdo_physical_size"] = stringify(4096 * get_vdo_stat(vdo_fd, "physical_blocks")); } + if (journal) { + journal->collect_metadata(pm); + } } } diff --git a/src/os/filestore/Journal.h b/src/os/filestore/Journal.h index 177443084941a..cfb667d89696a 100644 --- a/src/os/filestore/Journal.h +++ b/src/os/filestore/Journal.h @@ -53,7 +53,7 @@ public: virtual void flush() = 0; virtual void get_devices(set *ls) {} - + virtual void collect_metadata(map *pm) {} /** * reserve_throttle_and_backoff * -- 2.39.5