]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
NFS: Fix attribute delegation behaviour on exclusive create
authorTrond Myklebust <trond.myklebust@hammerspace.com>
Wed, 23 Oct 2024 13:35:43 +0000 (09:35 -0400)
committerAnna Schumaker <anna.schumaker@oracle.com>
Mon, 4 Nov 2024 15:24:19 +0000 (10:24 -0500)
When the client does an exclusive create and the server decides to store
the verifier in the timestamps, a SETATTR is subsequently sent to fix up
those timestamps. When that is the case, suppress the exceptions for
attribute delegations in nfs4_bitmap_copy_adjust().

Fixes: 32215c1f893a ("NFSv4: Don't request atime/mtime/size if they are delegated to us")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Anna Schumaker <anna.schumaker@oracle.com>
fs/nfs/nfs4proc.c

index cd2fbde2e6d72efd75702f6c48a875fb7aec1051..9d40319e063dea48bce9c94bc4ba971fc839b4ba 100644 (file)
@@ -3452,6 +3452,10 @@ static int nfs4_do_setattr(struct inode *inode, const struct cred *cred,
                adjust_flags |= NFS_INO_INVALID_MODE;
        if (sattr->ia_valid & (ATTR_UID | ATTR_GID))
                adjust_flags |= NFS_INO_INVALID_OTHER;
+       if (sattr->ia_valid & ATTR_ATIME)
+               adjust_flags |= NFS_INO_INVALID_ATIME;
+       if (sattr->ia_valid & ATTR_MTIME)
+               adjust_flags |= NFS_INO_INVALID_MTIME;
 
        do {
                nfs4_bitmap_copy_adjust(bitmask, nfs4_bitmask(server, fattr->label),