summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVitaliy Gusev <gusev.vitaliy@gmail.com>2017-01-16 11:34:17 -0500
committerDan McDonald <danmcd@omniti.com>2017-01-16 11:35:32 -0500
commit77e6f23f311b4352dcc27ce2fcbd2c06546ce837 (patch)
treeb677d7f9f1a86a9d5405ce21174d6e3855ba3dff
parentab2e2ee8084b5368a6eff4d96fbad03a661c8ace (diff)
downloadillumos-joyent-77e6f23f311b4352dcc27ce2fcbd2c06546ce837.tar.gz
7693 pynfs: OPEN4 st_open.testCreatExclusiveFile FAILURE
Reviewed by: Andrew Stormont <andyjstormont@gmail.com> Reviewed by: Robert Mustacchi <rm@joyent.com> Reviewed by: Marcel Telka <marcel@telka.sk> Approved by: Dan McDonald <danmcd@omniti.com>
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_srv.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv.c b/usr/src/uts/common/fs/nfs/nfs4_srv.c
index 700bd249af..0865deb91d 100644
--- a/usr/src/uts/common/fs/nfs/nfs4_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs4_srv.c
@@ -6163,7 +6163,7 @@ rfs4_lookupfile(component4 *component, struct svc_req *req,
static nfsstat4
create_vnode(vnode_t *dvp, char *nm, vattr_t *vap, createmode4 mode,
- timespec32_t *mtime, cred_t *cr, vnode_t **vpp, bool_t *created)
+ cred_t *cr, vnode_t **vpp, bool_t *created)
{
int error;
nfsstat4 status = NFS4_OK;
@@ -6233,11 +6233,12 @@ tryagain:
}
/* Check for duplicate request */
- ASSERT(mtime != 0);
va.va_mask = AT_MTIME;
error = VOP_GETATTR(*vpp, &va, 0, cr, NULL);
if (!error) {
/* We found the file */
+ const timestruc_t *mtime = &vap->va_mtime;
+
if (va.va_mtime.tv_sec != mtime->tv_sec ||
va.va_mtime.tv_nsec != mtime->tv_nsec) {
/* but its not our creation */
@@ -6472,7 +6473,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
return (NFS4ERR_SERVERFAULT);
}
- status = create_vnode(dvp, name, vap, args->mode, mtime,
+ status = create_vnode(dvp, name, vap, args->mode,
cs->cr, &vp, &created);
if (nm != name)
kmem_free(name, MAXPATHLEN + 1);