diff options
| author | Kirk McKusick <mckusick@FreeBSD.org> | 2001-04-17 05:37:51 +0000 |
|---|---|---|
| committer | Kirk McKusick <mckusick@FreeBSD.org> | 2001-04-17 05:37:51 +0000 |
| commit | 5819ab3f12bbe30611c3138af6a24c47486ea046 (patch) | |
| tree | cfcb7e31644e82e8bc769e309c72a58834ae0566 | |
| parent | f0f3f19f05312accfbc8bf3fb2ca2eff141bacc9 (diff) | |
Notes
| -rw-r--r-- | sys/kern/vfs_bio.c | 6 | ||||
| -rw-r--r-- | sys/ufs/ffs/ffs_vfsops.c | 13 |
2 files changed, 18 insertions, 1 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c index 8017e19b2722..47059032cb48 100644 --- a/sys/kern/vfs_bio.c +++ b/sys/kern/vfs_bio.c @@ -604,6 +604,10 @@ breadn(struct vnode * vp, daddr_t blkno, int size, * or in biodone() since the I/O is synchronous. We put it * here. */ + +int dobkgrdwrite = 1; +SYSCTL_INT(_debug, OID_AUTO, dobkgrdwrite, CTLFLAG_RW, &dobkgrdwrite, 0, ""); + int bwrite(struct buf * bp) { @@ -648,7 +652,7 @@ bwrite(struct buf * bp) * This optimization eats a lot of memory. If we have a page * or buffer shortfall we can't do it. */ - if ((bp->b_xflags & BX_BKGRDWRITE) && + if (dobkgrdwrite && (bp->b_xflags & BX_BKGRDWRITE) && (bp->b_flags & B_ASYNC) && !vm_page_count_severe() && !buf_dirty_count_severe()) { diff --git a/sys/ufs/ffs/ffs_vfsops.c b/sys/ufs/ffs/ffs_vfsops.c index 80bed87fe38a..aa2960dd02f5 100644 --- a/sys/ufs/ffs/ffs_vfsops.c +++ b/sys/ufs/ffs/ffs_vfsops.c @@ -499,6 +499,10 @@ loop: return (0); } +#include <sys/sysctl.h> +int bigcgs = 0; +SYSCTL_INT(_debug, OID_AUTO, bigcgs, CTLFLAG_RW, &bigcgs, 0, ""); + /* * Common code for mount and mountroot */ @@ -701,6 +705,11 @@ ffs_mountfs(devvp, mp, p, malloctype) maxfilesize = (u_int64_t)0x40000000 * fs->fs_bsize - 1; /* XXX */ if (fs->fs_maxfilesize > maxfilesize) /* XXX */ fs->fs_maxfilesize = maxfilesize; /* XXX */ + if (bigcgs) { + if (fs->fs_sparecon[0] <= 0) + fs->fs_sparecon[0] = fs->fs_cgsize; + fs->fs_cgsize = fs->fs_bsize; + } if (ronly == 0) { if ((fs->fs_flags & FS_DOSOFTDEP) && (error = softdep_mount(devvp, mp, fs, cred)) != 0) { @@ -806,6 +815,10 @@ ffs_unmount(mp, mntflags, p) return (error); } fs = ump->um_fs; + if (bigcgs) { + fs->fs_cgsize = fs->fs_sparecon[0]; + fs->fs_sparecon[0] = 0; + } if (fs->fs_ronly == 0) { fs->fs_clean = fs->fs_flags & (FS_UNCLEAN|FS_NEEDSFSCK) ? 0 : 1; error = ffs_sbupdate(ump, MNT_WAIT); |
