int Client::link(const char *relexisting, const char *relpath, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
tout(cct) << "link" << std::endl;
tout(cct) << relexisting << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::unlink(const char *relpath, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
+
if (unmounting)
return -ENOTCONN;
int Client::rename(const char *relfrom, const char *relto, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relfrom << std::endl;
tout(cct) << relto << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::mkdir(const char *relpath, mode_t mode, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mode << std::endl;
ldout(cct, 10) << __func__ << ": " << relpath << dendl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::mkdirs(const char *relpath, mode_t mode, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
ldout(cct, 10) << "Client::mkdirs " << relpath << dendl;
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::rmdir(const char *relpath, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
}
int Client::mknod(const char *relpath, mode_t mode, const UserPerm& perms, dev_t rdev)
-{
- std::lock_guard lock(client_lock);
+{
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mode << std::endl;
tout(cct) << rdev << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::symlink(const char *target, const char *relpath, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << target << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::readlink(const char *relpath, char *buf, loff_t size, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::setattr(const char *relpath, struct stat *attr, int mask,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mask << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::setattrx(const char *relpath, struct ceph_statx *stx, int mask,
const UserPerm& perms, int flags)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mask << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fsetattr(int fd, struct stat *attr, int mask, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << mask << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fsetattrx(int fd, struct ceph_statx *stx, int mask, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << mask << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
frag_info_t *dirstat, int mask)
{
ldout(cct, 3) << __func__ << " enter (relpath " << relpath << " mask " << mask << ")" << dendl;
- std::lock_guard lock(client_lock);
tout(cct) << "stat" << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
unsigned int want, unsigned int flags)
{
ldout(cct, 3) << __func__ << " enter (relpath " << relpath << " want " << want << ")" << dendl;
- std::lock_guard lock(client_lock);
tout(cct) << "statx" << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
const UserPerm& perms, frag_info_t *dirstat, int mask)
{
ldout(cct, 3) << __func__ << " enter (relpath " << relpath << " mask " << mask << ")" << dendl;
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::chmod(const char *relpath, mode_t mode, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fchmod(int fd, mode_t mode, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::lchmod(const char *relpath, mode_t mode, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::chown(const char *relpath, uid_t new_uid, gid_t new_gid,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << new_uid << std::endl;
tout(cct) << new_gid << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fchown(int fd, uid_t new_uid, gid_t new_gid, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << new_uid << std::endl;
tout(cct) << new_gid << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::lchown(const char *relpath, uid_t new_uid, gid_t new_gid,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << new_uid << std::endl;
tout(cct) << new_gid << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::utimes(const char *relpath, struct timeval times[2],
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << "atime: " << times[0].tv_sec << "." << times[0].tv_usec
tout(cct) << "mtime: " << times[1].tv_sec << "." << times[1].tv_usec
<< std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::lutimes(const char *relpath, struct timeval times[2],
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << "atime: " << times[0].tv_sec << "." << times[0].tv_usec
tout(cct) << "mtime: " << times[1].tv_sec << "." << times[1].tv_usec
<< std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::futimens(int fd, struct timespec times[2], const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << "atime: " << times[0].tv_sec << "." << times[0].tv_nsec
tout(cct) << "mtime: " << times[1].tv_sec << "." << times[1].tv_nsec
<< std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::flock(int fd, int operation, uint64_t owner)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << operation << std::endl;
tout(cct) << owner << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::opendir(const char *relpath, dir_result_t **dirpp, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::closedir(dir_result_t *dir)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << (unsigned long)dir << std::endl;
ldout(cct, 3) << __func__ << "(" << dir << ") = 0" << dendl;
+ std::scoped_lock lock(client_lock);
_closedir(dir);
return 0;
}
void Client::_closedir(dir_result_t *dirp)
{
ldout(cct, 10) << __func__ << "(" << dirp << ")" << dendl;
+
if (dirp->inode) {
ldout(cct, 10) << __func__ << " detaching inode " << dirp->inode << dendl;
dirp->inode.reset();
const UserPerm& perms)
{
ldout(cct, 3) << "getdir(" << relpath << ")" << dendl;
- {
- std::lock_guard lock(client_lock);
- tout(cct) << "getdir" << std::endl;
- tout(cct) << relpath << std::endl;
- }
+ tout(cct) << "getdir" << std::endl;
+ tout(cct) << relpath << std::endl;
dir_result_t *d;
int r = opendir(relpath, &d, perms);
int object_size, const char *data_pool)
{
ldout(cct, 3) << "open enter(" << relpath << ", " << ceph_flags_sys2wire(flags) << "," << mode << ")" << dendl;
- std::lock_guard lock(client_lock);
tout(cct) << "open" << std::endl;
tout(cct) << relpath << std::endl;
tout(cct) << ceph_flags_sys2wire(flags) << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::close(int fd)
{
ldout(cct, 3) << "close enter(" << fd << ")" << dendl;
- std::lock_guard lock(client_lock);
tout(cct) << "close" << std::endl;
tout(cct) << fd << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
loff_t Client::lseek(int fd, loff_t offset, int whence)
{
- std::lock_guard lock(client_lock);
tout(cct) << "lseek" << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << offset << std::endl;
tout(cct) << whence << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::read(int fd, char *buf, loff_t size, loff_t offset)
{
- std::unique_lock lock(client_lock);
tout(cct) << "read" << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << size << std::endl;
tout(cct) << offset << std::endl;
+ std::unique_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::write(int fd, const char *buf, loff_t size, loff_t offset)
{
- std::lock_guard lock(client_lock);
tout(cct) << "write" << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << size << std::endl;
tout(cct) << offset << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::_preadv_pwritev(int fd, const struct iovec *iov, unsigned iovcnt, int64_t offset, bool write)
{
- std::lock_guard lock(client_lock);
tout(cct) << fd << std::endl;
tout(cct) << offset << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ftruncate(int fd, loff_t length, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << length << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fsync(int fd, bool syncdataonly)
{
- std::lock_guard lock(client_lock);
tout(cct) << "fsync" << std::endl;
tout(cct) << fd << std::endl;
tout(cct) << syncdataonly << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fstat(int fd, struct stat *stbuf, const UserPerm& perms, int mask)
{
- std::lock_guard lock(client_lock);
tout(cct) << "fstat mask " << hex << mask << dec << std::endl;
tout(cct) << fd << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fstatx(int fd, struct ceph_statx *stx, const UserPerm& perms,
unsigned int want, unsigned int flags)
{
- std::lock_guard lock(client_lock);
tout(cct) << "fstatx flags " << hex << flags << " want " << want << dec << std::endl;
tout(cct) << fd << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::chdir(const char *relpath, std::string &new_cwd,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
tout(cct) << "chdir" << std::endl;
tout(cct) << relpath << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::statfs(const char *path, struct statvfs *stbuf,
const UserPerm& perms)
{
- std::lock_guard l(client_lock);
tout(cct) << __func__ << std::endl;
unsigned long int total_files_on_fs;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_lazyio(Fh *fh, int enable)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << __func__ << " " << fh << " " << fh->inode->ino << " " << !!enable << dendl;
tout(cct) << __func__ << std::endl;
+ std::scoped_lock lock(client_lock);
return _lazyio(fh, enable);
}
int Client::ll_lookup(Inode *parent, const char *name, struct stat *attr,
Inode **out, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << __func__ << " " << vparent << " " << name << dendl;
tout(cct) << __func__ << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
struct ceph_statx *stx, unsigned want, unsigned flags,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << __func__ << " " << vparent << " " << name << dendl;
tout(cct) << "ll_lookupx" << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_walk(const char* name, Inode **out, struct ceph_statx *stx,
unsigned int want, unsigned int flags, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
filepath fp(name, 0);
InodeRef in;
int rc;
tout(cct) << __func__ << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
rc = path_walk(fp, &in, perms, !(flags & AT_SYMLINK_NOFOLLOW), mask);
if (rc < 0) {
/* zero out mask, just in case... */
int Client::ll_getxattr(Inode *in, const char *name, void *value,
size_t size, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << __func__ << " " << vino << " " << name << " size " << size << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = xattr_permission(in, name, MAY_READ, perms);
if (r < 0)
int Client::ll_listxattr(Inode *in, char *names, size_t size,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << __func__ << " " << vino << " size " << size << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << size << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
return _listxattr(in, names, size, perms);
}
{
_setxattr_maybe_wait_for_osdmap(name, value, size);
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << __func__ << " " << vino << " " << name << " size " << size << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = xattr_permission(in, name, MAY_WRITE, perms);
if (r < 0)
int Client::ll_removexattr(Inode *in, const char *name, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_removexattr " << vino << " " << name << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = xattr_permission(in, name, MAY_WRITE, perms);
if (r < 0)
int Client::ll_readlink(Inode *in, char *buf, size_t buflen, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_readlink " << vino << dendl;
tout(cct) << "ll_readlink" << std::endl;
tout(cct) << vino.ino.val << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
for (auto dn : in->dentries) {
touch_dn(dn);
}
dev_t rdev, struct stat *attr, Inode **out,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_mknod " << vparent << " " << name << dendl;
tout(cct) << mode << std::endl;
tout(cct) << rdev << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perms);
if (r < 0)
const UserPerm& perms)
{
unsigned caps = statx_to_mask(flags, want);
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_mknodx " << vparent << " " << name << dendl;
tout(cct) << mode << std::endl;
tout(cct) << rdev << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perms);
if (r < 0)
int Client::ll_mkdir(Inode *parent, const char *name, mode_t mode,
struct stat *attr, Inode **out, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_mkdir " << vparent << " " << name << dendl;
tout(cct) << name << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perm);
if (r < 0)
struct ceph_statx *stx, unsigned want, unsigned flags,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_mkdirx " << vparent << " " << name << dendl;
tout(cct) << name << std::endl;
tout(cct) << mode << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perms);
if (r < 0)
int Client::ll_symlink(Inode *parent, const char *name, const char *value,
struct stat *attr, Inode **out, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_symlink " << vparent << " " << name << " -> " << value
tout(cct) << name << std::endl;
tout(cct) << value << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perms);
if (r < 0)
Inode **out, struct ceph_statx *stx, unsigned want,
unsigned flags, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
ldout(cct, 3) << "ll_symlinkx " << vparent << " " << name << " -> " << value
tout(cct) << name << std::endl;
tout(cct) << value << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_create(parent, perms);
if (r < 0)
int Client::ll_unlink(Inode *in, const char *name, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_unlink " << vino << " " << name << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_delete(in, name, perm);
if (r < 0)
int Client::ll_rmdir(Inode *in, const char *name, const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_rmdir " << vino << " " << name << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << name << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_delete(in, name, perms);
if (r < 0)
int Client::ll_rename(Inode *parent, const char *name, Inode *newparent,
const char *newname, const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vparent = _get_vino(parent);
vinodeno_t vnewparent = _get_vino(newparent);
tout(cct) << vnewparent.ino.val << std::endl;
tout(cct) << newname << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_delete(parent, name, perm);
if (r < 0)
int Client::ll_link(Inode *in, Inode *newparent, const char *newname,
const UserPerm& perm)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
vinodeno_t vnewparent = _get_vino(newparent);
tout(cct) << vnewparent << std::endl;
tout(cct) << newname << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
InodeRef target;
if (!fuse_default_permissions) {
int Client::ll_opendir(Inode *in, int flags, dir_result_t** dirpp,
const UserPerm& perms)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_opendir " << vino << dendl;
tout(cct) << "ll_opendir" << std::endl;
tout(cct) << vino.ino.val << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (!fuse_default_permissions) {
int r = may_open(in, flags, perms);
if (r < 0)
int Client::ll_releasedir(dir_result_t *dirp)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_releasedir " << dirp << dendl;
tout(cct) << "ll_releasedir" << std::endl;
tout(cct) << (unsigned long)dirp << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_fsyncdir(dir_result_t *dirp)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_fsyncdir " << dirp << dendl;
tout(cct) << "ll_fsyncdir" << std::endl;
tout(cct) << (unsigned long)dirp << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
{
ceph_assert(!(flags & O_CREAT));
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
vinodeno_t vino = _get_vino(in);
ldout(cct, 3) << "ll_open " << vino << " " << ceph_flags_sys2wire(flags) << dendl;
tout(cct) << vino.ino.val << std::endl;
tout(cct) << ceph_flags_sys2wire(flags) << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
int r;
if (!fuse_default_permissions) {
r = may_open(in, flags, perms);
loff_t Client::ll_lseek(Fh *fh, loff_t offset, int whence)
{
- std::lock_guard lock(client_lock);
tout(cct) << "ll_lseek" << std::endl;
tout(cct) << offset << std::endl;
tout(cct) << whence << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_read(Fh *fh, loff_t off, loff_t len, bufferlist *bl)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_read " << fh << " " << fh->inode->ino << " " << " " << off << "~" << len << dendl;
tout(cct) << "ll_read" << std::endl;
tout(cct) << (unsigned long)fh << std::endl;
tout(cct) << off << std::endl;
tout(cct) << len << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_write(Fh *fh, loff_t off, loff_t len, const char *data)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_write " << fh << " " << fh->inode->ino << " " << off <<
"~" << len << dendl;
tout(cct) << "ll_write" << std::endl;
tout(cct) << off << std::endl;
tout(cct) << len << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_flush(Fh *fh)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_flush " << fh << " " << fh->inode->ino << " " << dendl;
tout(cct) << "ll_flush" << std::endl;
tout(cct) << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_fsync(Fh *fh, bool syncdataonly)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_fsync " << fh << " " << fh->inode->ino << " " << dendl;
tout(cct) << "ll_fsync" << std::endl;
tout(cct) << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_sync_inode(Inode *in, bool syncdataonly)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << "ll_sync_inode " << *in << " " << dendl;
tout(cct) << "ll_sync_inode" << std::endl;
tout(cct) << (unsigned long)in << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_fallocate(Fh *fh, int mode, int64_t offset, int64_t length)
{
- std::lock_guard lock(client_lock);
ldout(cct, 3) << __func__ << " " << fh << " " << fh->inode->ino << " " << dendl;
tout(cct) << __func__ << " " << mode << " " << offset << " " << length << std::endl;
tout(cct) << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::fallocate(int fd, int mode, loff_t offset, loff_t length)
{
- std::lock_guard lock(client_lock);
tout(cct) << __func__ << " " << " " << fd << mode << " " << offset << " " << length << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_release(Fh *fh)
{
- std::lock_guard lock(client_lock);
-
- if (unmounting)
- return -ENOTCONN;
-
ldout(cct, 3) << __func__ << " (fh)" << fh << " " << fh->inode->ino << " " <<
dendl;
tout(cct) << __func__ << " (fh)" << std::endl;
tout(cct) << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
+ if (unmounting)
+ return -ENOTCONN;
+
if (ll_unclosed_fh_set.count(fh))
ll_unclosed_fh_set.erase(fh);
return _release_fh(fh);
int Client::ll_getlk(Fh *fh, struct flock *fl, uint64_t owner)
{
- std::lock_guard lock(client_lock);
-
ldout(cct, 3) << "ll_getlk (fh)" << fh << " " << fh->inode->ino << dendl;
tout(cct) << "ll_getk (fh)" << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_setlk(Fh *fh, struct flock *fl, uint64_t owner, int sleep)
{
- std::lock_guard lock(client_lock);
-
ldout(cct, 3) << __func__ << " (fh) " << fh << " " << fh->inode->ino << dendl;
tout(cct) << __func__ << " (fh)" << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;
int Client::ll_flock(Fh *fh, int cmd, uint64_t owner)
{
- std::lock_guard lock(client_lock);
-
ldout(cct, 3) << __func__ << " (fh) " << fh << " " << fh->inode->ino << dendl;
tout(cct) << __func__ << " (fh)" << (unsigned long)fh << std::endl;
+ std::scoped_lock lock(client_lock);
if (unmounting)
return -ENOTCONN;