]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
mke2fs: calculate journal blocks just after fs initialize
authorAshish Sangwan <a.sangwan@samsung.com>
Sat, 11 May 2013 03:42:13 +0000 (09:12 +0530)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 21 Jun 2013 02:53:49 +0000 (22:53 -0400)
We can calculate journal blocks as soon as blocksize is set.
It will help to figure out wrong journal blocks count earlier.
This will save some un-necessary initialization.

Without patch output =>
mke2fs /dev/sdc1 -J size=1048576
mke2fs 1.42.7 (21-Jan-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61312 inodes, 244936 blocks
12246 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=251658240
8 block groups
32768 blocks per group, 32768 fragments per group
7664 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376

Allocating group tables: done
Writing inode tables: done

The requested journal size is 268435456 blocks; it must be
between 1024 and 10240000 blocks.  Aborting.

With patch output =>
mke2fs /dev/sdc1 -J size=1048576
mke2fs 1.42.7 (21-Jan-2013)

The requested journal size is 268435456 blocks; it must be
between 1024 and 10240000 blocks.  Aborting.

Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/mke2fs.c

index eae17b80c87f23352b164c23507d92bf4846eed1..22c2815db1a54219dbb5ac112fb133c59f8f2a97 100644 (file)
@@ -2361,6 +2361,12 @@ int main (int argc, char *argv[])
                exit(1);
        }
 
+       /* Calculate journal blocks */
+       if (!journal_device && ((journal_size) ||
+               (fs_param.s_feature_compat &
+                EXT3_FEATURE_COMPAT_HAS_JOURNAL)))
+               journal_blocks = figure_journal_size(journal_size, fs);
+
        /* Can't undo discard ... */
        if (!noaction && discard && (io_ptr != undo_io_manager)) {
                retval = mke2fs_discard_device(fs);
@@ -2611,8 +2617,6 @@ int main (int argc, char *argv[])
        } else if ((journal_size) ||
                   (fs_param.s_feature_compat &
                    EXT3_FEATURE_COMPAT_HAS_JOURNAL)) {
-               journal_blocks = figure_journal_size(journal_size, fs);
-
                if (super_only) {
                        printf(_("Skipping journal creation in super-only mode\n"));
                        fs->super->s_journal_inum = EXT2_JOURNAL_INO;