2019-12-19 22:34:07

by J. Bruce Fields

[permalink] [raw]
Subject: [PATCH] generic/529: use an ACL that doesn't confuse NFS

From: "J. Bruce Fields" <[email protected]>

For historical reasons having to do with Solaris ACL behavior, the Linux
client treats an ACL like the one used as an example here as equivalent
to a mode, causing listxattr to report that no ACL is set on the file.

(See the comment at the top of fs/nfs_common/nfsacl.c in the kernel
source for details, and the "bogus ACL_MASK entry" comment in the same
source file.) This causes a spurious generic/529 failure on NFS.

As far as I can tell any ACL should trigger the original XFS problem.
So, modify it so as not to hit this odd NFS corner case.

Signed-off-by: J. Bruce Fields <[email protected]>
---
src/t_attr_corruption.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/t_attr_corruption.c b/src/t_attr_corruption.c
index e7d435b1791f..b5513d44a288 100644
--- a/src/t_attr_corruption.c
+++ b/src/t_attr_corruption.c
@@ -59,7 +59,7 @@ int main(int argc, char *argv[])
.e = {
{htole16(1), 0, 0},
{htole16(4), 0, 0},
- {htole16(0x10), 0, 0},
+ {htole16(0x10), htole16(4), 0},
{htole16(0x20), 0, 0},
},
};
--
2.24.1


2020-01-07 11:42:39

by Murphy Zhou

[permalink] [raw]
Subject: Re: [PATCH] generic/529: use an ACL that doesn't confuse NFS

On Thu, Dec 19, 2019 at 05:33:36PM -0500, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <[email protected]>
>
> For historical reasons having to do with Solaris ACL behavior, the Linux
> client treats an ACL like the one used as an example here as equivalent
> to a mode, causing listxattr to report that no ACL is set on the file.
>
> (See the comment at the top of fs/nfs_common/nfsacl.c in the kernel
> source for details, and the "bogus ACL_MASK entry" comment in the same
> source file.) This causes a spurious generic/529 failure on NFS.

Thanks Bruce very much for the fix!

Murphy

>
> As far as I can tell any ACL should trigger the original XFS problem.
> So, modify it so as not to hit this odd NFS corner case.
>
> Signed-off-by: J. Bruce Fields <[email protected]>
> ---
> src/t_attr_corruption.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/t_attr_corruption.c b/src/t_attr_corruption.c
> index e7d435b1791f..b5513d44a288 100644
> --- a/src/t_attr_corruption.c
> +++ b/src/t_attr_corruption.c
> @@ -59,7 +59,7 @@ int main(int argc, char *argv[])
> .e = {
> {htole16(1), 0, 0},
> {htole16(4), 0, 0},
> - {htole16(0x10), 0, 0},
> + {htole16(0x10), htole16(4), 0},
> {htole16(0x20), 0, 0},
> },
> };
> --
> 2.24.1
>