In tmpfs_chtimes(), remove checks on the nanosecond level when

determining whether a node changed.

Other filesystems, e.g., UFS, only check on seconds, when determining
whether something changed.

This also corrects the birthtime case, where we checked tv_nsec
twice, instead of tv_sec and tv_nsec (PR).

PR:			201284
Submitted by:		David Binderman
Patch suggested by:	kib
Reviewed by:		kib
MFC after:		2 weeks
Committed from:		Essen FreeBSD Hackathon
This commit is contained in:
brueffer 2015-07-26 08:33:46 +00:00
parent 759686c03c
commit 95419ac921

View File

@ -1709,20 +1709,18 @@ tmpfs_chtimes(struct vnode *vp, struct vattr *vap,
if (error != 0)
return (error);
if (vap->va_atime.tv_sec != VNOVAL && vap->va_atime.tv_nsec != VNOVAL)
if (vap->va_atime.tv_sec != VNOVAL)
node->tn_status |= TMPFS_NODE_ACCESSED;
if (vap->va_mtime.tv_sec != VNOVAL && vap->va_mtime.tv_nsec != VNOVAL)
if (vap->va_mtime.tv_sec != VNOVAL)
node->tn_status |= TMPFS_NODE_MODIFIED;
if (vap->va_birthtime.tv_nsec != VNOVAL &&
vap->va_birthtime.tv_nsec != VNOVAL)
if (vap->va_birthtime.tv_sec != VNOVAL)
node->tn_status |= TMPFS_NODE_MODIFIED;
tmpfs_itimes(vp, &vap->va_atime, &vap->va_mtime);
if (vap->va_birthtime.tv_nsec != VNOVAL &&
vap->va_birthtime.tv_nsec != VNOVAL)
if (vap->va_birthtime.tv_sec != VNOVAL)
node->tn_birthtime = vap->va_birthtime;
MPASS(VOP_ISLOCKED(vp));