summaryrefslogtreecommitdiff
path: root/sys/nfs/nfs_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/nfs/nfs_vnops.c')
-rw-r--r--sys/nfs/nfs_vnops.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/nfs/nfs_vnops.c b/sys/nfs/nfs_vnops.c
index 88665f9a3ef..21d62b8104c 100644
--- a/sys/nfs/nfs_vnops.c
+++ b/sys/nfs/nfs_vnops.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: nfs_vnops.c,v 1.183 2020/06/24 22:03:44 cheloha Exp $ */
+/* $OpenBSD: nfs_vnops.c,v 1.184 2020/09/27 16:40:44 matthieu Exp $ */
/* $NetBSD: nfs_vnops.c,v 1.62.4.1 1996/07/08 20:26:52 jtc Exp $ */
/*
@@ -1414,6 +1414,7 @@ nfs_create(void *v)
struct componentname *cnp = ap->a_cnp;
struct nfsv2_sattr *sp;
struct nfsm_info info;
+ struct timespec ts;
u_int32_t *tl;
int32_t t1;
struct nfsnode *np = NULL;
@@ -1486,8 +1487,14 @@ nfsmout:
fmode &= ~O_EXCL;
goto again;
}
- } else if (info.nmi_v3 && (fmode & O_EXCL))
+ } else if (info.nmi_v3 && (fmode & O_EXCL)) {
+ getnanotime(&ts);
+ if (vap->va_atime.tv_sec == VNOVAL)
+ vap->va_atime = ts;
+ if (vap->va_mtime.tv_sec == VNOVAL)
+ vap->va_mtime = ts;
error = nfs_setattrrpc(newvp, vap, cnp->cn_cred, cnp->cn_proc);
+ }
if (!error) {
if (cnp->cn_flags & MAKEENTRY)
nfs_cache_enter(dvp, newvp, cnp);