"bug fix for utimes from Rick Macklem"
authorKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 27 Jul 1990 06:29:49 +0000 (22:29 -0800)
committerKirk McKusick <mckusick@ucbvax.Berkeley.EDU>
Fri, 27 Jul 1990 06:29:49 +0000 (22:29 -0800)
SCCS-vsn: sys/nfs/nfs_vnops.c 7.46

usr/src/sys/nfs/nfs_vnops.c

index 0702915..ed3a10b 100644 (file)
@@ -7,7 +7,7 @@
  *
  * %sccs.include.redist.c%
  *
  *
  * %sccs.include.redist.c%
  *
- *     @(#)nfs_vnops.c 7.45 (Berkeley) %G%
+ *     @(#)nfs_vnops.c 7.46 (Berkeley) %G%
  */
 
 /*
  */
 
 /*
@@ -396,7 +396,11 @@ nfs_setattr(vp, vap, cred)
        else
                sp->sa_gid = txdr_unsigned(vap->va_gid);
        sp->sa_size = txdr_unsigned(vap->va_size);
        else
                sp->sa_gid = txdr_unsigned(vap->va_gid);
        sp->sa_size = txdr_unsigned(vap->va_size);
-       if (vap->va_size != VNOVAL) {
+       sp->sa_atime.tv_sec = txdr_unsigned(vap->va_atime.tv_sec);
+       sp->sa_atime.tv_usec = txdr_unsigned(vap->va_flags);
+       txdr_time(&vap->va_mtime, &sp->sa_mtime);
+       if (vap->va_size != VNOVAL || vap->va_mtime.tv_sec != VNOVAL ||
+           vap->va_atime.tv_sec != VNOVAL) {
                np = VTONFS(vp);
                if (np->n_flag & NMODIFIED) {
                        np->n_flag &= ~NMODIFIED;
                np = VTONFS(vp);
                if (np->n_flag & NMODIFIED) {
                        np->n_flag &= ~NMODIFIED;
@@ -404,9 +408,6 @@ nfs_setattr(vp, vap, cred)
                        np->n_attrstamp = 0;
                }
        }
                        np->n_attrstamp = 0;
                }
        }
-       sp->sa_atime.tv_sec = txdr_unsigned(vap->va_atime.tv_sec);
-       sp->sa_atime.tv_usec = txdr_unsigned(vap->va_flags);
-       txdr_time(&vap->va_mtime, &sp->sa_mtime);
        nfsm_request(vp, NFSPROC_SETATTR, u.u_procp, 1);
        nfsm_loadattr(vp, (struct vattr *)0);
        /* should we fill in any vap fields ?? */
        nfsm_request(vp, NFSPROC_SETATTR, u.u_procp, 1);
        nfsm_loadattr(vp, (struct vattr *)0);
        /* should we fill in any vap fields ?? */