mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-14 06:48:39 -04:00
refactor(filesystem_v2): simplify constructor
This commit is contained in:
parent
a5c293f5b7
commit
447320b15a
@ -64,7 +64,7 @@ class filesystem_v2 {
|
|||||||
filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm);
|
filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm);
|
||||||
|
|
||||||
filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm,
|
filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm,
|
||||||
filesystem_options const& options, int inode_offset = 0,
|
filesystem_options const& options,
|
||||||
std::shared_ptr<performance_monitor const> perfmon = nullptr);
|
std::shared_ptr<performance_monitor const> perfmon = nullptr);
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -75,6 +75,7 @@ struct filesystem_options {
|
|||||||
file_off_t image_offset{0};
|
file_off_t image_offset{0};
|
||||||
block_cache_options block_cache;
|
block_cache_options block_cache;
|
||||||
metadata_options metadata;
|
metadata_options metadata;
|
||||||
|
int inode_offset{0};
|
||||||
};
|
};
|
||||||
|
|
||||||
struct filesystem_writer_options {
|
struct filesystem_writer_options {
|
||||||
|
@ -351,7 +351,7 @@ template <typename LoggerPolicy>
|
|||||||
class filesystem_ final : public filesystem_v2::impl {
|
class filesystem_ final : public filesystem_v2::impl {
|
||||||
public:
|
public:
|
||||||
filesystem_(logger& lgr, std::shared_ptr<mmif> mm,
|
filesystem_(logger& lgr, std::shared_ptr<mmif> mm,
|
||||||
const filesystem_options& options, int inode_offset,
|
const filesystem_options& options,
|
||||||
std::shared_ptr<performance_monitor const> perfmon);
|
std::shared_ptr<performance_monitor const> perfmon);
|
||||||
|
|
||||||
void dump(std::ostream& os, int detail_level) const override;
|
void dump(std::ostream& os, int detail_level) const override;
|
||||||
@ -482,7 +482,6 @@ filesystem_info const& filesystem_<LoggerPolicy>::get_info() const {
|
|||||||
template <typename LoggerPolicy>
|
template <typename LoggerPolicy>
|
||||||
filesystem_<LoggerPolicy>::filesystem_(
|
filesystem_<LoggerPolicy>::filesystem_(
|
||||||
logger& lgr, std::shared_ptr<mmif> mm, const filesystem_options& options,
|
logger& lgr, std::shared_ptr<mmif> mm, const filesystem_options& options,
|
||||||
int inode_offset,
|
|
||||||
std::shared_ptr<performance_monitor const> perfmon [[maybe_unused]])
|
std::shared_ptr<performance_monitor const> perfmon [[maybe_unused]])
|
||||||
: LOG_PROXY_INIT(lgr)
|
: LOG_PROXY_INIT(lgr)
|
||||||
, mm_(std::move(mm))
|
, mm_(std::move(mm))
|
||||||
@ -532,7 +531,7 @@ filesystem_<LoggerPolicy>::filesystem_(
|
|||||||
std::vector<uint8_t> schema_buffer;
|
std::vector<uint8_t> schema_buffer;
|
||||||
|
|
||||||
meta_ = make_metadata(lgr, mm_, sections, schema_buffer, meta_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());
|
options.lock_mode, !parser_.has_checksums());
|
||||||
|
|
||||||
LOG_DEBUG << "read " << cache.block_count() << " blocks and " << meta_.size()
|
LOG_DEBUG << "read " << cache.block_count() << " blocks and " << meta_.size()
|
||||||
@ -880,11 +879,10 @@ filesystem_v2::filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm)
|
|||||||
|
|
||||||
filesystem_v2::filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm,
|
filesystem_v2::filesystem_v2(logger& lgr, std::shared_ptr<mmif> mm,
|
||||||
const filesystem_options& options,
|
const filesystem_options& options,
|
||||||
int inode_offset,
|
|
||||||
std::shared_ptr<performance_monitor const> perfmon)
|
std::shared_ptr<performance_monitor const> perfmon)
|
||||||
: impl_(make_unique_logging_object<filesystem_v2::impl, filesystem_,
|
: impl_(make_unique_logging_object<filesystem_v2::impl, filesystem_,
|
||||||
logger_policies>(
|
logger_policies>(
|
||||||
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<mmif> mm,
|
int filesystem_v2::identify(logger& lgr, std::shared_ptr<mmif> mm,
|
||||||
std::ostream& os, int detail_level,
|
std::ostream& os, int detail_level,
|
||||||
|
@ -1162,6 +1162,15 @@ int run_fuse(struct fuse_args& args, char* mountpoint, int mt, int fg,
|
|||||||
template <typename LoggerPolicy>
|
template <typename LoggerPolicy>
|
||||||
void load_filesystem(dwarfs_userdata& userdata) {
|
void load_filesystem(dwarfs_userdata& userdata) {
|
||||||
LOG_PROXY(LoggerPolicy, userdata.lgr);
|
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 ti = LOG_TIMED_INFO;
|
||||||
auto& opts = userdata.opts;
|
auto& opts = userdata.opts;
|
||||||
|
|
||||||
@ -1174,6 +1183,7 @@ void load_filesystem(dwarfs_userdata& userdata) {
|
|||||||
fsopts.block_cache.init_workers = false;
|
fsopts.block_cache.init_workers = false;
|
||||||
fsopts.metadata.enable_nlink = bool(opts.enable_nlink);
|
fsopts.metadata.enable_nlink = bool(opts.enable_nlink);
|
||||||
fsopts.metadata.readonly = bool(opts.readonly);
|
fsopts.metadata.readonly = bool(opts.readonly);
|
||||||
|
fsopts.inode_offset = inode_offset;
|
||||||
|
|
||||||
if (opts.image_offset_str) {
|
if (opts.image_offset_str) {
|
||||||
std::string image_offset{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<std::string> perfmon_enabled;
|
std::unordered_set<std::string> perfmon_enabled;
|
||||||
#if DWARFS_PERFMON_ENABLED
|
#if DWARFS_PERFMON_ENABLED
|
||||||
if (opts.perfmon_enabled_str) {
|
if (opts.perfmon_enabled_str) {
|
||||||
@ -1221,7 +1223,7 @@ void load_filesystem(dwarfs_userdata& userdata) {
|
|||||||
|
|
||||||
userdata.fs =
|
userdata.fs =
|
||||||
filesystem_v2(userdata.lgr, std::make_shared<mmap>(opts.fsimage), fsopts,
|
filesystem_v2(userdata.lgr, std::make_shared<mmap>(opts.fsimage), fsopts,
|
||||||
inode_offset, userdata.perfmon);
|
userdata.perfmon);
|
||||||
|
|
||||||
ti << "file system initialized";
|
ti << "file system initialized";
|
||||||
}
|
}
|
||||||
|
@ -142,8 +142,7 @@ int dwarfsextract_main(int argc, sys_char** argv) {
|
|||||||
std::shared_ptr<performance_monitor> perfmon =
|
std::shared_ptr<performance_monitor> perfmon =
|
||||||
performance_monitor::create(perfmon_enabled);
|
performance_monitor::create(perfmon_enabled);
|
||||||
|
|
||||||
filesystem_v2 fs(lgr, std::make_shared<mmap>(filesystem), fsopts, 0,
|
filesystem_v2 fs(lgr, std::make_shared<mmap>(filesystem), fsopts, perfmon);
|
||||||
perfmon);
|
|
||||||
filesystem_extractor fsx(lgr);
|
filesystem_extractor fsx(lgr);
|
||||||
|
|
||||||
if (format.empty()) {
|
if (format.empty()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user