Page MenuHomeFreeBSD

D23422.id67603.diff
No OneTemporary

D23422.id67603.diff

Index: head/sys/kern/kern_exec.c
===================================================================
--- head/sys/kern/kern_exec.c
+++ head/sys/kern/kern_exec.c
@@ -870,7 +870,7 @@
/* Set values passed into the program in registers. */
(*p->p_sysent->sv_setregs)(td, imgp, stack_base);
- vfs_mark_atime(imgp->vp, td->td_ucred);
+ VOP_MMAPPED(imgp->vp);
SDT_PROBE1(proc, , , exec__success, args->fname);
Index: head/sys/kern/vfs_subr.c
===================================================================
--- head/sys/kern/vfs_subr.c
+++ head/sys/kern/vfs_subr.c
@@ -5956,23 +5956,6 @@
}
/*
- * Mark for update the access time of the file if the filesystem
- * supports VOP_MARKATIME. This functionality is used by execve and
- * mmap, so we want to avoid the I/O implied by directly setting
- * va_atime for the sake of efficiency.
- */
-void
-vfs_mark_atime(struct vnode *vp, struct ucred *cred)
-{
- struct mount *mp;
-
- mp = vp->v_mount;
- ASSERT_VOP_LOCKED(vp, "vfs_mark_atime");
- if (mp != NULL && (mp->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0)
- (void)VOP_MARKATIME(vp);
-}
-
-/*
* The purpose of this routine is to remove granularity from accmode_t,
* reducing it into standard unix access bits - VEXEC, VREAD, VWRITE,
* VADMIN and VAPPEND.
Index: head/sys/kern/vnode_if.src
===================================================================
--- head/sys/kern/vnode_if.src
+++ head/sys/kern/vnode_if.src
@@ -181,9 +181,9 @@
};
-%% markatime vp L L L
+%% mmapped vp L L L
-vop_markatime {
+vop_mmapped {
IN struct vnode *vp;
};
Index: head/sys/sys/vnode.h
===================================================================
--- head/sys/sys/vnode.h
+++ head/sys/sys/vnode.h
@@ -937,7 +937,6 @@
void vfs_hash_remove(struct vnode *vp);
int vfs_kqfilter(struct vop_kqfilter_args *);
-void vfs_mark_atime(struct vnode *vp, struct ucred *cred);
struct dirent;
int vfs_read_dirent(struct vop_readdir_args *ap, struct dirent *dp, off_t off);
int vfs_emptydir(struct vnode *vp);
Index: head/sys/ufs/ufs/ufs_vnops.c
===================================================================
--- head/sys/ufs/ufs/ufs_vnops.c
+++ head/sys/ufs/ufs/ufs_vnops.c
@@ -108,7 +108,7 @@
static vop_ioctl_t ufs_ioctl;
static vop_link_t ufs_link;
static int ufs_makeinode(int mode, struct vnode *, struct vnode **, struct componentname *, const char *);
-static vop_markatime_t ufs_markatime;
+static vop_mmapped_t ufs_mmapped;
static vop_mkdir_t ufs_mkdir;
static vop_mknod_t ufs_mknod;
static vop_open_t ufs_open;
@@ -676,19 +676,22 @@
}
#endif /* UFS_ACL */
-/*
- * Mark this file's access time for update for vfs_mark_atime(). This
- * is called from execve() and mmap().
- */
static int
-ufs_markatime(ap)
- struct vop_markatime_args /* {
+ufs_mmapped(ap)
+ struct vop_mmapped_args /* {
struct vnode *a_vp;
} */ *ap;
{
- struct inode *ip = VTOI(ap->a_vp);
+ struct vnode *vp;
+ struct inode *ip;
+ struct mount *mp;
- UFS_INODE_SET_FLAG_SHARED(ip, IN_ACCESS);
+ vp = ap->a_vp;
+ ip = VTOI(vp);
+ mp = vp->v_mount;
+
+ if ((mp->mnt_flag & (MNT_NOATIME | MNT_RDONLY)) == 0)
+ UFS_INODE_SET_FLAG_SHARED(ip, IN_ACCESS);
/*
* XXXKIB No UFS_UPDATE(ap->a_vp, 0) there.
*/
@@ -2741,7 +2744,7 @@
.vop_ioctl = ufs_ioctl,
.vop_link = ufs_link,
.vop_lookup = vfs_cache_lookup,
- .vop_markatime = ufs_markatime,
+ .vop_mmapped = ufs_mmapped,
.vop_mkdir = ufs_mkdir,
.vop_mknod = ufs_mknod,
.vop_need_inactive = ufs_need_inactive,
Index: head/sys/vm/vm_mmap.c
===================================================================
--- head/sys/vm/vm_mmap.c
+++ head/sys/vm/vm_mmap.c
@@ -1354,7 +1354,7 @@
*objp = obj;
*flagsp = flags;
- vfs_mark_atime(vp, cred);
+ VOP_MMAPPED(vp);
done:
if (error != 0 && *writecounted) {

File Metadata

Mime Type
text/plain
Expires
Sat, Jul 25, 3:42 AM (4 h, 31 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35460927
Default Alt Text
D23422.id67603.diff (3 KB)

Event Timeline