Date: Sat, 03 May 2003 17:32:57 -0700 From: Kirk McKusick <mckusick@beastie.mckusick.com> To: Bruce Evans <bde@zeta.org.au>, Jens Schweikhardt <schweikh@FreeBSD.org> Cc: Brian Buhrow <buhrow@lothlorien.nfbcal.org> Subject: Access times on executables (kern/25777) Message-ID: <200305040032.h440WvTh015707@beastie.mckusick.com>
next in thread | raw e-mail | index | archive | help
I was asked to review kern/25777 which points out that FreeBSD at some point stopped updating access times on files being executed which is counter to its earlier behavior and to POSIX. I propose that the fix below be put in to restore this behavior. Those concerned with the overhead of the updates can use the "noatimes" mount option to disable it. Comments? Kirk McKusick =-=-=-=-= Index: sys/kern_exec.c =================================================================== RCS file: /usr/ncvs/src/sys/kern/kern_exec.c,v retrieving revision 1.218 diff -c -r1.218 kern_exec.c *** kern_exec.c 1 Apr 2003 01:26:20 -0000 1.218 --- kern_exec.c 4 May 2003 00:26:00 -0000 *************** *** 598,603 **** --- 598,618 ---- exec_setregs(td, imgp->entry_addr, (u_long)(uintptr_t)stack_base, imgp->ps_strings); + /* + * At this point, it counts as an access. + * Ensure that atime gets updated if needed. + */ + if (!(textvp->v_mount->mnt_flag & MNT_NOATIME)) { + struct vattr vattr; + + VATTR_NULL(&vattr); + vfs_timestamp(&vattr.va_atime); + VOP_LEASE(textvp, td, p->p_ucred, LEASE_WRITE); + vn_lock(textvp, LK_EXCLUSIVE | LK_RETRY, td); + (void) VOP_SETATTR(textvp, &vattr, p->p_ucred, td); + VOP_UNLOCK(textvp, 0, td); + } + done1: /* * Free any resources malloc'd earlier that we didn't use.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305040032.h440WvTh015707>