6376354 devfs test suite attr.6 is failing atime test
authorcth
Fri, 01 Aug 2008 15:20:07 -0700
changeset 7262 d92388591b8a
parent 7261 487d2e19fab5
child 7263 06a01ab8410f
6376354 devfs test suite attr.6 is failing atime test
usr/src/uts/common/fs/devfs/devfs_vnops.c
--- a/usr/src/uts/common/fs/devfs/devfs_vnops.c	Fri Aug 01 15:17:57 2008 -0700
+++ b/usr/src/uts/common/fs/devfs/devfs_vnops.c	Fri Aug 01 15:20:07 2008 -0700
@@ -225,7 +225,7 @@
 	struct cred *cr)
 {
 	struct vattr	*map;
-	long int	mask;
+	uint_t		mask;
 	int		error = 0;
 	struct vattr	vattr;
 
@@ -348,7 +348,7 @@
 	struct dv_node	*ddv;
 	struct vnode	*dvp;
 	struct vattr	*map;
-	long int	mask;
+	uint_t		mask;
 	int		error = 0;
 	struct vattr	*free_vattr = NULL;
 	struct vattr	*vattrp = NULL;
@@ -546,8 +546,18 @@
 				    DV_SHADOW_CREATE | DV_SHADOW_WRITE_HELD);
 			}
 			if (dv->dv_attrvp) {
-				error = VOP_SETATTR(dv->dv_attrvp,
-				    vap, flags, cr, NULL);
+				/* If map still valid do TIME for free. */
+				if (dv->dv_attr == map) {
+					mask = map->va_mask;
+					map->va_mask =
+					    vap->va_mask | AT_ATIME | AT_MTIME;
+					error = VOP_SETATTR(dv->dv_attrvp, map,
+					    flags, cr, NULL);
+					map->va_mask = mask;
+				} else {
+					error = VOP_SETATTR(dv->dv_attrvp,
+					    vap, flags, cr, NULL);
+				}
 				dsysdebug(error, ("vop_setattr %s %d\n",
 				    dv->dv_name, error));
 			}