[SCM] Samba Shared Repository - branch master updated
Ralph Böhme
slow at samba.org
Thu Oct 6 08:35:02 UTC 2022
The branch, master has been updated
via 9a8bc67f4a5 vfs_glusterfs: Remove special handling of O_CREAT flag
from 3ad0fa69255 pyldb: Fix typos in function names
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit 9a8bc67f4a5e4afecd648523f43a8e97584fcfd0
Author: Anoop C S <anoopcs at samba.org>
Date: Mon Oct 3 15:36:13 2022 +0530
vfs_glusterfs: Remove special handling of O_CREAT flag
Special handling of O_CREAT flag in SMB_VFS_OPENAT code path was the
only option to ensure correctness due to a bug in libgfapi as detailed
in issue #3838[1] from GlusterFS upstream. This has been fixed recently
so that O_CREAT is handled correctly within glfs_openat() enbaling us to
remove the corresponding special case from vfs_gluster_openat().
[1] https://github.com/gluster/glusterfs/issues/3838
Signed-off-by: Anoop C S <anoopcs at samba.org>
Reviewed-by: Ralph Boehme <slow at samba.org>
Autobuild-User(master): Ralph Böhme <slow at samba.org>
Autobuild-Date(master): Thu Oct 6 08:34:56 UTC 2022 on sn-devel-184
-----------------------------------------------------------------------
Summary of changes:
source3/modules/vfs_glusterfs.c | 78 ++++++++++++++++-------------------------
1 file changed, 30 insertions(+), 48 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/modules/vfs_glusterfs.c b/source3/modules/vfs_glusterfs.c
index 33f941aaca9..4284d7dea1d 100644
--- a/source3/modules/vfs_glusterfs.c
+++ b/source3/modules/vfs_glusterfs.c
@@ -825,61 +825,43 @@ static int vfs_gluster_openat(struct vfs_handle_struct *handle,
became_root = true;
}
- /*
- * O_CREAT flag in open is handled differently in a way which is *NOT*
- * safe against symlink race situations. We use glfs_creat() instead
- * for correctness as glfs_openat() is broken with O_CREAT present
- * in open flags.
- */
- if (flags & O_CREAT) {
- if (fsp_get_pathref_fd(dirfsp) != AT_FDCWD) {
- /*
- * Replace smb_fname with full_path constructed above.
- */
- smb_fname = full_fname;
+ if (fsp_get_pathref_fd(dirfsp) != AT_FDCWD) {
+#ifdef HAVE_GFAPI_VER_7_11
+ /*
+ * Fetch Gluster fd for parent directory using dirfsp
+ * before calling glfs_openat();
+ */
+ pglfd = vfs_gluster_fetch_glfd(handle, dirfsp);
+ if (pglfd == NULL) {
+ END_PROFILE(syscall_openat);
+ DBG_ERR("Failed to fetch gluster fd\n");
+ return -1;
}
+ glfd = glfs_openat(pglfd,
+ smb_fname->base_name,
+ flags,
+ how->mode);
+#else
+ /*
+ * Replace smb_fname with full_path constructed above.
+ */
+ smb_fname = full_fname;
+#endif
+ }
+
+ if (pglfd == NULL) {
/*
* smb_fname can either be a full_path or the same one
* as received from the caller. In the latter case we
* are operating at current working directory.
*/
- glfd = glfs_creat(handle->data,
- smb_fname->base_name,
- flags,
- how->mode);
- } else {
- if (fsp_get_pathref_fd(dirfsp) != AT_FDCWD) {
-#ifdef HAVE_GFAPI_VER_7_11
- /*
- * Fetch Gluster fd for parent directory using dirfsp
- * before calling glfs_openat();
- */
- pglfd = vfs_gluster_fetch_glfd(handle, dirfsp);
- if (pglfd == NULL) {
- END_PROFILE(syscall_openat);
- DBG_ERR("Failed to fetch gluster fd\n");
- return -1;
- }
-
- glfd = glfs_openat(pglfd,
- smb_fname->base_name,
- flags,
- how->mode);
-#else
- /*
- * Replace smb_fname with full_path constructed above.
- */
- smb_fname = full_fname;
-#endif
- }
-
- if (pglfd == NULL) {
- /*
- * smb_fname can either be a full_path or the same one
- * as received from the caller. In the latter case we
- * are operating at current working directory.
- */
+ if (flags & O_CREAT) {
+ glfd = glfs_creat(handle->data,
+ smb_fname->base_name,
+ flags,
+ how->mode);
+ } else {
glfd = glfs_open(handle->data,
smb_fname->base_name,
flags);
--
Samba Shared Repository
More information about the samba-cvs
mailing list