Skip to content

Commit 670e987

Browse files
committed
ext4: add debug_want_extra_isize mount option
In order to test the inode extra isize expansion code, it is useful to be able to easily create file systems that have inodes with extra isize values smaller than the current desired value. Signed-off-by: Theodore Ts'o <tytso@mit.edu>
1 parent 03e916f commit 670e987

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

fs/ext4/super.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1284,7 +1284,7 @@ enum {
12841284
Opt_noquota, Opt_barrier, Opt_nobarrier, Opt_err,
12851285
Opt_usrquota, Opt_grpquota, Opt_prjquota, Opt_i_version, Opt_dax,
12861286
Opt_stripe, Opt_delalloc, Opt_nodelalloc, Opt_mblk_io_submit,
1287-
Opt_lazytime, Opt_nolazytime,
1287+
Opt_lazytime, Opt_nolazytime, Opt_debug_want_extra_isize,
12881288
Opt_nomblk_io_submit, Opt_block_validity, Opt_noblock_validity,
12891289
Opt_inode_readahead_blks, Opt_journal_ioprio,
12901290
Opt_dioread_nolock, Opt_dioread_lock,
@@ -1352,6 +1352,7 @@ static const match_table_t tokens = {
13521352
{Opt_delalloc, "delalloc"},
13531353
{Opt_lazytime, "lazytime"},
13541354
{Opt_nolazytime, "nolazytime"},
1355+
{Opt_debug_want_extra_isize, "debug_want_extra_isize=%u"},
13551356
{Opt_nodelalloc, "nodelalloc"},
13561357
{Opt_removed, "mblk_io_submit"},
13571358
{Opt_removed, "nomblk_io_submit"},
@@ -1557,6 +1558,7 @@ static const struct mount_opts {
15571558
#endif
15581559
{Opt_nouid32, EXT4_MOUNT_NO_UID32, MOPT_SET},
15591560
{Opt_debug, EXT4_MOUNT_DEBUG, MOPT_SET},
1561+
{Opt_debug_want_extra_isize, 0, MOPT_GTE0},
15601562
{Opt_quota, EXT4_MOUNT_QUOTA | EXT4_MOUNT_USRQUOTA, MOPT_SET | MOPT_Q},
15611563
{Opt_usrquota, EXT4_MOUNT_QUOTA | EXT4_MOUNT_USRQUOTA,
15621564
MOPT_SET | MOPT_Q},
@@ -1670,6 +1672,8 @@ static int handle_mount_opt(struct super_block *sb, char *opt, int token,
16701672
if (arg == 0)
16711673
arg = JBD2_DEFAULT_MAX_COMMIT_AGE;
16721674
sbi->s_commit_interval = HZ * arg;
1675+
} else if (token == Opt_debug_want_extra_isize) {
1676+
sbi->s_want_extra_isize = arg;
16731677
} else if (token == Opt_max_batch_time) {
16741678
sbi->s_max_batch_time = arg;
16751679
} else if (token == Opt_min_batch_time) {
@@ -4081,7 +4085,8 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)
40814085
sb->s_flags |= MS_RDONLY;
40824086

40834087
/* determine the minimum size of new large inodes, if present */
4084-
if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE) {
4088+
if (sbi->s_inode_size > EXT4_GOOD_OLD_INODE_SIZE &&
4089+
sbi->s_want_extra_isize == 0) {
40854090
sbi->s_want_extra_isize = sizeof(struct ext4_inode) -
40864091
EXT4_GOOD_OLD_INODE_SIZE;
40874092
if (ext4_has_feature_extra_isize(sb)) {

0 commit comments

Comments
 (0)