From 8319e4548b02d935c416e96b1eee1193e2946a7b Mon Sep 17 00:00:00 2001 From: Igor Fedotov Date: Thu, 9 Nov 2023 00:22:28 +0300 Subject: [PATCH] os/bluestore: provide some reference for BlueFSVolumeSelector's interface. Signed-off-by: Igor Fedotov (cherry picked from commit 243d21ef1c18d561b35acf309e8e1c13b0781658) --- src/os/bluestore/BlueFS.h | 75 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/os/bluestore/BlueFS.h b/src/os/bluestore/BlueFS.h index 5926c0c81ec..c0c2dfdf0ad 100644 --- a/src/os/bluestore/BlueFS.h +++ b/src/os/bluestore/BlueFS.h @@ -82,27 +82,102 @@ public: virtual ~BlueFSVolumeSelector() { } + /** + * Method to learn a hint (aka logic level discriminator) specific for + * BlueFS log + * + */ virtual void* get_hint_for_log() const = 0; + /** + * Method to learn a hint (aka logic level discriminator) provided directory + * bound to. + * + */ virtual void* get_hint_by_dir(std::string_view dirname) const = 0; + /** + * Increments stats for a given logical level using provided fnode as a delta, + * Parameters: + * hint: logical level discriminator + * fnode: fnode metadata to be used as a complex delta value: + * (+1 file count, +file size, +all the extents) + * + */ void add_usage(void* hint, const bluefs_fnode_t& fnode) { for (auto& e : fnode.extents) { add_usage(hint, e); } add_usage(hint, fnode.size, true); } + /** + * Decrements stats for a given logical level using provided fnode as a delta + * Parameters: + * hint: logical level discriminator + * fnode: fnode metadata to be used as a complex delta value: + * (-1 file count, -file size, -all the extents) + * + */ void sub_usage(void* hint, const bluefs_fnode_t& fnode) { for (auto& e : fnode.extents) { sub_usage(hint, e); } sub_usage(hint, fnode.size, true); } + /** + * Increments stats for a given logical level using provided extent as a delta, + * Parameters: + * hint: logical level discriminator + * extent: bluefs extent to be used as a complex delta value: + * (.bdev determines physical location, +length) + * + */ virtual void add_usage(void* hint, const bluefs_extent_t& extent) = 0; + /** + * Decrements stats for a given logical level using provided extent as a delta, + * Parameters: + * hint: logical level discriminator + * extent: bluefs extent to be used as a complex delta value: + * (.bdev determines physical location, -length) + * + */ virtual void sub_usage(void* hint, const bluefs_extent_t& extent) = 0; + /** + * Increments files count and overall files size for a given logical level + * Parameters: + * hint: logical level discriminator + * fsize: delta value for file size + * upd_files: whether or not to increment file count + * + */ virtual void add_usage(void* hint, uint64_t fsize, bool upd_files = false) = 0; + /** + * Decrements files count and overall files size for a given logical level + * Parameters: + * hint: logical level discriminator + * fsize: delta value for file size + * upd_files: whether or not to decrement file count + * + */ virtual void sub_usage(void* hint, uint64_t fsize, bool upd_files = false) = 0; + + /** + * Determines preferred physical device for the given logical level + * Parameters: + * hint: logical level discriminator + * + */ virtual uint8_t select_prefer_bdev(void* hint) = 0; + /** + * Builds path set for RocksDB to use + * Parameters: + * base: path's root + * + */ virtual void get_paths(const std::string& base, paths& res) const = 0; + /** + * Dumps VSelector's state + * + */ virtual void dump(std::ostream& sout) = 0; /* used for sanity checking of vselector */ -- 2.39.5