From owner-freebsd-current Wed Sep 24 03:22:47 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id DAA20912 for current-outgoing; Wed, 24 Sep 1997 03:22:47 -0700 (PDT) Received: from gneiss.eps.nagoya-u.ac.jp (gneiss.eps.nagoya-u.ac.jp [133.6.57.99]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id DAA20904 for ; Wed, 24 Sep 1997 03:22:34 -0700 (PDT) Received: from marble.eps.nagoya-u.ac.jp (localhost [127.0.0.1]) by gneiss.eps.nagoya-u.ac.jp (8.8.7/3.5Wpl3) with ESMTP id TAA01768; Wed, 24 Sep 1997 19:17:41 +0900 (JST) Message-Id: <199709241017.TAA01768@gneiss.eps.nagoya-u.ac.jp> To: phk@critter.freebsd.dk Cc: current@FreeBSD.ORG Subject: Re: Daily SNAPshots at current.freebsd.org shut down for now. From: KATO Takenori In-Reply-To: Your message of "Wed, 24 Sep 1997 10:49:55 +0200" References: <979.875090995@critter.freebsd.dk> X-Mailer: Mew version 1.70 on Emacs 19.28.1 / Mule 2.3 X-PGP-Fingerprint: 03 72 85 36 62 46 23 03 52 B1 10 22 44 10 0D 9E Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Date: Wed, 24 Sep 1997 19:17:40 +0900 Sender: owner-freebsd-current@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk > disable clustering on a per filesystem or mount point basis and disallow > it for vn devices. If you think about it, it doesn't make sense in the > first place. How about following following patch? ---------- BEGIN ---------- *** sys/vnode.h.ORIG Wed Sep 24 18:47:16 1997 --- sys/vnode.h Wed Sep 24 18:49:46 1997 *************** *** 111,129 **** /* * Vnode flags. */ ! #define VROOT 0x0001 /* root of its file system */ ! #define VTEXT 0x0002 /* vnode is a pure text prototype */ ! #define VSYSTEM 0x0004 /* vnode being used by kernel */ ! #define VOLOCK 0x0008 /* vnode is locked waiting for an object */ ! #define VOWANT 0x0010 /* a process is waiting for VOLOCK */ ! #define VXLOCK 0x0100 /* vnode is locked to change underlying type */ ! #define VXWANT 0x0200 /* process is waiting for vnode */ ! #define VBWAIT 0x0400 /* waiting for output to complete */ ! #define VALIASED 0x0800 /* vnode has an alias */ ! #define VDIROP 0x1000 /* LFS: vnode is involved in a directory op */ ! #define VVMIO 0x2000 /* VMIO flag */ ! #define VNINACT 0x4000 /* LFS: skip ufs_inactive() in lfs_vunref */ ! #define VAGE 0x8000 /* Insert vnode at head of free list */ /* * Vnode attributes. A field value of VNOVAL represents a field whose value --- 111,130 ---- /* * Vnode flags. */ ! #define VROOT 0x00001 /* root of its file system */ ! #define VTEXT 0x00002 /* vnode is a pure text prototype */ ! #define VSYSTEM 0x00004 /* vnode being used by kernel */ ! #define VOLOCK 0x00008 /* vnode is locked waiting for an object */ ! #define VOWANT 0x00010 /* a process is waiting for VOLOCK */ ! #define VXLOCK 0x00100 /* vnode is locked to change underlying type */ ! #define VXWANT 0x00200 /* process is waiting for vnode */ ! #define VBWAIT 0x00400 /* waiting for output to complete */ ! #define VALIASED 0x00800 /* vnode has an alias */ ! #define VDIROP 0x01000 /* LFS: vnode is involved in a directory op */ ! #define VVMIO 0x02000 /* VMIO flag */ ! #define VNINACT 0x04000 /* LFS: skip ufs_inactive() in lfs_vunref */ ! #define VAGE 0x08000 /* Insert vnode at head of free list */ ! #define VNOCLUSTER 0x10000 /* Disable cluster read and write */ /* * Vnode attributes. A field value of VNOVAL represents a field whose value *** dev/vn/vn.c.ORIG Wed Sep 24 18:59:07 1997 --- dev/vn/vn.c Wed Sep 24 19:00:42 1997 *************** *** 467,472 **** --- 467,473 ---- } VOP_UNLOCK(nd.ni_vp); vn->sc_vp = nd.ni_vp; + vn->sc_vp->v_flag |= VNOCLUSTER; /* disable cluster read write */ vn->sc_size = btodb(vattr.va_size); /* note truncation */ error = vnsetcred(vn, p->p_ucred); if (error) { *** ufs/ufs/ufs_readwrite.c.ORIG Wed Sep 24 18:51:04 1997 --- ufs/ufs/ufs_readwrite.c Wed Sep 24 18:52:38 1997 *************** *** 120,126 **** #else if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (doclusterread) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); else if (lbn - 1 == vp->v_lastr) { --- 120,126 ---- #else if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (doclusterread && !(vp->v_flag & VNOCLUSTER)) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); else if (lbn - 1 == vp->v_lastr) { *************** *** 286,292 **** if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->fs_bsize) { ! if (doclusterwrite) { bp->b_flags |= B_CLUSTEROK; cluster_write(bp, ip->i_size); } else { --- 286,292 ---- if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->fs_bsize) { ! if (doclusterwrite && !(vp->v_flag & VNOCLUSTER)) { bp->b_flags |= B_CLUSTEROK; cluster_write(bp, ip->i_size); } else { *** isofs/cd9660/cd9660_vnops.c.ORIG Wed Sep 24 18:54:59 1997 --- isofs/cd9660/cd9660_vnops.c Wed Sep 24 18:55:38 1997 *************** *** 341,347 **** n = diff; size = iso_blksize(imp, ip, lbn); rablock = lbn + 1; ! if (doclusterread) { if (iso_lblktosize(imp, rablock) <= ip->i_size) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); --- 341,347 ---- n = diff; size = iso_blksize(imp, ip, lbn); rablock = lbn + 1; ! if (doclusterread && !(vp->v_flag & VNOCLUSTER)) { if (iso_lblktosize(imp, rablock) <= ip->i_size) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); *** gnu/ext2fs/ext2_readwrite.c.ORIG Wed Sep 24 18:53:10 1997 --- gnu/ext2fs/ext2_readwrite.c Wed Sep 24 18:54:24 1997 *************** *** 112,118 **** if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (doclusterread) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); else if (lbn - 1 == vp->v_lastr) { --- 112,118 ---- if (lblktosize(fs, nextlbn) >= ip->i_size) error = bread(vp, lbn, size, NOCRED, &bp); ! else if (doclusterread && !(vp->v_flag & VNOCLUSTER)) error = cluster_read(vp, ip->i_size, lbn, size, NOCRED, &bp); else if (lbn - 1 == vp->v_lastr) { *************** *** 284,290 **** if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->s_frag_size) { ! if (doclusterwrite) { #if defined(__FreeBSD__) bp->b_flags |= B_CLUSTEROK; #endif --- 284,290 ---- if (ioflag & IO_SYNC) { (void)bwrite(bp); } else if (xfersize + blkoffset == fs->s_frag_size) { ! if (doclusterwrite && !(vp->v_flag & VNOCLUSTER)) { #if defined(__FreeBSD__) bp->b_flags |= B_CLUSTEROK; #endif ---- ---- KATO Takenori 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) -------------------