On 5/7/25 11:34 AM, Jeff Layton wrote:
On Wed, 2025-05-07 at 10:45 -0400, cel@kernel.org wrote:
From: Chuck Lever chuck.lever@oracle.com
RFC 7862 states that if an NFS server implements a CLONE operation, it MUST also implement FATTR4_CLONE_BLKSIZE. NFSD implements CLONE, but does not implement FATTR4_CLONE_BLKSIZE.
Note that in Section 12.2, RFC 7862 claims that FATTR4_CLONE_BLKSIZE is RECOMMENDED, not REQUIRED. Likely this is because a minor version is not permitted to add a REQUIRED attribute. Confusing.
Isn't CLONE itself an optional operation? It wouldn't make sense to REQUIRE this attribute on servers that don't support CLONE, so I think it makes sense that it should be optional. Anyway, I'm just being pedantic.
My take:
It's problematic that one part of the specification states that FATTR4_CLONE_BLKSIZE is mandatory-to-implement (with a MUST), and another categorizes the attribute as RECOMMENDED.
I understand the reasons why this might be necessary, but IMO implementers who do not read the whole document might see one or the other of these (because they are in widely separated sections) and then do the wrong thing.
Section 12.2 needs to provide an explicit explanation to make it clear.