The branch, master has been updated via fd1b09bb3b2 VFS: glusterfs: Ensure vfs_gluster_fsetxattr() only uses an io fd for a handle based call. via d89565ceeb5 VFS: glusterfs: Ensure vfs_gluster_flistxattr() only uses an io fd for a handle based call. via cb782687146 VFS: ceph: Ensure cephwrap_fsetxattr() only uses an io fd for a handle based call. via e4540a6b635 VFS: ceph: Ensure cephwrap_flistxattr() only uses an io fd for a handle based call. from 16a1aefb72f smbd: call set_current_user_info() in smbd_become_authenticated_pipe_user()
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit fd1b09bb3b2b54abb8830aa15539cd8d4b8237a1 Author: Jeremy Allison <j...@samba.org> Date: Thu Mar 11 23:06:37 2021 -0800 VFS: glusterfs: Ensure vfs_gluster_fsetxattr() only uses an io fd for a handle based call. Otherwise fall back to pathname based. This is the same as the fallback used in vfs_default.c Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Mar 12 20:38:03 UTC 2021 on sn-devel-184 commit d89565ceeb5b7df2d230382a636ff3983898aeec Author: Jeremy Allison <j...@samba.org> Date: Thu Mar 11 23:03:19 2021 -0800 VFS: glusterfs: Ensure vfs_gluster_flistxattr() only uses an io fd for a handle based call. Otherwise fall back to pathname based. This is the same as the fallback used in vfs_default.c Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit cb782687146505d6bcc653f62f175befd4792360 Author: Jeremy Allison <j...@samba.org> Date: Thu Mar 11 23:00:14 2021 -0800 VFS: ceph: Ensure cephwrap_fsetxattr() only uses an io fd for a handle based call. Otherwise fall back to pathname based. This is the same as the fallback used in vfs_default.c Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> commit e4540a6b6351a0c3c3a810d1100892fb23e19b7b Author: Jeremy Allison <j...@samba.org> Date: Thu Mar 11 22:55:33 2021 -0800 VFS: ceph: Ensure cephwrap_flistxattr() only uses an io fd for a handle based call. Otherwise fall back to pathname based. This is the same as the fallback used in vfs_default.c Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> ----------------------------------------------------------------------- Summary of changes: source3/modules/vfs_ceph.c | 41 ++++++++++++++++++++++++++++++++++++++--- source3/modules/vfs_glusterfs.c | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 68 insertions(+), 6 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c index 6eb432e2c98..e2f3691bc4f 100644 --- a/source3/modules/vfs_ceph.c +++ b/source3/modules/vfs_ceph.c @@ -1283,7 +1283,23 @@ static ssize_t cephwrap_flistxattr(struct vfs_handle_struct *handle, struct file int ret; DBG_DEBUG("[CEPH] flistxattr(%p, %p, %p, %llu)\n", handle, fsp, list, llu(size)); - ret = ceph_flistxattr(handle->data, fsp_get_io_fd(fsp), list, size); + if (!fsp->fsp_flags.is_pathref) { + /* + * We can use an io_fd to list xattrs. + */ + ret = ceph_flistxattr(handle->data, + fsp_get_io_fd(fsp), + list, + size); + } else { + /* + * This is no longer a handle based call. + */ + ret = ceph_listxattr(handle->data, + fsp->fsp_name->base_name, + list, + size); + } DBG_DEBUG("[CEPH] flistxattr(...) = %d\n", ret); if (ret < 0) { WRAP_RETURN(ret); @@ -1316,8 +1332,27 @@ static int cephwrap_fsetxattr(struct vfs_handle_struct *handle, struct files_str { int ret; DBG_DEBUG("[CEPH] fsetxattr(%p, %p, %s, %p, %llu, %d)\n", handle, fsp, name, value, llu(size), flags); - ret = ceph_fsetxattr(handle->data, fsp_get_io_fd(fsp), - name, value, size, flags); + if (!fsp->fsp_flags.is_pathref) { + /* + * We can use an io_fd to set xattrs. + */ + ret = ceph_fsetxattr(handle->data, + fsp_get_io_fd(fsp), + name, + value, + size, + flags); + } else { + /* + * This is no longer a handle based call. + */ + ret = ceph_setxattr(handle->data, + fsp->fsp_name->base_name, + name, + value, + size, + flags); + } DBG_DEBUG("[CEPH] fsetxattr(...) = %d\n", ret); WRAP_RETURN(ret); } diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c index c3fe1c60f7f..38c8a48c378 100644 --- a/source3/modules/vfs_glusterfs.c +++ b/source3/modules/vfs_glusterfs.c @@ -2049,8 +2049,20 @@ static ssize_t vfs_gluster_flistxattr(struct vfs_handle_struct *handle, DBG_ERR("Failed to fetch gluster fd\n"); return -1; } - - return glfs_flistxattr(glfd, list, size); + if (!fsp->fsp_flags.is_pathref) { + /* + * We can use an io_fd to list xattrs. + */ + return glfs_flistxattr(glfd, list, size); + } else { + /* + * This is no longer a handle based call. + */ + return glfs_listxattr(handle->data, + fsp->fsp_name->base_name, + list, + size); + } } static int vfs_gluster_removexattr(struct vfs_handle_struct *handle, @@ -2082,7 +2094,22 @@ static int vfs_gluster_fsetxattr(struct vfs_handle_struct *handle, return -1; } - return glfs_fsetxattr(glfd, name, value, size, flags); + if (!fsp->fsp_flags.is_pathref) { + /* + * We can use an io_fd to set xattrs. + */ + return glfs_fsetxattr(glfd, name, value, size, flags); + } else { + /* + * This is no longer a handle based call. + */ + return glfs_setxattr(handle->data, + fsp->fsp_name->base_name, + name, + value, + size, + flags); + } } /* AIO Operations */ -- Samba Shared Repository