Whamcloud - gitweb
libext2fs: require cluster size == block_size when opening a !bigalloc fs
[tools/e2fsprogs.git] / lib / ext2fs / initialize.c
index 21fc293..c109d08 100644 (file)
@@ -5,8 +5,8 @@
  * Copyright (C) 1994, 1995, 1996 Theodore Ts'o.
  *
  * %Begin-Header%
- * This file may be redistributed under the terms of the GNU Public
- * License.
+ * This file may be redistributed under the terms of the GNU Library
+ * General Public License, version 2.
  * %End-Header%
  */
 
 #endif /* defined(__linux__)   && defined(EXT2_OS_LINUX) */
 
 /*
- * Note we override the kernel include file's idea of what the default
- * check interval (never) should be.  It's a good idea to check at
- * least *occasionally*, specially since servers will never rarely get
- * to reboot, since Linux is so robust these days.  :-)
- *
- * 180 days (six months) seems like a good value.
- */
-#ifdef EXT2_DFL_CHECKINTERVAL
-#undef EXT2_DFL_CHECKINTERVAL
-#endif
-#define EXT2_DFL_CHECKINTERVAL (86400L * 180L)
-
-/*
  * Calculate the number of GDT blocks to reserve for online filesystem growth.
  * The absolute maximum number of GDT blocks we can reserve is determined by
  * the number of block pointers that can fit into a single block.
@@ -96,7 +83,6 @@ errcode_t ext2fs_initialize(const char *name, int flags,
        ext2_filsys     fs;
        errcode_t       retval;
        struct ext2_super_block *super;
-       int             frags_per_block;
        unsigned int    rem;
        unsigned int    overhead = 0;
        unsigned int    ipg;
@@ -149,13 +135,14 @@ errcode_t ext2fs_initialize(const char *name, int flags,
        super->s_state = EXT2_VALID_FS;
 
        set_field(s_log_block_size, 0); /* default blocksize: 1024 bytes */
-       set_field(s_log_frag_size, 0); /* default fragsize: 1024 bytes */
+       set_field(s_log_cluster_size, 0);
        set_field(s_first_data_block, super->s_log_block_size ? 0 : 1);
-       set_field(s_max_mnt_count, EXT2_DFL_MAX_MNT_COUNT);
+       set_field(s_max_mnt_count, 0);
        set_field(s_errors, EXT2_ERRORS_DEFAULT);
        set_field(s_feature_compat, 0);
        set_field(s_feature_incompat, 0);
        set_field(s_feature_ro_compat, 0);
+       set_field(s_default_mount_opts, 0);
        set_field(s_first_meta_bg, 0);
        set_field(s_raid_stride, 0);            /* default stride size: 0 */
        set_field(s_raid_stripe_width, 0);      /* default stripe width: 0 */
@@ -185,20 +172,19 @@ errcode_t ext2fs_initialize(const char *name, int flags,
                super->s_inode_size = EXT2_GOOD_OLD_INODE_SIZE;
        }
 
-       set_field(s_checkinterval, EXT2_DFL_CHECKINTERVAL);
+       set_field(s_checkinterval, 0);
        super->s_mkfs_time = super->s_lastcheck = fs->now ? fs->now : time(NULL);
 
        super->s_creator_os = CREATOR_OS;
 
        fs->blocksize = EXT2_BLOCK_SIZE(super);
-       fs->fragsize = EXT2_FRAG_SIZE(super);
-       frags_per_block = fs->blocksize / fs->fragsize;
+       fs->clustersize = EXT2_CLUSTER_SIZE(super);
 
        /* default: (fs->blocksize*8) blocks/group, up to 2^16 (GDT limit) */
        set_field(s_blocks_per_group, fs->blocksize * 8);
        if (super->s_blocks_per_group > EXT2_MAX_BLOCKS_PER_GROUP(super))
                super->s_blocks_per_group = EXT2_MAX_BLOCKS_PER_GROUP(super);
-       super->s_frags_per_group = super->s_blocks_per_group * frags_per_block;
+       super->s_clusters_per_group = super->s_blocks_per_group;
 
        super->s_blocks_count = param->s_blocks_count;
        super->s_r_blocks_count = param->s_r_blocks_count;
@@ -251,8 +237,7 @@ retry:
                        /* Try again with slightly different parameters */
                        super->s_blocks_per_group -= 8;
                        super->s_blocks_count = param->s_blocks_count;
-                       super->s_frags_per_group = super->s_blocks_per_group *
-                               frags_per_block;
+                       super->s_clusters_per_group = super->s_blocks_per_group;
                        goto retry;
                } else {
                        retval = EXT2_ET_TOO_MANY_INODES;