diff options
author | jeff <jeff@FreeBSD.org> | 2010-05-18 01:45:28 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2010-05-18 01:45:28 +0000 |
commit | 70705cf1b2ddfd19fc7b93ffa18106141634aaad (patch) | |
tree | f3e99313231610239a5a5a6df1a922f3a4f3b2e8 /sbin/tunefs | |
parent | acbea275194717865d4f0fb8bba3535198ee93b6 (diff) | |
download | FreeBSD-src-70705cf1b2ddfd19fc7b93ffa18106141634aaad.zip FreeBSD-src-70705cf1b2ddfd19fc7b93ffa18106141634aaad.tar.gz |
- Round up the journal size to the block size so we don't confuse fsck.
Reported by: Mikolaj Golub <to.my.trociny@gmail.com>
- Only require 256k of blocks per-cg when trying to allocate contiguous
journal blocks. The storage may not actually be contiguous but is at
least within one cg.
- When disabling SUJ leave SU enabled and report this to the user. It
is expected that users will upgrade SU filesystems to SUJ and want
a similar downgrade path.
Diffstat (limited to 'sbin/tunefs')
-rw-r--r-- | sbin/tunefs/tunefs.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sbin/tunefs/tunefs.c b/sbin/tunefs/tunefs.c index dc2492f..b2ea602 100644 --- a/sbin/tunefs/tunefs.c +++ b/sbin/tunefs/tunefs.c @@ -358,10 +358,12 @@ main(int argc, char *argv[]) warnx("%s remains unchanged as disabled", name); } else { journal_clear(); - sblock.fs_flags &= ~(FS_DOSOFTDEP | FS_SUJ); + sblock.fs_flags &= ~FS_SUJ; sblock.fs_sujfree = 0; - warnx("%s cleared, " - "remove .sujournal to reclaim space", name); + warnx("%s cleared but soft updates still set.", + name); + + warnx("remove .sujournal to reclaim space"); } } } @@ -546,7 +548,7 @@ journal_balloc(void) * Try to minimize fragmentation by requiring a minimum * number of blocks present. */ - if (cgp->cg_cs.cs_nbfree > 128 * 1024 * 1024) + if (cgp->cg_cs.cs_nbfree > 256 * 1024) break; if (contig == 0 && cgp->cg_cs.cs_nbfree) break; @@ -906,6 +908,8 @@ journal_alloc(int64_t size) if (size / sblock.fs_fsize > sblock.fs_fpg) size = sblock.fs_fpg * sblock.fs_fsize; size = MAX(SUJ_MIN, size); + /* fsck does not support fragments in journal files. */ + size = roundup(size, sblock.fs_bsize); } resid = blocks = size / sblock.fs_bsize; if (sblock.fs_cstotal.cs_nbfree < blocks) { |