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) {
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to