Date: Wed, 04 Sep 1996 18:19:22 -0700 From: David Greenman <dg@root.com> To: Joe Greco <jgreco@brasil.moneng.mei.com> Cc: winter@jurai.net (Matthew N. Dodd), freebsd-isp@FreeBSD.org Subject: Re: Anyone using ccd (FreeBSD disk striper) for news Message-ID: <199609050119.SAA01918@root.com> In-Reply-To: Your message of "Wed, 04 Sep 1996 15:41:27 CDT." <199609042041.PAA14028@brasil.moneng.mei.com>
next in thread | previous in thread | raw e-mail | index | archive | help
>Sorry :-( Blew them away when I upgraded the box to 2.1.5R. I was >convinced that they were not the right way to do it and DG had mentioned >"almost" having it working, and I figured that somebody who had a clue >about FreeBSD/BSD system internals had a much better chance of getting >a technically correct implementation than I did. > >> > It's icky, at least the way I did it. DG had also worked on this and >> > I'd really really like to see his work.... >> >> Yes, wasn't he talking about cleaning it up and commiting it? > >Yes... :-) > >> That would be a spiffy option to have out of box. > >Agreed. I committed the changes for -current, although I haven't documented the new "noatime" option in the manual page yet - I'd like to get a little more testing done with it first by other people. The changes for 2.1.5 are attached. -DG David Greenman Core-team/Principal Architect, The FreeBSD Project Index: sys/kern/vfs_syscalls.c =================================================================== RCS file: /home/ncvs/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.25.4.4 diff -c -r1.25.4.4 vfs_syscalls.c *** vfs_syscalls.c 1996/01/16 13:09:33 1.25.4.4 --- vfs_syscalls.c 1996/09/03 04:40:11 *************** *** 168,176 **** else if (mp->mnt_flag & MNT_RDONLY) mp->mnt_flag |= MNT_WANTRDWR; mp->mnt_flag &=~ (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | ! MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC); mp->mnt_flag |= uap->flags & (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | ! MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_FORCE); /* * Mount the filesystem. */ --- 168,176 ---- else if (mp->mnt_flag & MNT_RDONLY) mp->mnt_flag |= MNT_WANTRDWR; mp->mnt_flag &=~ (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | ! MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_NOATIME); mp->mnt_flag |= uap->flags & (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | ! MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_FORCE | MNT_NOATIME); /* * Mount the filesystem. */ Index: sys/sys/mount.h =================================================================== RCS file: /home/ncvs/src/sys/sys/mount.h,v retrieving revision 1.19.4.1 diff -c -r1.19.4.1 mount.h *** mount.h 1996/03/21 20:30:14 1.19.4.1 --- mount.h 1996/09/03 05:54:29 *************** *** 63,70 **** #define MNAMELEN 90 /* length of buffer for returned name */ struct statfs { ! short f_type; /* type of filesystem (see below) */ ! short f_flags; /* copy of mount flags */ long f_bsize; /* fundamental file system block size */ long f_iosize; /* optimal transfer block size */ long f_blocks; /* total data blocks in file system */ --- 63,69 ---- #define MNAMELEN 90 /* length of buffer for returned name */ struct statfs { ! long f_spare2; /* placeholder */ long f_bsize; /* fundamental file system block size */ long f_iosize; /* optimal transfer block size */ long f_blocks; /* total data blocks in file system */ *************** *** 73,79 **** long f_files; /* total file nodes in file system */ long f_ffree; /* free file nodes in fs */ fsid_t f_fsid; /* file system id */ ! long f_spare[9]; /* spare for later */ char f_mntonname[MNAMELEN]; /* directory on which mounted */ char f_mntfromname[MNAMELEN];/* mounted filesystem */ }; --- 72,81 ---- long f_files; /* total file nodes in file system */ long f_ffree; /* free file nodes in fs */ fsid_t f_fsid; /* file system id */ ! uid_t f_owner; /* user that mounted the filesystem */ ! int f_type; /* type of filesystem (see below) */ ! int f_flags; /* copy of mount flags */ ! long f_spare[6]; /* spare for later */ char f_mntonname[MNAMELEN]; /* directory on which mounted */ char f_mntfromname[MNAMELEN];/* mounted filesystem */ }; *************** *** 152,157 **** --- 154,160 ---- #define MNT_NODEV 0x00000010 /* don't interpret special files */ #define MNT_UNION 0x00000020 /* union with underlying filesystem */ #define MNT_ASYNC 0x00000040 /* file system written asynchronously */ + #define MNT_NOATIME 0x10000000 /* Disable update of file access times */ /* * exported mount flags. *************** *** 173,179 **** /* * Mask of flags that are visible to statfs() */ ! #define MNT_VISFLAGMASK 0x0000ffff /* * filesystem control flags. --- 176,185 ---- /* * Mask of flags that are visible to statfs() */ ! #define MNT_VISFLAGMASK (MNT_RDONLY|MNT_SYNCHRONOUS|MNT_NOEXEC|MNT_NOSUID| \ ! MNT_NODEV|MNT_UNION|MNT_ASYNC|MNT_EXRDONLY|MNT_EXPORTED| \ ! MNT_DEFEXPORTED|MNT_EXPORTANON|MNT_EXKERB|MNT_LOCAL| \ ! MNT_QUOTA|MNT_ROOTFS|MNT_USER|MNT_NOATIME) /* * filesystem control flags. Index: sys/ufs/ufs/ufs_readwrite.c =================================================================== RCS file: /home/ncvs/src/sys/ufs/ufs/ufs_readwrite.c,v retrieving revision 1.9.4.1 diff -c -r1.9.4.1 ufs_readwrite.c *** ufs_readwrite.c 1996/06/25 03:02:11 1.9.4.1 --- ufs_readwrite.c 1996/09/03 04:30:36 *************** *** 156,162 **** } if (bp != NULL) brelse(bp); ! ip->i_flag |= IN_ACCESS; return (error); } --- 156,163 ---- } if (bp != NULL) brelse(bp); ! if (!(vp->v_mount->mnt_flag & MNT_NOATIME)) ! ip->i_flag |= IN_ACCESS; return (error); } Index: sbin/mount/mntopts.h =================================================================== RCS file: /home/ncvs/src/sbin/mount/mntopts.h,v retrieving revision 1.4.4.1 diff -c -r1.4.4.1 mntopts.h *** mntopts.h 1995/08/30 09:21:55 1.4.4.1 --- mntopts.h 1996/09/03 04:45:22 *************** *** 42,47 **** --- 42,48 ---- /* User-visible MNT_ flags. */ #define MOPT_ASYNC { "async", 0, MNT_ASYNC, 0 } + #define MOPT_NOATIME { "atime", 1, MNT_NOATIME, 0 } #define MOPT_NOAUTO { "auto", 1, 0, 0 } #define MOPT_NODEV { "dev", 1, MNT_NODEV, 0 } #define MOPT_NOEXEC { "exec", 1, MNT_NOEXEC, 0 } *************** *** 69,74 **** --- 70,76 ---- /* Standard options which all mounts can understand. */ #define MOPT_STDOPTS \ MOPT_FSTAB_COMPAT, \ + MOPT_NOATIME, \ MOPT_NOAUTO, \ MOPT_NODEV, \ MOPT_NOEXEC, \ Index: sbin/mount/mount.c =================================================================== RCS file: /home/ncvs/src/sbin/mount/mount.c,v retrieving revision 1.6.4.1 diff -c -r1.6.4.1 mount.c *** mount.c 1995/08/30 09:22:02 1.6.4.1 --- mount.c 1996/09/03 04:44:43 *************** *** 84,89 **** --- 84,90 ---- { MNT_ASYNC, "asynchronous" }, { MNT_EXPORTED, "NFS exported" }, { MNT_LOCAL, "local" }, + { MNT_NOATIME, "noatime" }, { MNT_NODEV, "nodev" }, { MNT_NOEXEC, "noexec" }, { MNT_NOSUID, "nosuid" },
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199609050119.SAA01918>