]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
NFSD: fix setting FMODE_NOCMTIME in nfs4_open_delegation
authorOlga Kornievskaia <okorniev@redhat.com>
Fri, 19 Dec 2025 17:59:55 +0000 (12:59 -0500)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 26 Jan 2026 15:10:58 +0000 (10:10 -0500)
fstests generic/215 and generic/407 were failing because the server
wasn't updating mtime properly. When deleg attribute support is not
compiled in and thus no attribute delegation was given, the server
was skipping updating mtime and ctime because FMODE_NOCMTIME was
uncoditionally set for the write delegation.

Fixes: e5e9b24ab8fa ("nfsd: freeze c/mtime updates with outstanding WRITE_ATTRS delegation")
Cc: stable@vger.kernel.org
Signed-off-by: Olga Kornievskaia <okorniev@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
fs/nfsd/nfs4state.c

index d854eac6db4206ad4129eea872c1205841b983a1..b46e793ab0d20bd207d7ecb8140dee5fa0d48357 100644 (file)
@@ -6353,7 +6353,8 @@ nfs4_open_delegation(struct svc_rqst *rqstp, struct nfsd4_open *open,
                dp->dl_ctime = stat.ctime;
                dp->dl_mtime = stat.mtime;
                spin_lock(&f->f_lock);
-               f->f_mode |= FMODE_NOCMTIME;
+               if (deleg_ts)
+                       f->f_mode |= FMODE_NOCMTIME;
                spin_unlock(&f->f_lock);
                trace_nfsd_deleg_write(&dp->dl_stid.sc_stateid);
        } else {