{
public:
explicit ceph_mount_info(CephContext *cct_)
- : mounted(false),
+ : default_perms(),
+ mounted(false),
inited(false),
client(NULL),
monclient(NULL),
if (ret)
goto fail;
+ default_perms = Client::pick_my_perms(cct);
inited = true;
return 0;
return cct;
}
+ UserPerm default_perms;
private:
bool mounted;
bool inited;
std::string mount_root;
if (root)
mount_root = root;
- UserPerm perms = Client::pick_my_perms(cmount->get_ceph_context());
- return cmount->mount(mount_root, perms);
+ return cmount->mount(mount_root, cmount->default_perms);
}
extern "C" int ceph_is_mounted(struct ceph_mount_info *cmount)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->statfs(path, stbuf, perms);
+ return cmount->get_client()->statfs(path, stbuf, cmount->default_perms);
}
extern "C" int ceph_get_local_osd(struct ceph_mount_info *cmount)
extern "C" const char* ceph_getcwd(struct ceph_mount_info *cmount)
{
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_cwd(perms);
+ return cmount->get_cwd(cmount->default_perms);
}
extern "C" int ceph_chdir (struct ceph_mount_info *cmount, const char *s)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->chdir(s, perms);
+ return cmount->chdir(s, cmount->default_perms);
}
extern "C" int ceph_opendir(struct ceph_mount_info *cmount,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->opendir(name, (dir_result_t **)dirpp, perms);
+ return cmount->get_client()->opendir(name, (dir_result_t **)dirpp, cmount->default_perms);
}
extern "C" int ceph_closedir(struct ceph_mount_info *cmount, struct ceph_dir_result *dirp)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->link(existing, newname, perms);
+ return cmount->get_client()->link(existing, newname, cmount->default_perms);
}
extern "C" int ceph_unlink(struct ceph_mount_info *cmount, const char *path)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->unlink(path, perms);
+ return cmount->get_client()->unlink(path, cmount->default_perms);
}
extern "C" int ceph_rename(struct ceph_mount_info *cmount, const char *from,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->rename(from, to, perms);
+ return cmount->get_client()->rename(from, to, cmount->default_perms);
}
// dirs
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->mkdir(path, mode, perms);
+ return cmount->get_client()->mkdir(path, mode, cmount->default_perms);
}
extern "C" int ceph_mkdirs(struct ceph_mount_info *cmount, const char *path, mode_t mode)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->mkdirs(path, mode, perms);
+ return cmount->get_client()->mkdirs(path, mode, cmount->default_perms);
}
extern "C" int ceph_rmdir(struct ceph_mount_info *cmount, const char *path)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->rmdir(path, perms);
+ return cmount->get_client()->rmdir(path, cmount->default_perms);
}
// symlinks
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->readlink(path, buf, size, perms);
+ return cmount->get_client()->readlink(path, buf, size, cmount->default_perms);
}
extern "C" int ceph_symlink(struct ceph_mount_info *cmount, const char *existing,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->symlink(existing, newname, perms);
+ return cmount->get_client()->symlink(existing, newname, cmount->default_perms);
}
// inode stuff
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->stat(path, stbuf, perms);
+ return cmount->get_client()->stat(path, stbuf, cmount->default_perms);
}
extern "C" int ceph_lstat(struct ceph_mount_info *cmount, const char *path,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lstat(path, stbuf, perms);
+ return cmount->get_client()->lstat(path, stbuf, cmount->default_perms);
}
extern "C" int ceph_setattr(struct ceph_mount_info *cmount, const char *relpath,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->setattr(relpath, attr, mask, perms);
+ return cmount->get_client()->setattr(relpath, attr, mask, cmount->default_perms);
}
// *xattr() calls supporting samba/vfs
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->getxattr(path, name, value, size, perms);
+ return cmount->get_client()->getxattr(path, name, value, size, cmount->default_perms);
}
extern "C" int ceph_lgetxattr(struct ceph_mount_info *cmount, const char *path, const char *name, void *value, size_t size)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lgetxattr(path, name, value, size, perms);
+ return cmount->get_client()->lgetxattr(path, name, value, size, cmount->default_perms);
}
extern "C" int ceph_fgetxattr(struct ceph_mount_info *cmount, int fd, const char *name, void *value, size_t size)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fgetxattr(fd, name, value, size, perms);
+ return cmount->get_client()->fgetxattr(fd, name, value, size, cmount->default_perms);
}
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->listxattr(path, list, size, perms);
+ return cmount->get_client()->listxattr(path, list, size, cmount->default_perms);
}
extern "C" int ceph_llistxattr(struct ceph_mount_info *cmount, const char *path, char *list, size_t size)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->llistxattr(path, list, size, perms);
+ return cmount->get_client()->llistxattr(path, list, size, cmount->default_perms);
}
extern "C" int ceph_flistxattr(struct ceph_mount_info *cmount, int fd, char *list, size_t size)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->flistxattr(fd, list, size, perms);
+ return cmount->get_client()->flistxattr(fd, list, size, cmount->default_perms);
}
extern "C" int ceph_removexattr(struct ceph_mount_info *cmount, const char *path, const char *name)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->removexattr(path, name, perms);
+ return cmount->get_client()->removexattr(path, name, cmount->default_perms);
}
extern "C" int ceph_lremovexattr(struct ceph_mount_info *cmount, const char *path, const char *name)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lremovexattr(path, name, perms);
+ return cmount->get_client()->lremovexattr(path, name, cmount->default_perms);
}
extern "C" int ceph_fremovexattr(struct ceph_mount_info *cmount, int fd, const char *name)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fremovexattr(fd, name, perms);
+ return cmount->get_client()->fremovexattr(fd, name, cmount->default_perms);
}
extern "C" int ceph_setxattr(struct ceph_mount_info *cmount, const char *path, const char *name, const void *value, size_t size, int flags)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->setxattr(path, name, value, size, flags, perms);
+ return cmount->get_client()->setxattr(path, name, value, size, flags, cmount->default_perms);
}
extern "C" int ceph_lsetxattr(struct ceph_mount_info *cmount, const char *path, const char *name, const void *value, size_t size, int flags)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lsetxattr(path, name, value, size, flags, perms);
+ return cmount->get_client()->lsetxattr(path, name, value, size, flags, cmount->default_perms);
}
extern "C" int ceph_fsetxattr(struct ceph_mount_info *cmount, int fd, const char *name, const void *value, size_t size, int flags)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fsetxattr(fd, name, value, size, flags, perms);
+ return cmount->get_client()->fsetxattr(fd, name, value, size, flags, cmount->default_perms);
}
/* end xattr support */
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->chmod(path, mode, perms);
+ return cmount->get_client()->chmod(path, mode, cmount->default_perms);
}
extern "C" int ceph_fchmod(struct ceph_mount_info *cmount, int fd, mode_t mode)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fchmod(fd, mode, perms);
+ return cmount->get_client()->fchmod(fd, mode, cmount->default_perms);
}
extern "C" int ceph_chown(struct ceph_mount_info *cmount, const char *path,
int uid, int gid)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->chown(path, uid, gid, perms);
+ return cmount->get_client()->chown(path, uid, gid, cmount->default_perms);
}
extern "C" int ceph_fchown(struct ceph_mount_info *cmount, int fd,
int uid, int gid)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fchown(fd, uid, gid, perms);
+ return cmount->get_client()->fchown(fd, uid, gid, cmount->default_perms);
}
extern "C" int ceph_lchown(struct ceph_mount_info *cmount, const char *path,
int uid, int gid)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lchown(path, uid, gid, perms);
+ return cmount->get_client()->lchown(path, uid, gid, cmount->default_perms);
}
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->utime(path, buf, perms);
+ return cmount->get_client()->utime(path, buf, cmount->default_perms);
}
extern "C" int ceph_flock(struct ceph_mount_info *cmount, int fd, int operation,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->truncate(path, size, perms);
+ return cmount->get_client()->truncate(path, size, cmount->default_perms);
}
// file ops
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->mknod(path, mode, perms, rdev);
+ return cmount->get_client()->mknod(path, mode, cmount->default_perms, rdev);
}
extern "C" int ceph_open(struct ceph_mount_info *cmount, const char *path,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->open(path, flags, perms, mode);
+ return cmount->get_client()->open(path, flags, cmount->default_perms, mode);
}
extern "C" int ceph_open_layout(struct ceph_mount_info *cmount, const char *path, int flags,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->open(path, flags, perms, mode, stripe_unit,
- stripe_count, object_size, data_pool);
+ return cmount->get_client()->open(path, flags, cmount->default_perms, mode,
+ stripe_unit, stripe_count,
+ object_size, data_pool);
}
extern "C" int ceph_close(struct ceph_mount_info *cmount, int fd)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->lseek(fd, offset, whence, perms);
+ return cmount->get_client()->lseek(fd, offset, whence, cmount->default_perms);
}
extern "C" int ceph_read(struct ceph_mount_info *cmount, int fd, char *buf,
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->ftruncate(fd, size, perms);
+ return cmount->get_client()->ftruncate(fd, size, cmount->default_perms);
}
extern "C" int ceph_fsync(struct ceph_mount_info *cmount, int fd, int syncdataonly)
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->fstat(fd, stbuf, perms);
+ return cmount->get_client()->fstat(fd, stbuf, cmount->default_perms);
}
extern "C" int ceph_sync_fs(struct ceph_mount_info *cmount)
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
return l.stripe_unit;
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
return l.stripe_count;
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
return l.object_size;
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
return l.pool_id;
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
string name = cmount->get_client()->get_pool_name(l.pool_id);
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
if (stripe_unit)
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- r = cmount->get_client()->describe_layout(path, &l, perms);
+ r = cmount->get_client()->describe_layout(path, &l, cmount->default_perms);
if (r < 0)
return r;
int rep = cmount->get_client()->get_pool_replication(l.pool_id);
{
if (!cmount->is_mounted())
return -ENOTCONN;
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return cmount->get_client()->get_caps_issued(path, perms);
+ return cmount->get_client()->get_caps_issued(path, cmount->default_perms);
}
extern "C" int ceph_get_stripe_unit_granularity(struct ceph_mount_info *cmount)
struct inodeno_t ino,
Inode **inode)
{
- UserPerm perms = cmount->get_client()->pick_my_perms();
- int r = (cmount->get_client())->lookup_ino(ino, perms, inode);
+ int r = (cmount->get_client())->lookup_ino(ino, cmount->default_perms, inode);
if (r) {
return r;
}
// Request the parent inode, so that we can look up the name
Inode *parent;
- r = (cmount->get_client())->lookup_parent(*inode, perms, &parent);
+ r = (cmount->get_client())->lookup_parent(*inode, cmount->default_perms, &parent);
if (r && r != -EINVAL) {
// Unexpected error
(cmount->get_client())->ll_forget(*inode, 1);
assert(parent != NULL);
// Finally, get the name (dentry) of the requested inode
- r = (cmount->get_client())->lookup_name(*inode, parent, perms);
+ r = (cmount->get_client())->lookup_name(*inode, parent, cmount->default_perms);
if (r) {
// Unexpected error
(cmount->get_client())->ll_forget(parent, 1);
struct Inode **i,
struct stat *attr)
{
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return (cmount->get_client()->ll_walk(name, i, attr, perms));
+ return (cmount->get_client()->ll_walk(name, i, attr, cmount->default_perms));
}
extern "C" int ceph_ll_getattr(class ceph_mount_info *cmount,
extern "C" off_t ceph_ll_lseek(class ceph_mount_info *cmount,
Fh *fh, off_t offset, int whence)
{
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return (cmount->get_client()->ll_lseek(fh, offset, whence, perms));
+ return (cmount->get_client()->ll_lseek(fh, offset, whence, cmount->default_perms));
}
extern "C" int ceph_ll_write(class ceph_mount_info *cmount,
extern "C" int ceph_ll_statfs(class ceph_mount_info *cmount,
Inode *in, struct statvfs *stbuf)
{
- UserPerm perms = cmount->get_client()->pick_my_perms();
- return (cmount->get_client()->ll_statfs(in, stbuf, perms));
+ return (cmount->get_client()->ll_statfs(in, stbuf, cmount->default_perms));
}
extern "C" int ceph_ll_readlink(class ceph_mount_info *cmount,