Date: Fri, 26 Sep 1997 00:26:11 +0900 From: KATO Takenori <kato@migmatite.eps.nagoya-u.ac.jp> To: bde@zeta.org.au Cc: current@FreeBSD.ORG Subject: Re: Daily SNAPshots at current.freebsd.org shut down for now. Message-ID: <199709251526.AAA07045@gneiss.eps.nagoya-u.ac.jp> In-Reply-To: Your message of "Thu, 25 Sep 1997 23:11:44 %2B1000" References: <199709251311.XAA16478@godzilla.zeta.org.au>
next in thread | previous in thread | raw e-mail | index | archive | help
> The mount option would automatically apply to the correct layer. Ok, I will add preliminary path bellow. > Perhaps the mount-option version should eliminate doclusterread and > doclusterwrite (this requires a mount option for each) and move the > tests into cluster_read() and cluster_write(). I think doclusterreadn and doclusterwrite is useful. IMO, we should not expect every user always mount with correct mount-option. If doclusterread and doclusterwrite can be controled with sysctl and root disables them, non-root user cannot enable them. ---------- BEGIN ---------- *** sys/sys/mount.h.ORIG Thu Sep 25 23:33:00 1997 --- sys/sys/mount.h Fri Sep 26 00:00:35 1997 *************** *** 166,171 **** --- 166,172 ---- #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 */ + #define MNT_NOCLUSTER 0x40000000 /* Disable cluster read and write */ /* * exported mount flags. *** sys/kern/vfs_syscalls.c.ORIG Thu Sep 25 23:57:47 1997 --- sys/kern/vfs_syscalls.c Fri Sep 26 00:01:49 1997 *************** *** 253,262 **** 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 |= SCARG(uap, flags) & (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_FORCE | ! MNT_NOATIME); /* * Mount the filesystem. */ --- 253,263 ---- 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 | ! MNT_NOCLUSTER); mp->mnt_flag |= SCARG(uap, flags) & (MNT_NOSUID | MNT_NOEXEC | MNT_NODEV | MNT_SYNCHRONOUS | MNT_UNION | MNT_ASYNC | MNT_FORCE | ! MNT_NOATIME | MNT_NOCLUSTER); /* * Mount the filesystem. */ *** sys/ufs/ufs/ufs_readwrite.c.ORIG Fri Sep 26 00:18:23 1997 --- sys/ufs/ufs/ufs_readwrite.c Fri Sep 26 00:22:16 1997 *************** *** 123,129 **** #else if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (ffs_doclusterread) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, uio->uio_resid, seqcount, &bp); else if (lbn - 1 == vp->v_lastr) { --- 123,130 ---- #else if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (ffs_doclusterread && ! !(vp->v_mount->mnt_flag & MNT_NOCLUSTER)) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, uio->uio_resid, seqcount, &bp); else if (lbn - 1 == vp->v_lastr) { *************** *** 281,287 **** if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->fs_bsize) { ! if (ffs_doclusterwrite) { bp->b_flags |= B_CLUSTEROK; cluster_write(bp, ip->i_size); } else { --- 282,289 ---- if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->fs_bsize) { ! if (ffs_doclusterwrite && ! !(vp->v_mount->mnt_flag & MNT_NOCLUSTER)) { bp->b_flags |= B_CLUSTEROK; cluster_write(bp, ip->i_size); } else { ---------- END ---------- ---- KATO Takenori <kato@ganko.eps.nagoya-u.ac.jp> Dept. Earth Planet. Sci., Nagoya Univ., Nagoya, 464-01, Japan PGP public key: finger kato@eclogite.eps.nagoya-u.ac.jp ------------------- Powered by FreeBSD(98) -------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199709251526.AAA07045>