generic/529: use an ACL that doesn't confuse NFS
diff mbox series

Message ID 20191219223336.GC12026@fieldses.org
State New
Headers show
Series
  • generic/529: use an ACL that doesn't confuse NFS
Related show

Commit Message

bfields@fieldses.org Dec. 19, 2019, 10:33 p.m. UTC
From: "J. Bruce Fields" <bfields@redhat.com>

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 <bfields@redhat.com>
---
 src/t_attr_corruption.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Murphy Zhou Jan. 7, 2020, 11:41 a.m. UTC | #1
On Thu, Dec 19, 2019 at 05:33:36PM -0500, J. Bruce Fields wrote:
> From: "J. Bruce Fields" <bfields@redhat.com>
> 
> 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 <bfields@redhat.com>
> ---
>  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
>

Patch
diff mbox series

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},
 		},
 	};