Use vfs_timestamp() to set file timestamps rather than invoking
getmicrotime() or getnanotime() directly in NFS. Reviewed by: rmacklem, bde MFC after: 1 week
This commit is contained in:
parent
1c67ef129f
commit
d177f14da9
@ -3247,7 +3247,7 @@ nfsfifo_read(struct vop_read_args *ap)
|
||||
*/
|
||||
mtx_lock(&np->n_mtx);
|
||||
np->n_flag |= NACC;
|
||||
getnanotime(&np->n_atim);
|
||||
vfs_timestamp(&np->n_atim);
|
||||
mtx_unlock(&np->n_mtx);
|
||||
error = fifo_specops.vop_read(ap);
|
||||
return error;
|
||||
@ -3266,7 +3266,7 @@ nfsfifo_write(struct vop_write_args *ap)
|
||||
*/
|
||||
mtx_lock(&np->n_mtx);
|
||||
np->n_flag |= NUPD;
|
||||
getnanotime(&np->n_mtim);
|
||||
vfs_timestamp(&np->n_mtim);
|
||||
mtx_unlock(&np->n_mtx);
|
||||
return(fifo_specops.vop_write(ap));
|
||||
}
|
||||
@ -3286,7 +3286,7 @@ nfsfifo_close(struct vop_close_args *ap)
|
||||
|
||||
mtx_lock(&np->n_mtx);
|
||||
if (np->n_flag & (NACC | NUPD)) {
|
||||
getnanotime(&ts);
|
||||
vfs_timestamp(&ts);
|
||||
if (np->n_flag & NACC)
|
||||
np->n_atim = ts;
|
||||
if (np->n_flag & NUPD)
|
||||
|
@ -1476,7 +1476,7 @@ nfsvno_updfilerev(struct vnode *vp, struct nfsvattr *nvap,
|
||||
struct vattr va;
|
||||
|
||||
VATTR_NULL(&va);
|
||||
getnanotime(&va.va_mtime);
|
||||
vfs_timestamp(&va.va_mtime);
|
||||
(void) VOP_SETATTR(vp, &va, cred);
|
||||
(void) nfsvno_getattr(vp, nvap, cred, p, 1);
|
||||
}
|
||||
@ -2248,7 +2248,6 @@ nfsrv_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
{
|
||||
u_int32_t *tl;
|
||||
struct nfsv2_sattr *sp;
|
||||
struct timeval curtime;
|
||||
int error = 0, toclient = 0;
|
||||
|
||||
switch (nd->nd_flag & (ND_NFSV2 | ND_NFSV3 | ND_NFSV4)) {
|
||||
@ -2307,9 +2306,7 @@ nfsrv_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
toclient = 1;
|
||||
break;
|
||||
case NFSV3SATTRTIME_TOSERVER:
|
||||
NFSGETTIME(&curtime);
|
||||
nvap->na_atime.tv_sec = curtime.tv_sec;
|
||||
nvap->na_atime.tv_nsec = curtime.tv_usec * 1000;
|
||||
vfs_timestamp(&nvap->na_atime);
|
||||
nvap->na_vaflags |= VA_UTIMES_NULL;
|
||||
break;
|
||||
};
|
||||
@ -2321,9 +2318,7 @@ nfsrv_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
nvap->na_vaflags &= ~VA_UTIMES_NULL;
|
||||
break;
|
||||
case NFSV3SATTRTIME_TOSERVER:
|
||||
NFSGETTIME(&curtime);
|
||||
nvap->na_mtime.tv_sec = curtime.tv_sec;
|
||||
nvap->na_mtime.tv_nsec = curtime.tv_usec * 1000;
|
||||
vfs_timestamp(&nvap->na_mtime);
|
||||
if (!toclient)
|
||||
nvap->na_vaflags |= VA_UTIMES_NULL;
|
||||
break;
|
||||
@ -2353,7 +2348,6 @@ nfsv4_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
u_char *cp, namestr[NFSV4_SMALLSTR + 1];
|
||||
uid_t uid;
|
||||
gid_t gid;
|
||||
struct timeval curtime;
|
||||
|
||||
error = nfsrv_getattrbits(nd, attrbitp, NULL, &retnotsup);
|
||||
if (error)
|
||||
@ -2488,9 +2482,7 @@ nfsv4_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
toclient = 1;
|
||||
attrsum += NFSX_V4TIME;
|
||||
} else {
|
||||
NFSGETTIME(&curtime);
|
||||
nvap->na_atime.tv_sec = curtime.tv_sec;
|
||||
nvap->na_atime.tv_nsec = curtime.tv_usec * 1000;
|
||||
vfs_timestamp(&nvap->na_atime);
|
||||
nvap->na_vaflags |= VA_UTIMES_NULL;
|
||||
}
|
||||
break;
|
||||
@ -2515,9 +2507,7 @@ nfsv4_sattr(struct nfsrv_descript *nd, struct nfsvattr *nvap,
|
||||
nvap->na_vaflags &= ~VA_UTIMES_NULL;
|
||||
attrsum += NFSX_V4TIME;
|
||||
} else {
|
||||
NFSGETTIME(&curtime);
|
||||
nvap->na_mtime.tv_sec = curtime.tv_sec;
|
||||
nvap->na_mtime.tv_nsec = curtime.tv_usec * 1000;
|
||||
vfs_timestamp(&nvap->na_mtime);
|
||||
if (!toclient)
|
||||
nvap->na_vaflags |= VA_UTIMES_NULL;
|
||||
}
|
||||
|
@ -3458,7 +3458,7 @@ nfsfifo_read(struct vop_read_args *ap)
|
||||
*/
|
||||
mtx_lock(&np->n_mtx);
|
||||
np->n_flag |= NACC;
|
||||
getnanotime(&np->n_atim);
|
||||
vfs_timestamp(&np->n_atim);
|
||||
mtx_unlock(&np->n_mtx);
|
||||
error = fifo_specops.vop_read(ap);
|
||||
return error;
|
||||
@ -3477,7 +3477,7 @@ nfsfifo_write(struct vop_write_args *ap)
|
||||
*/
|
||||
mtx_lock(&np->n_mtx);
|
||||
np->n_flag |= NUPD;
|
||||
getnanotime(&np->n_mtim);
|
||||
vfs_timestamp(&np->n_mtim);
|
||||
mtx_unlock(&np->n_mtx);
|
||||
return(fifo_specops.vop_write(ap));
|
||||
}
|
||||
@ -3497,7 +3497,7 @@ nfsfifo_close(struct vop_close_args *ap)
|
||||
|
||||
mtx_lock(&np->n_mtx);
|
||||
if (np->n_flag & (NACC | NUPD)) {
|
||||
getnanotime(&ts);
|
||||
vfs_timestamp(&ts);
|
||||
if (np->n_flag & NACC)
|
||||
np->n_atim = ts;
|
||||
if (np->n_flag & NUPD)
|
||||
|
@ -1393,7 +1393,7 @@ nfsm_srvsattr_xx(struct vattr *a, struct mbuf **md, caddr_t *dpos)
|
||||
toclient = 1;
|
||||
break;
|
||||
case NFSV3SATTRTIME_TOSERVER:
|
||||
getnanotime(&(a)->va_atime);
|
||||
vfs_timestamp(&a->va_atime);
|
||||
a->va_vaflags |= VA_UTIMES_NULL;
|
||||
break;
|
||||
}
|
||||
@ -1409,7 +1409,7 @@ nfsm_srvsattr_xx(struct vattr *a, struct mbuf **md, caddr_t *dpos)
|
||||
a->va_vaflags &= ~VA_UTIMES_NULL;
|
||||
break;
|
||||
case NFSV3SATTRTIME_TOSERVER:
|
||||
getnanotime(&(a)->va_mtime);
|
||||
vfs_timestamp(&a->va_mtime);
|
||||
if (toclient == 0)
|
||||
a->va_vaflags |= VA_UTIMES_NULL;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user