nfsd: add fattr support for user extended attributes
authorFrank van der Linden <fllinden@amazon.com>
Tue, 23 Jun 2020 22:39:27 +0000 (22:39 +0000)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 13 Jul 2020 21:27:03 +0000 (17:27 -0400)
Check if user extended attributes are supported for an inode,
and return the answer when being queried for file attributes.

An exported filesystem can now signal its RFC8276 user extended
attributes capability.

Signed-off-by: Frank van der Linden <fllinden@amazon.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4xdr.c

index 8bacc0c..259d5ad 100644 (file)
@@ -3213,6 +3213,15 @@ out_acl:
        }
 #endif
 
+       if (bmval2 & FATTR4_WORD2_XATTR_SUPPORT) {
+               p = xdr_reserve_space(xdr, 4);
+               if (!p)
+                       goto out_resource;
+               err = xattr_supported_namespace(d_inode(dentry),
+                                               XATTR_USER_PREFIX);
+               *p++ = cpu_to_be32(err == 0);
+       }
+
        attrlen = htonl(xdr->buf->len - attrlen_offset - 4);
        write_bytes_to_xdr_buf(xdr->buf, attrlen_offset, &attrlen, 4);
        status = nfs_ok;