diff --git a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp index 4a1b7598..d7f891ce 100644 --- a/repertory/librepertory/src/drives/fuse/fuse_drive.cpp +++ b/repertory/librepertory/src/drives/fuse/fuse_drive.cpp @@ -501,28 +501,16 @@ auto fuse_drive::getattr_impl(std::string api_path, struct stat *unix_st) return res; } - auto found = false; - directory_cache_->execute_action(parent, [&](directory_iterator &iter) { - directory_item dir_item{}; - found = (iter.get_directory_item(api_path, dir_item) == api_error::success); - if (found) { - fuse_drive_base::populate_stat(api_path, dir_item.size, dir_item.meta, - dir_item.directory, provider_, unix_st); - } - }); - - if (not found) { - api_meta_map meta{}; - res = provider_.get_item_meta(api_path, meta); - if (res != api_error::success) { - return res; - } - - fuse_drive_base::populate_stat( - api_path, utils::string::to_uint64(meta[META_SIZE]), meta, - utils::string::to_bool(meta[META_DIRECTORY]), provider_, unix_st); + api_meta_map meta{}; + res = provider_.get_item_meta(api_path, meta); + if (res != api_error::success) { + return res; } + fuse_drive_base::populate_stat( + api_path, utils::string::to_uint64(meta[META_SIZE]), meta, + utils::string::to_bool(meta[META_DIRECTORY]), provider_, unix_st); + return api_error::success; } @@ -583,24 +571,24 @@ void *fuse_drive::init_impl(struct fuse_conn_info *conn) { auto *ret = fuse_drive_base::init_impl(conn); #endif - if (console_enabled_) { - console_consumer_ = - std::make_unique(config_.get_event_level()); - } - - logging_consumer_ = std::make_unique( - config_.get_event_level(), config_.get_log_directory()); - event_system::instance().start(); - was_mounted_ = true; - - fm_ = std::make_unique(config_, provider_); - server_ = std::make_unique(config_, provider_, *fm_); - if (not provider_.is_read_only()) { - eviction_ = std::make_unique(provider_, config_, *fm_); - } - directory_cache_ = std::make_unique(); - try { + if (console_enabled_) { + console_consumer_ = + std::make_unique(config_.get_event_level()); + } + + logging_consumer_ = std::make_unique( + config_.get_event_level(), config_.get_log_directory()); + event_system::instance().start(); + was_mounted_ = true; + + fm_ = std::make_unique(config_, provider_); + server_ = std::make_unique(config_, provider_, *fm_); + if (not provider_.is_read_only()) { + eviction_ = std::make_unique(provider_, config_, *fm_); + } + + directory_cache_ = std::make_unique(); directory_cache_->start(); server_->start(); @@ -907,19 +895,7 @@ auto fuse_drive::getxattr_common(std::string api_path, const char *name, } api_meta_map meta; - auto found{false}; - directory_cache_->execute_action( - utils::path::get_parent_api_path(api_path), - [&](directory_iterator &iterator) { - directory_item dir_item{}; - found = (iterator.get_directory_item(api_path, dir_item) == - api_error::success); - if (found) { - meta = dir_item.meta; - } - }); - - res = found ? api_error::success : provider_.get_item_meta(api_path, meta); + res = provider_.get_item_meta(api_path, meta); if (res != api_error::success) { return res; }