diff options
| author | Vitaliy Gusev <gusev.vitaliy@gmail.com> | 2017-01-16 11:34:17 -0500 |
|---|---|---|
| committer | Dan McDonald <danmcd@omniti.com> | 2017-01-16 11:35:32 -0500 |
| commit | 77e6f23f311b4352dcc27ce2fcbd2c06546ce837 (patch) | |
| tree | b677d7f9f1a86a9d5405ce21174d6e3855ba3dff | |
| parent | ab2e2ee8084b5368a6eff4d96fbad03a661c8ace (diff) | |
| download | illumos-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.c | 7 |
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); |
