From: Theodore Ts'o Date: Sun, 22 Sep 2002 19:37:40 +0000 (-0400) Subject: mke2fs.c (main): Enable directory indexing by default. X-Git-Tag: E2FSPROGS-1_29~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=843049c4dbfe8a0dd4332569eff0ac93529e3324;p=thirdparty%2Fe2fsprogs.git mke2fs.c (main): Enable directory indexing by default. tune2fs.c (update_feature_set): Allow directory indexing flag to be set. If so, set the default hash to be TEA, and initialize the hash seed to a random value. --- diff --git a/misc/ChangeLog b/misc/ChangeLog index c467f37c9..ed5e1058b 100644 --- a/misc/ChangeLog +++ b/misc/ChangeLog @@ -1,3 +1,11 @@ +2002-09-22 root + + * mke2fs.c (main): Enable directory indexing by default. + + * tune2fs.c (update_feature_set): Allow directory indexing flag to + be set. If so, set the default hash to be TEA, and + initialize the hash seed to a random value. + 2002-09-21 Theodore Ts'o * get_device_by_label.c (init_lvm): Fix bug which caused diff --git a/misc/mke2fs.c b/misc/mke2fs.c index 0f5f1e097..c37eecc16 100644 --- a/misc/mke2fs.c +++ b/misc/mke2fs.c @@ -777,7 +777,8 @@ static void parse_raid_opts(const char *opts) } static __u32 ok_features[3] = { - EXT3_FEATURE_COMPAT_HAS_JOURNAL, /* Compat */ + EXT3_FEATURE_COMPAT_HAS_JOURNAL | + EXT2_FEATURE_COMPAT_DIR_INDEX, /* Compat */ EXT2_FEATURE_INCOMPAT_FILETYPE| /* Incompat */ EXT3_FEATURE_INCOMPAT_JOURNAL_DEV, EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER /* R/O compat */ @@ -841,7 +842,8 @@ static void PRS(int argc, char *argv[]) param.s_rev_level = 1; /* Create revision 1 filesystems now */ param.s_feature_incompat |= EXT2_FEATURE_INCOMPAT_FILETYPE; param.s_feature_ro_compat |= EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER; - + param.s_feature_compat |= EXT2_FEATURE_COMPAT_DIR_INDEX; + #ifdef __linux__ if (uname(&ut)) { perror("uname"); @@ -1241,6 +1243,12 @@ int main (int argc, char *argv[]) */ uuid_generate(fs->super->s_uuid); + /* + * Initialize the directory index variables + */ + fs->super->s_def_hash_version = EXT2_HASH_TEA; + uuid_generate((unsigned char *) fs->super->s_hash_seed); + /* * Add "jitter" to the superblock's check interval so that we * don't check all the filesystems at the same time. We use a diff --git a/misc/tune2fs.c b/misc/tune2fs.c index a644bb494..9a8801b4f 100644 --- a/misc/tune2fs.c +++ b/misc/tune2fs.c @@ -87,7 +87,8 @@ static void usage(void) } static __u32 ok_features[3] = { - EXT3_FEATURE_COMPAT_HAS_JOURNAL, /* Compat */ + EXT3_FEATURE_COMPAT_HAS_JOURNAL | + EXT2_FEATURE_COMPAT_DIR_INDEX, /* Compat */ EXT2_FEATURE_INCOMPAT_FILETYPE, /* Incompat */ EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER /* R/O compat */ }; @@ -251,7 +252,7 @@ static void remove_journal_inode(ext2_filsys fs) static void update_feature_set(ext2_filsys fs, char *features) { int sparse, old_sparse, filetype, old_filetype; - int journal, old_journal; + int journal, old_journal, dxdir, old_dxdir; struct ext2_super_block *sb= fs->super; old_sparse = sb->s_feature_ro_compat & @@ -260,6 +261,8 @@ static void update_feature_set(ext2_filsys fs, char *features) EXT2_FEATURE_INCOMPAT_FILETYPE; old_journal = sb->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL; + old_dxdir = sb->s_feature_compat & + EXT2_FEATURE_COMPAT_DIR_INDEX; if (e2p_edit_feature(features, &sb->s_feature_compat, ok_features)) { fprintf(stderr, _("Invalid filesystem option set: %s\n"), @@ -272,6 +275,8 @@ static void update_feature_set(ext2_filsys fs, char *features) EXT2_FEATURE_INCOMPAT_FILETYPE; journal = sb->s_feature_compat & EXT3_FEATURE_COMPAT_HAS_JOURNAL; + dxdir = sb->s_feature_compat & + EXT2_FEATURE_COMPAT_DIR_INDEX; if (old_journal && !journal) { if ((mount_flags & EXT2_MF_MOUNTED) && !(mount_flags & EXT2_MF_READONLY)) { @@ -308,6 +313,12 @@ static void update_feature_set(ext2_filsys fs, char *features) journal_size = -1; sb->s_feature_compat &= ~EXT3_FEATURE_COMPAT_HAS_JOURNAL; } + if (dxdir && !old_dxdir) { + if (!sb->s_def_hash_version) + sb->s_def_hash_version = EXT2_HASH_TEA; + if (uuid_is_null((unsigned char *) sb->s_hash_seed)) + uuid_generate((unsigned char *) sb->s_hash_seed); + } if (sb->s_rev_level == EXT2_GOOD_OLD_REV && (sb->s_feature_compat || sb->s_feature_ro_compat ||