The branch, master has been updated via 4f093ae6c9e s3: VFS: ceph. Fix enumerating directories. dirfsp->fh->fd != AT_FDCWD in this case. from 000f389d09e gitlab: Use shorter names for Samba AD DC env with MIT KRB5
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 4f093ae6c9ee5b3e0f98b47fbacb0e37fad62052 Author: Jeremy Allison <j...@samba.org> Date: Fri Jul 16 18:53:24 2021 -0700 s3: VFS: ceph. Fix enumerating directories. dirfsp->fh->fd != AT_FDCWD in this case. Same as the fix for glusterfs. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14766 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Ralph Böhme <s...@samba.org> Autobuild-Date(master): Thu Aug 5 06:15:14 UTC 2021 on sn-devel-184 ----------------------------------------------------------------------- Summary of changes: source3/modules/vfs_ceph.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/modules/vfs_ceph.c b/source3/modules/vfs_ceph.c index 594ebce4b9a..3f55d724143 100644 --- a/source3/modules/vfs_ceph.c +++ b/source3/modules/vfs_ceph.c @@ -403,14 +403,23 @@ static int cephwrap_openat(struct vfs_handle_struct *handle, int flags, mode_t mode) { + struct smb_filename *name = NULL; bool have_opath = false; bool became_root = false; int result = -ENOENT; /* - * cephfs API doesn't have ceph_openat(), so for now assert this. + * ceph doesn't have openat(). */ - SMB_ASSERT(fsp_get_pathref_fd(dirfsp) == AT_FDCWD); + if (fsp_get_pathref_fd(dirfsp) != AT_FDCWD) { + name = full_path_from_dirfsp_atname(talloc_tos(), + dirfsp, + smb_fname); + if (name == NULL) { + return -1; + } + smb_fname = name; + } DBG_DEBUG("[CEPH] openat(%p, %s, %p, %d, %d)\n", handle, smb_fname_str_dbg(smb_fname), fsp, flags, mode); @@ -438,6 +447,7 @@ static int cephwrap_openat(struct vfs_handle_struct *handle, } out: + TALLOC_FREE(name); fsp->fsp_flags.have_proc_fds = false; DBG_DEBUG("[CEPH] open(...) = %d\n", result); WRAP_RETURN(result); -- Samba Shared Repository