From owner-freebsd-hackers Wed Jul 25 16:56:36 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from root.com (root.com [209.102.106.178]) by hub.freebsd.org (Postfix) with ESMTP id 64FE337B403 for ; Wed, 25 Jul 2001 16:56:30 -0700 (PDT) (envelope-from dg@root.com) Received: (from dg@localhost) by root.com (8.11.2/8.11.2) id f6PNhHY24864; Wed, 25 Jul 2001 16:43:17 -0700 (PDT) (envelope-from dg) Date: Wed, 25 Jul 2001 16:43:17 -0700 From: David Greenman To: "David E. Cross" Cc: Ronald G Minnich , freebsd-hackers@FreeBSD.ORG Subject: Re: exec() doesn't update access time Message-ID: <20010725164317.G14981@nexus.root.com> References: <200107252013.QAA00335@cs.rpi.edu> <20010725142519.D14981@nexus.root.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20010725142519.D14981@nexus.root.com>; from dg@root.com on Wed, Jul 25, 2001 at 02:25:19PM -0700 Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG >>Hmm... would it be as easy as >>VOP_GETATTR(); >>. >>. >>. >>VOP_SETATTR(); >> >>within the exec() code? >> >>Certainly this would be an 'easy' fix (and I can work up diffs for review), >>but is it the 'correct' fix? > > No, it's not the correct fix. You shouldn't need to do the GETATTR first, >and doing a SETATTR will cause a synchronous update of the atime, which is >not what you want. This also doesn't fix that standard case of open/mmap() not >updating the access time, which is the real problem, not execve. > Guessing, I think the correct fix is probably to set the IN_ACCESS flag in >ufs_open() [and similarly with other filesystems where this makes sense] if >the filesystem is not mounted with the noatime flag. However, I'm not sure >of the symantics of the access time in the relavent standards, and I seem >to recall Bruce saying that it was incorrect to indicate an access on just >an open(), but I may be mistaken. Here is a patch that I just wrote that should implement the above. Please test and report results (good or bad). :-) -DG David Greenman Co-founder, The FreeBSD Project - http://www.freebsd.org President, TeraSolutions, Inc. - http://www.terasolutions.com Pave the road of life with opportunities. Index: ufs_vnops.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_vnops.c,v retrieving revision 1.131.2.3 diff -c -r1.131.2.3 ufs_vnops.c *** ufs_vnops.c 2001/02/26 04:23:21 1.131.2.3 --- ufs_vnops.c 2001/07/25 23:52:38 *************** *** 249,255 **** /* * Open called. * ! * Nothing to do. */ /* ARGSUSED */ int --- 249,255 ---- /* * Open called. * ! * Update last accessed time. */ /* ARGSUSED */ int *************** *** 261,273 **** struct proc *a_p; } */ *ap; { /* * Files marked append-only must be opened for appending. */ ! if ((VTOI(ap->a_vp)->i_flags & APPEND) && (ap->a_mode & (FWRITE | O_APPEND)) == FWRITE) return (EPERM); return (0); } --- 261,280 ---- struct proc *a_p; } */ *ap; { + struct inode *ip; + ip = VTOI(ap->a_vp); /* * Files marked append-only must be opened for appending. */ ! if ((ip->i_flags & APPEND) && (ap->a_mode & (FWRITE | O_APPEND)) == FWRITE) return (EPERM); + /* + * Update file access time. + */ + if ((ap->a_vp->v_mount->mnt_flag & MNT_NOATIME) == 0) + ip->i_flag |= IN_ACCESS; return (0); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message