I fixed the sparse inode tunefs bug and changed the tunefs behavior based
on discussions here on curr...@. Hopefully this works for everyone.
I have one bad perf bug and one journal overflow bug left to resolve.
Please keeps the reports coming and thank you for your help.
Thanks,
Jeff
---------- Forwarded message ----------
Date: Tue, 18 May 2010 01:45:28 +0000 (UTC)
From: Jeff Roberson <j...@freebsd.org>
To: src-committ...@freebsd.org, svn-src-...@freebsd.org,
svn-src-h...@freebsd.org
Subject: svn commit: r208241 - head/sbin/tunefs
Author: jeff
Date: Tue May 18 01:45:28 2010
New Revision: 208241
URL: http://svn.freebsd.org/changeset/base/208241
Log:
- Round up the journal size to the block size so we don't confuse fsck.
Reported by: Mikolaj Golub <to.my.troc...@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.
Modified:
head/sbin/tunefs/tunefs.c
Modified: head/sbin/tunefs/tunefs.c
==============================================================================
--- head/sbin/tunefs/tunefs.c Tue May 18 00:46:15 2010 (r208240)
+++ head/sbin/tunefs/tunefs.c Tue May 18 01:45:28 2010 (r208241)
@@ -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) {
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"