On Thu, Mar 12, 2020 at 05:15:10PM +0100, Mkrtchyan, Tigran wrote: > > + fattr4_word2_nfs42_mask = FATTR4_WORD2_NFS42_MASK; > > + > > + if (minorversion >= 2) { > > I am not sure you need this extra check as by querying for FATTR4_WORD0_SUPPORTED_ATTRS > server already will return FATTR4_WORD2_XATTR_SUPPORT if supported. There used to be a mount option check here, which I later removed. That means that fattr4_word2_nfs42_mask is no longer needed, so I'll remove that. As for the attribute itself: I suppose the question here is what the client should use to assume the server has RFC 8276 support: 1) The xattr_support attribute exists 2) The xattr support attribute exists *and* it's true for the root fh Currently the code does 2) in one operation. That might not be 100% correct - the RFC does mention that (section 8.2): "Before interrogating this attribute using GETATTR, a client should determine whether it is a supported attribute by interrogating the supported_attrs attribute." That's a "should", not a "MUST", but it's still waving its finger at you not to do this. Since 8.2.1 says: "However, a client may reasonably assume that a server (or file system) that does not support the xattr_support attribute does not provide xattr support, and it acts on that basis." ..I think you're right, and the code should just use the existence of the attribute as a signal that the server knows about xattrs - operations should still error out correctly if it doesn't. I'll make that change, thanks. Frank