if (r < 0)
return r;
}
- return _getxattr(in.get(), name, value, size);
+ UserPerm perms(0, 0); // FIXME
+ return _getxattr(in.get(), name, value, size, perms);
}
int Client::ll_getxattr(Inode *in, const char *name, void *value,
tout(cct) << name << std::endl;
if (!cct->_conf->fuse_default_permissions) {
- int r = xattr_permission(in, name, MAY_READ, uid, gid);
+ int r = xattr_permission(in, name, MAY_READ, perms);
if (r < 0)
return r;
}
if (r < 0)
return r;
}
- return _setxattr(in.get(), name, value, size, flags);
+ UserPerm perms(0, 0); // FIXME
+ return _setxattr(in.get(), name, value, size, flags, perms);
}
int Client::check_data_pool_exist(string name, string value, const OSDMap *osdmap)
if (r < 0)
return r;
}
- return _removexattr(in.get(), name);
+ UserPerm perms(0, 0); // FIXME
+ return _removexattr(in.get(), name, perms);
}
int Client::ll_removexattr(Inode *in, const char *name, int uid, int gid)
int _mknod(Inode *dir, const char *name, mode_t mode, dev_t rdev, int uid=-1, int gid=-1, InodeRef *inp = 0);
int _do_setattr(Inode *in, struct stat *attr, int mask, int uid, int gid, InodeRef *inp);
int _setattr(Inode *in, struct stat *attr, int mask, int uid=-1, int gid=-1, InodeRef *inp = 0);
+ int _setattr(Inode *in, struct stat *attr, int mask, const UserPerm& perms,
+ InodeRef *inp = 0) {
+ return _setattr(in, attr, mask, perms.uid(), perms.gid(), inp);
+ }
int _setattr(InodeRef &in, struct stat *attr, int mask);
int _getattr(Inode *in, int mask, int uid=-1, int gid=-1, bool force=false);
int _getattr(InodeRef &in, int mask, int uid=-1, int gid=-1, bool force=false) {
return _getattr(in.get(), mask, uid, gid, force);
}
+ int _getattr(InodeRef &in, int mask, const UserPerm& perms, bool force=false) {
+ return _getattr(in, mask, perms, force);
+ }
int _readlink(Inode *in, char *buf, size_t size);
- int _getxattr(Inode *in, const char *name, void *value, size_t len, int uid=-1, int gid=-1);
+ int _getxattr(Inode *in, const char *name, void *value, size_t len,
+ int uid=-1, int gid=-1);
int _getxattr(InodeRef &in, const char *name, void *value, size_t len);
+ int _getxattr(Inode *in, const char *name, void *value, size_t len,
+ const UserPerm& perms) {
+ return _getxattr(in, name, value, len, perms.uid(), perms.gid());
+ }
int _listxattr(Inode *in, char *names, size_t len, int uid=-1, int gid=-1);
+ int _listxattr(Inode *in, char *names, size_t len, const UserPerm& perms) {
+ return _listxattr(in, names, len, perms.uid(), perms.gid());
+ }
int _do_setxattr(Inode *in, const char *name, const void *value, size_t len, int flags, int uid, int gid);
- int _setxattr(Inode *in, const char *name, const void *value, size_t len, int flags, int uid=-1, int gid=-1);
+ int _setxattr(Inode *in, const char *name, const void *value, size_t len,
+ int flags, int uid=-1, int gid=-1);
+ int _setxattr(Inode *in, const char *name, const void *value, size_t len,
+ int flags, const UserPerm& perms) {
+ return _setxattr(in, name, value, len, flags, perms.uid(), perms.gid());
+ }
int _setxattr(InodeRef &in, const char *name, const void *value, size_t len, int flags);
int _removexattr(Inode *in, const char *nm, int uid=-1, int gid=-1);
+ int _removexattr(Inode *in, const char *nm, const UserPerm& perms) {
+ return _removexattr(in, nm, perms.uid(), perms.gid());
+ }
int _removexattr(InodeRef &in, const char *nm);
int _open(Inode *in, int flags, mode_t mode, Fh **fhp, int uid, int gid);
int _renew_caps(Inode *in);