+2002-09-22 root <tytso@mit.edu>
+
+ * 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 <tytso@mit.edu>
* get_device_by_label.c (init_lvm): Fix bug which caused
}
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 */
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");
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
* kludgy hack of using the UUID to derive a random jitter value.
}
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 */
};
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 &
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"),
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)) {
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 ||