summaryrefslogtreecommitdiff
path: root/fs/nfsd/vfs.c
diff options
context:
space:
mode:
authorMaxime Ripard <mripard@kernel.org>2025-08-20 16:08:49 +0200
committerMaxime Ripard <mripard@kernel.org>2025-08-20 16:08:49 +0200
commit1a2cf179e2973f6801c67397ecc987391b084bcf (patch)
tree9212405e147d9750d493f9f785afdb2769a263c7 /fs/nfsd/vfs.c
parent3271faf42d135bcf569c3ff6af55c21858eec212 (diff)
parentc17b750b3ad9f45f2b6f7e6f7f4679844244f0b9 (diff)
Merge drm/drm-fixes into drm-misc-fixes
Update drm-misc-fixes to -rc2. Signed-off-by: Maxime Ripard <mripard@kernel.org>
Diffstat (limited to 'fs/nfsd/vfs.c')
-rw-r--r--fs/nfsd/vfs.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index 98ab55ba3ced..edf050766e57 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -470,7 +470,15 @@ static int __nfsd_setattr(struct dentry *dentry, struct iattr *iap)
if (!iap->ia_valid)
return 0;
- iap->ia_valid |= ATTR_CTIME;
+ /*
+ * If ATTR_DELEG is set, then this is an update from a client that
+ * holds a delegation. If this is an update for only the atime, the
+ * ctime should not be changed. If the update contains the mtime
+ * too, then ATTR_CTIME should already be set.
+ */
+ if (!(iap->ia_valid & ATTR_DELEG))
+ iap->ia_valid |= ATTR_CTIME;
+
return notify_change(&nop_mnt_idmap, dentry, iap, NULL);
}