svn commit: r272952 - in head/sys: fs/ext2fs fs/msdosfs ufs/ffs

Konstantin Belousov kib at FreeBSD.org
Sat Oct 11 19:09:57 UTC 2014


Author: kib
Date: Sat Oct 11 19:09:56 2014
New Revision: 272952
URL: https://svnweb.freebsd.org/changeset/base/272952

Log:
  Do not set IN_ACCESS flag for read-only mounts.  The IN_ACCESS
  survives remount in rw, also it is set for vnodes on rootfs before
  noatime can be set or clock is adjusted.  All conditions result in
  wrong atime for accessed vnodes.
  
  Submitted by:	bde
  MFC after:	1 week

Modified:
  head/sys/fs/ext2fs/ext2_vnops.c
  head/sys/fs/msdosfs/msdosfs_vnops.c
  head/sys/ufs/ffs/ffs_vnops.c

Modified: head/sys/fs/ext2fs/ext2_vnops.c
==============================================================================
--- head/sys/fs/ext2fs/ext2_vnops.c	Sat Oct 11 18:58:58 2014	(r272951)
+++ head/sys/fs/ext2fs/ext2_vnops.c	Sat Oct 11 19:09:56 2014	(r272952)
@@ -1762,7 +1762,7 @@ ext2_ind_read(struct vop_read_args *ap)
 	}
 
 	if ((error == 0 || uio->uio_resid != orig_resid) &&
-	    (vp->v_mount->mnt_flag & MNT_NOATIME) == 0)
+	    (vp->v_mount->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0)
 		ip->i_flag |= IN_ACCESS;
 	return (error);
 }

Modified: head/sys/fs/msdosfs/msdosfs_vnops.c
==============================================================================
--- head/sys/fs/msdosfs/msdosfs_vnops.c	Sat Oct 11 18:58:58 2014	(r272951)
+++ head/sys/fs/msdosfs/msdosfs_vnops.c	Sat Oct 11 19:09:56 2014	(r272952)
@@ -642,7 +642,7 @@ msdosfs_read(ap)
 		brelse(bp);
 	} while (error == 0 && uio->uio_resid > 0 && n != 0);
 	if (!isadir && (error == 0 || uio->uio_resid != orig_resid) &&
-	    (vp->v_mount->mnt_flag & MNT_NOATIME) == 0)
+	    (vp->v_mount->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0)
 		dep->de_flag |= DE_ACCESS;
 	return (error);
 }

Modified: head/sys/ufs/ffs/ffs_vnops.c
==============================================================================
--- head/sys/ufs/ffs/ffs_vnops.c	Sat Oct 11 18:58:58 2014	(r272951)
+++ head/sys/ufs/ffs/ffs_vnops.c	Sat Oct 11 19:09:56 2014	(r272952)
@@ -627,7 +627,7 @@ ffs_read(ap)
 	}
 
 	if ((error == 0 || uio->uio_resid != orig_resid) &&
-	    (vp->v_mount->mnt_flag & MNT_NOATIME) == 0 &&
+	    (vp->v_mount->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0 &&
 	    (ip->i_flag & IN_ACCESS) == 0) {
 		VI_LOCK(vp);
 		ip->i_flag |= IN_ACCESS;


More information about the svn-src-all mailing list