From b2e5edf8d5395860d6e9df4a96721b283c6c3287 Mon Sep 17 00:00:00 2001 From: Marcus Holland-Moritz Date: Wed, 18 Dec 2024 17:15:19 +0100 Subject: [PATCH] fix: remove access() implementation from FUSE driver (see gh #244) --- test/tools_test.cpp | 19 -------------- tools/src/dwarfs_main.cpp | 53 --------------------------------------- 2 files changed, 72 deletions(-) diff --git a/test/tools_test.cpp b/test/tools_test.cpp index 0653fcd4a..dbcf33aa5 100644 --- a/test/tools_test.cpp +++ b/test/tools_test.cpp @@ -740,25 +740,6 @@ bool check_readonly(fs::path const& p, bool readonly) { return false; } -#ifndef _WIN32 - { - auto r = ::access(p.string().c_str(), W_OK); - - if (readonly) { - if (r != -1 || errno != EACCES) { - std::cerr << "access(" << p << ", W_OK) = " << r << " (errno=" << errno - << ") [readonly]\n"; - return false; - } - } else { - if (r != 0) { - std::cerr << "access(" << p << ", W_OK) = " << r << "\n"; - return false; - } - } - } -#endif - return true; } diff --git a/tools/src/dwarfs_main.cpp b/tools/src/dwarfs_main.cpp index 293edfebf..4bec05a1e 100644 --- a/tools/src/dwarfs_main.cpp +++ b/tools/src/dwarfs_main.cpp @@ -224,7 +224,6 @@ struct dwarfs_userdata { PERFMON_EXT_TIMER_DECL(op_init) PERFMON_EXT_TIMER_DECL(op_lookup) PERFMON_EXT_TIMER_DECL(op_getattr) - PERFMON_EXT_TIMER_DECL(op_access) PERFMON_EXT_TIMER_DECL(op_readlink) PERFMON_EXT_TIMER_DECL(op_open) PERFMON_EXT_TIMER_DECL(op_read) @@ -499,55 +498,6 @@ int op_getattr(char const* path, native_stat* st, struct fuse_file_info*) { } #endif -template -int op_access_common(LogProxy& log_, dwarfs_userdata& userdata, int mode, - file_stat::uid_type uid, file_stat::gid_type gid, - Find const& find) { - return checked_call(log_, [&] { - if (auto iv = find()) { - std::error_code ec; - userdata.fs.access(*iv, mode, uid, gid, ec); - return ec.value(); - } - return ENOENT; - }); -} - -#if DWARFS_FUSE_LOWLEVEL -template -void op_access(fuse_req_t req, fuse_ino_t ino, int mode) { - dUSERDATA; - PERFMON_EXT_SCOPED_SECTION(userdata, op_access) - LOG_PROXY(LoggerPolicy, userdata.lgr); - - LOG_DEBUG << __func__ << "(" << ino << ")" << get_caller_context(req); - PERFMON_SET_CONTEXT(ino) - - auto ctx = fuse_req_ctx(req); - - int err = - op_access_common(log_, userdata, mode, ctx->uid, ctx->gid, - [&userdata, ino] { return userdata.fs.find(ino); }); - - fuse_reply_err(req, err); -} -#else -template -int op_access(char const* path, int mode) { - dUSERDATA; - PERFMON_EXT_SCOPED_SECTION(userdata, op_access) - LOG_PROXY(LoggerPolicy, userdata.lgr); - - LOG_DEBUG << __func__ << "(" << path << ")" << get_caller_context(); - - auto ctx = fuse_get_context(); - - return -op_access_common(log_, userdata, mode, ctx->uid, ctx->gid, [&] { - return find_inode(PERFMON_SECTION_ARG_ userdata.fs, path); - }); -} -#endif - template int op_readlink_common(LogProxy& log_, dwarfs_userdata& userdata, std::string* str, Find const& find) { @@ -1304,7 +1254,6 @@ void init_fuse_ops(struct fuse_lowlevel_ops& ops, ops.init = &op_init; ops.lookup = &op_lookup; ops.getattr = &op_getattr; - ops.access = &op_access; if (userdata.fs.has_symlinks()) { ops.readlink = &op_readlink; } @@ -1321,7 +1270,6 @@ void init_fuse_ops(struct fuse_operations& ops, dwarfs_userdata const& userdata) { ops.init = &op_init; ops.getattr = &op_getattr; - ops.access = &op_access; if (userdata.fs.has_symlinks()) { ops.readlink = &op_readlink; } @@ -1502,7 +1450,6 @@ void load_filesystem(dwarfs_userdata& userdata) { PERFMON_EXT_TIMER_SETUP(userdata, op_init) PERFMON_EXT_TIMER_SETUP(userdata, op_lookup, "inode") PERFMON_EXT_TIMER_SETUP(userdata, op_getattr, "inode") - PERFMON_EXT_TIMER_SETUP(userdata, op_access, "inode") PERFMON_EXT_TIMER_SETUP(userdata, op_readlink, "inode") PERFMON_EXT_TIMER_SETUP(userdata, op_open, "inode") PERFMON_EXT_TIMER_SETUP(userdata, op_read, "inode", "size")