From 99a74ff5e6a9f87ad7a650cb44e0f925f834b3a1 Mon Sep 17 00:00:00 2001 From: "Paul B. Henson" Date: Thu, 13 Jan 2011 10:16:13 -0800 Subject: Fix bug #7909 - map SYNCHRONIZE acl permission statically in zfs_acl vfs module. Autobuild-User: Jeremy Allison Autobuild-Date: Thu Jan 13 20:02:32 CET 2011 on sn-devel-104 --- source3/modules/nfs4_acls.c | 4 +++- source3/modules/vfs_zfsacl.c | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/source3/modules/nfs4_acls.c b/source3/modules/nfs4_acls.c index 1913946144..e2f9fe3a81 100644 --- a/source3/modules/nfs4_acls.c +++ b/source3/modules/nfs4_acls.c @@ -280,7 +280,9 @@ static bool smbacl4_nfs42win(TALLOC_CTX *mem_ctx, SMB4ACL_T *theacl, /* in */ DEBUG(10, ("mapped ace flags: 0x%x => 0x%x\n", ace->aceFlags, mapped_ace_flags)); - mask = ace->aceMask; + /* Windows clients expect SYNC on acls to + correctly allow rename. See bug #7909. */ + mask = ace->aceMask | SMB_ACE4_SYNCHRONIZE; init_sec_ace(&nt_ace_list[good_aces++], &sid, ace->aceType, mask, mapped_ace_flags); diff --git a/source3/modules/vfs_zfsacl.c b/source3/modules/vfs_zfsacl.c index 98c9bcf760..8a2c378e05 100644 --- a/source3/modules/vfs_zfsacl.c +++ b/source3/modules/vfs_zfsacl.c @@ -124,6 +124,9 @@ static bool zfs_process_smbacl(files_struct *fsp, SMB4ACL_T *smbacl) acebuf[i].a_type = aceprop->aceType; acebuf[i].a_flags = aceprop->aceFlags; acebuf[i].a_access_mask = aceprop->aceMask; + /* SYNC on acls is a no-op on ZFS. + See bug #7909. */ + acebuf[i].a_access_mask &= ~SMB_ACE4_SYNCHRONIZE; acebuf[i].a_who = aceprop->who.id; if(aceprop->flags & SMB_ACE4_ID_SPECIAL) { switch(aceprop->who.special_id) { -- cgit