}
/* Ceph user-credentials */
-static struct UserPerm *vfs_ceph_userperm_new(struct connection_struct *conn)
+static struct UserPerm *vfs_ceph_userperm_new(struct vfs_ceph_config *config,
+ struct connection_struct *conn)
{
const struct security_unix_token *unix_token = NULL;
unix_token->groups);
}
-static void vfs_ceph_userperm_del(struct UserPerm *uperm)
+static void vfs_ceph_userperm_del(struct vfs_ceph_config *config,
+ struct UserPerm *uperm)
{
if (uperm != NULL) {
ceph_userperm_destroy(uperm);
cfh->iref.inode = NULL;
}
if (cfh->uperm != NULL) {
- vfs_ceph_userperm_del(cfh->uperm);
+ vfs_ceph_userperm_del(cfh->config, cfh->uperm);
cfh->uperm = NULL;
}
cfh->fd = -1;
cme = config->mount_entry;
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
struct vfs_ceph_fh,
vfs_ceph_fsp_ext_destroy_cb);
if (*out_cfh == NULL) {
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return -ENOMEM;
}
(*out_cfh)->cme = cme;
DBG_DEBUG("[ceph] ceph_ll_walk: name=%s\n", name);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
flags,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
{
struct UserPerm *uperm = NULL;
int ret = -1;
+ struct vfs_ceph_config *config = NULL;
+
+ SMB_VFS_HANDLE_GET_DATA(handle, config,
+ struct vfs_ceph_config,
+ return -ENOMEM);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
ret = vfs_ceph_ll_getattr2(handle, iref, uperm, st);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_setattr: ino=%" PRIu64 " uid=%u gid=%u\n",
iref->ino, uid, gid);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
&stx,
CEPH_STATX_UID | CEPH_STATX_GID,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_lookup: parent-ino=%" PRIu64 " name=%s\n",
parent->ino, name);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
0,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
if (ret != 0) {
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_getxattr: ino=%" PRIu64 " name=%s\n",
iref->ino, name);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
size,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_setxattr: ino=%" PRIu64 " name=%s "
"size=%zu\n", iref->ino, name, size);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
flags,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_listxattr: ino=%" PRIu64 "\n", iref->ino);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
list_size,
uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}
DBG_DEBUG("[ceph] ceph_ll_removexattr: ino=%" PRIu64 " name=%s\n",
iref->ino, name);
- uperm = vfs_ceph_userperm_new(handle->conn);
+ uperm = vfs_ceph_userperm_new(config, handle->conn);
if (uperm == NULL) {
return -ENOMEM;
}
ret = ceph_ll_removexattr(config->mount, iref->inode, name, uperm);
- vfs_ceph_userperm_del(uperm);
+ vfs_ceph_userperm_del(config, uperm);
return ret;
}