To be used in subsequent commits.
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
Fixes: https://tracker.ceph.com/issues/66373
"client_oc_max_objects", \
"client_oc_size", \
"client_oc_target_dirty", \
- "client_permissions" \
+ "client_permissions", \
+ "fuse_default_permissions"
constexpr bool is_sorted = [] () constexpr {
constexpr auto arr = std::to_array<std::string_view>({KEYS});
if (changed.count("client_permissions")) {
client_permissions = cct->_conf.get_val<bool>("client_permissions");
}
+ if (changed.count("fuse_default_permissions")) {
+ fuse_default_permissions = cct->_conf.get_val<bool>("fuse_default_permissions");
+ }
if (changed.count("client_cache_mid")) {
lru.lru_set_midpoint(cct->_conf->client_cache_mid);
}
return std::make_pair(opened_inodes, inode_map.size());
}
+ void set_is_fuse() {
+ is_fuse = true;
+ }
+ bool get_fuse_default_permissions() const {
+ return fuse_default_permissions;
+ }
+
/* timer_lock for 'timer' */
ceph::mutex timer_lock = ceph::make_mutex("Client::timer_lock");
SafeTimer timer;
std::unique_ptr<PerfCounters> logger;
std::unique_ptr<MDSMap> mdsmap;
- bool fuse_default_permissions;
bool _collect_and_send_global_metrics;
protected:
void update_io_stat_read(utime_t latency);
void update_io_stat_write(utime_t latency);
+ bool should_check_perms() const {
+ return (is_fuse && !fuse_default_permissions) || (!is_fuse && client_permissions);
+ }
+
uint32_t deleg_timeout = 0;
client_switch_interrupt_callback_t switch_interrupt_cb = nullptr;
feature_bitset_t myfeatures;
+ bool is_fuse = false;
bool client_permissions;
+ bool fuse_default_permissions;
};
/**
conn->want |= FUSE_CAP_SPLICE_MOVE;
#if !defined(__APPLE__)
- if (!client->fuse_default_permissions && client->ll_handle_umask()) {
+ if (!client->get_fuse_default_permissions() && client->ll_handle_umask()) {
// apply umask in userspace if posix acl is enabled
if(conn->capable & FUSE_CAP_DONT_MASK)
conn->want |= FUSE_CAP_DONT_MASK;
CephFuse::CephFuse(Client *c, int fd) : _handle(new CephFuse::Handle(c, fd))
{
+ c->set_is_fuse();
}
CephFuse::~CephFuse()