From 447320b15a8d90dd1b65111f09c6d75bd1d7efe2 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Tue, 19 Dec 2023 16:32:30 +0100 Subject: [PATCH] refactor(filesystem_v2): simplify constructor --- include/dwarfs/filesystem_v2.h | 2 +- include/dwarfs/options.h | 1 + src/dwarfs/filesystem_v2.cpp | 8 +++----- src/dwarfs_main.cpp | 20 +++++++++++--------- src/dwarfsextract_main.cpp | 3 +-- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/include/dwarfs/filesystem_v2.h b/include/dwarfs/filesystem_v2.h index e6122aaa..c82e2592 100644 --- a/include/dwarfs/filesystem_v2.h +++ b/include/dwarfs/filesystem_v2.h @@ -64,7 +64,7 @@ class filesystem_v2 { filesystem_v2(logger& lgr, std::shared_ptr mm); filesystem_v2(logger& lgr, std::shared_ptr mm, - filesystem_options const& options, int inode_offset = 0, + filesystem_options const& options, std::shared_ptr perfmon = nullptr); static int diff --git a/include/dwarfs/options.h b/include/dwarfs/options.h index 7c71609c..0321efb8 100644 --- a/include/dwarfs/options.h +++ b/include/dwarfs/options.h @@ -75,6 +75,7 @@ struct filesystem_options { file_off_t image_offset{0}; block_cache_options block_cache; metadata_options metadata; + int inode_offset{0}; }; struct filesystem_writer_options { diff --git a/src/dwarfs/filesystem_v2.cpp b/src/dwarfs/filesystem_v2.cpp index 1a8c664a..4c216e9d 100644 --- a/src/dwarfs/filesystem_v2.cpp +++ b/src/dwarfs/filesystem_v2.cpp @@ -351,7 +351,7 @@ template class filesystem_ final : public filesystem_v2::impl { public: filesystem_(logger& lgr, std::shared_ptr mm, - const filesystem_options& options, int inode_offset, + const filesystem_options& options, std::shared_ptr perfmon); void dump(std::ostream& os, int detail_level) const override; @@ -482,7 +482,6 @@ filesystem_info const& filesystem_::get_info() const { template filesystem_::filesystem_( logger& lgr, std::shared_ptr mm, const filesystem_options& options, - int inode_offset, std::shared_ptr perfmon [[maybe_unused]]) : LOG_PROXY_INIT(lgr) , mm_(std::move(mm)) @@ -532,7 +531,7 @@ filesystem_::filesystem_( std::vector schema_buffer; meta_ = make_metadata(lgr, mm_, sections, schema_buffer, meta_buffer_, - options.metadata, inode_offset, false, + options.metadata, options.inode_offset, false, options.lock_mode, !parser_.has_checksums()); LOG_DEBUG << "read " << cache.block_count() << " blocks and " << meta_.size() @@ -880,11 +879,10 @@ filesystem_v2::filesystem_v2(logger& lgr, std::shared_ptr mm) filesystem_v2::filesystem_v2(logger& lgr, std::shared_ptr mm, const filesystem_options& options, - int inode_offset, std::shared_ptr perfmon) : impl_(make_unique_logging_object( - lgr, std::move(mm), options, inode_offset, std::move(perfmon))) {} + lgr, std::move(mm), options, std::move(perfmon))) {} int filesystem_v2::identify(logger& lgr, std::shared_ptr mm, std::ostream& os, int detail_level, diff --git a/src/dwarfs_main.cpp b/src/dwarfs_main.cpp index 85264887..c1f87c12 100644 --- a/src/dwarfs_main.cpp +++ b/src/dwarfs_main.cpp @@ -1162,6 +1162,15 @@ int run_fuse(struct fuse_args& args, char* mountpoint, int mt, int fg, template void load_filesystem(dwarfs_userdata& userdata) { LOG_PROXY(LoggerPolicy, userdata.lgr); + + constexpr int const inode_offset = +#ifdef FUSE_ROOT_ID + FUSE_ROOT_ID +#else + 0 +#endif + ; + auto ti = LOG_TIMED_INFO; auto& opts = userdata.opts; @@ -1174,6 +1183,7 @@ void load_filesystem(dwarfs_userdata& userdata) { fsopts.block_cache.init_workers = false; fsopts.metadata.enable_nlink = bool(opts.enable_nlink); fsopts.metadata.readonly = bool(opts.readonly); + fsopts.inode_offset = inode_offset; if (opts.image_offset_str) { std::string image_offset{opts.image_offset_str}; @@ -1187,14 +1197,6 @@ void load_filesystem(dwarfs_userdata& userdata) { } } - constexpr int inode_offset = -#ifdef FUSE_ROOT_ID - FUSE_ROOT_ID -#else - 0 -#endif - ; - std::unordered_set perfmon_enabled; #if DWARFS_PERFMON_ENABLED if (opts.perfmon_enabled_str) { @@ -1221,7 +1223,7 @@ void load_filesystem(dwarfs_userdata& userdata) { userdata.fs = filesystem_v2(userdata.lgr, std::make_shared(opts.fsimage), fsopts, - inode_offset, userdata.perfmon); + userdata.perfmon); ti << "file system initialized"; } diff --git a/src/dwarfsextract_main.cpp b/src/dwarfsextract_main.cpp index ec1f475a..ad510b95 100644 --- a/src/dwarfsextract_main.cpp +++ b/src/dwarfsextract_main.cpp @@ -142,8 +142,7 @@ int dwarfsextract_main(int argc, sys_char** argv) { std::shared_ptr perfmon = performance_monitor::create(perfmon_enabled); - filesystem_v2 fs(lgr, std::make_shared(filesystem), fsopts, 0, - perfmon); + filesystem_v2 fs(lgr, std::make_shared(filesystem), fsopts, perfmon); filesystem_extractor fsx(lgr); if (format.empty()) {