diff -urpN linux-stage.orig/fs/ext4/super.c linux-stage/fs/ext4/super.c --- linux-stage.orig/fs/ext4/super.c 2013-05-13 10:29:34.125478791 -0400 +++ linux-stage/fs/ext4/super.c 2013-05-13 10:31:59.800359005 -0400 @@ -1264,8 +1264,8 @@ enum { Opt_mballoc, Opt_bigendian_extents, Opt_force_over_128tb, Opt_extents, Opt_noextents, Opt_no_mbcache, - Opt_discard, Opt_nodiscard, - Opt_init_inode_table, Opt_noinit_inode_table, + Opt_discard, Opt_nodiscard, Opt_init_inode_table, Opt_noinit_inode_table, + Opt_max_dir_size_kb, }; static const match_table_t tokens = { @@ -1346,6 +1346,7 @@ static const match_table_t tokens = { {Opt_init_inode_table, "init_itable=%u"}, {Opt_init_inode_table, "init_itable"}, {Opt_noinit_inode_table, "noinit_itable"}, + {Opt_max_dir_size_kb, "max_dir_size_kb=%u"}, {Opt_err, NULL}, }; @@ -1732,6 +1733,13 @@ set_qf_format: case Opt_nodelalloc: clear_opt(sbi->s_mount_opt, DELALLOC); break; + case Opt_max_dir_size_kb: + if (match_int(&args[0], &option)) + return 0; + if (option < 0) + return 0; + sbi->s_max_dir_size = option * 1024; + break; case Opt_stripe: if (match_int(&args[0], &option)) return 0;