s3: modules: vfs_ceph: Remove CHMOD_ACL in cephwrap_mkdir().
authorJeremy Allison <jra@samba.org>
Thu, 17 May 2018 18:18:12 +0000 (11:18 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 25 May 2018 16:39:24 +0000 (18:39 +0200)
Now I understand the use of the mask in POSIX ACLs
this extra step is no longer needed.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/modules/vfs_ceph.c

index bac88581133b454a87ac48f49807f0ea36921300..f3b651b894e023493ab7d3c36f91da01a63888b8 100644 (file)
@@ -368,7 +368,6 @@ static int cephwrap_mkdir(struct vfs_handle_struct *handle,
                          mode_t mode)
 {
        int result;
-       bool has_dacl = False;
        char *parent = NULL;
        const char *path = smb_fname->base_name;
 
@@ -376,34 +375,14 @@ static int cephwrap_mkdir(struct vfs_handle_struct *handle,
 
        if (lp_inherit_acls(SNUM(handle->conn))
            && parent_dirname(talloc_tos(), path, &parent, NULL)
-           && (has_dacl = directory_has_default_acl(handle->conn, parent)))
+           && directory_has_default_acl(handle->conn, parent)) {
                mode = 0777;
+       }
 
        TALLOC_FREE(parent);
 
        result = ceph_mkdir(handle->data, path, mode);
-
-       /*
-        * Note. This order is important
-        */
-       if (result) {
-               WRAP_RETURN(result);
-       } else if (result == 0 && !has_dacl) {
-               /*
-                * We need to do this as the default behavior of POSIX ACLs
-                * is to set the mask to be the requested group permission
-                * bits, not the group permission bits to be the requested
-                * group permission bits. This is not what we want, as it will
-                * mess up any inherited ACL bits that were set. JRA.
-                */
-               int saved_errno = errno; /* We may get ENOSYS */
-               if ((SMB_VFS_CHMOD_ACL(handle->conn, smb_fname, mode) == -1) &&
-                               (errno == ENOSYS)) {
-                       errno = saved_errno;
-               }
-       }
-
-       return result;
+       return WRAP_RETURN(result);
 }
 
 static int cephwrap_rmdir(struct vfs_handle_struct *handle,