From: Anoop C S Date: Fri, 19 Aug 2022 06:45:10 +0000 (+0530) Subject: vfs_glusterfs: Use glfs_mknodat() for SMB_VFS_MKNODAT X-Git-Tag: talloc-2.4.0~1284 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a4235200383fa4dc2f376ce042ed067a45f105d5;p=thirdparty%2Fsamba.git vfs_glusterfs: Use glfs_mknodat() for SMB_VFS_MKNODAT BUG: https://bugzilla.samba.org/show_bug.cgi?id=15157 Signed-off-by: Anoop C S Reviewed-by: Jeremy Allison --- diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c index b2de957d1c7..bfcf85007c0 100644 --- a/source3/modules/vfs_glusterfs.c +++ b/source3/modules/vfs_glusterfs.c @@ -2179,14 +2179,29 @@ static int vfs_gluster_mknodat(struct vfs_handle_struct *handle, mode_t mode, SMB_DEV_T dev) { - struct smb_filename *full_fname = NULL; int ret; +#ifdef HAVE_GFAPI_VER_7_11 + glfs_fd_t *pglfd = NULL; + + START_PROFILE(syscall_mknodat); + + pglfd = vfs_gluster_fetch_glfd(handle, dirfsp); + if (pglfd == NULL) { + END_PROFILE(syscall_mknodat); + DBG_ERR("Failed to fetch gluster fd\n"); + return -1; + } + + ret = glfs_mknodat(pglfd, smb_fname->base_name, mode, dev); +#else + struct smb_filename *full_fname = NULL; + START_PROFILE(syscall_mknodat); full_fname = full_path_from_dirfsp_atname(talloc_tos(), - dirfsp, - smb_fname); + dirfsp, + smb_fname); if (full_fname == NULL) { END_PROFILE(syscall_mknodat); return -1; @@ -2195,6 +2210,7 @@ static int vfs_gluster_mknodat(struct vfs_handle_struct *handle, ret = glfs_mknod(handle->data, full_fname->base_name, mode, dev); TALLOC_FREE(full_fname); +#endif END_PROFILE(syscall_mknodat);