f2fs: enable inline_dentry by default and add noinline_dentry option
Make inline_dentry as default mount option to improve space usage and IO performance in scenario of numerous small directory. It adds noinline_dentry mount option, instead. Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
This commit is contained in:
parent
5d2b42ede7
commit
97c1794a5d
@ -131,6 +131,7 @@ inline_dentry Enable the inline dir feature: data in new created
|
|||||||
directory entries can be written into inode block. The
|
directory entries can be written into inode block. The
|
||||||
space of inode block which is used to store inline
|
space of inode block which is used to store inline
|
||||||
dentries is limited to ~3.4k.
|
dentries is limited to ~3.4k.
|
||||||
|
noinline_dentry Diable the inline dentry feature.
|
||||||
flush_merge Merge concurrent cache_flush commands as much as possible
|
flush_merge Merge concurrent cache_flush commands as much as possible
|
||||||
to eliminate redundant command issues. If the underlying
|
to eliminate redundant command issues. If the underlying
|
||||||
device handles the cache_flush command relatively slowly,
|
device handles the cache_flush command relatively slowly,
|
||||||
|
@ -87,6 +87,7 @@ enum {
|
|||||||
Opt_inline_xattr,
|
Opt_inline_xattr,
|
||||||
Opt_inline_data,
|
Opt_inline_data,
|
||||||
Opt_inline_dentry,
|
Opt_inline_dentry,
|
||||||
|
Opt_noinline_dentry,
|
||||||
Opt_flush_merge,
|
Opt_flush_merge,
|
||||||
Opt_noflush_merge,
|
Opt_noflush_merge,
|
||||||
Opt_nobarrier,
|
Opt_nobarrier,
|
||||||
@ -118,6 +119,7 @@ static match_table_t f2fs_tokens = {
|
|||||||
{Opt_inline_xattr, "inline_xattr"},
|
{Opt_inline_xattr, "inline_xattr"},
|
||||||
{Opt_inline_data, "inline_data"},
|
{Opt_inline_data, "inline_data"},
|
||||||
{Opt_inline_dentry, "inline_dentry"},
|
{Opt_inline_dentry, "inline_dentry"},
|
||||||
|
{Opt_noinline_dentry, "noinline_dentry"},
|
||||||
{Opt_flush_merge, "flush_merge"},
|
{Opt_flush_merge, "flush_merge"},
|
||||||
{Opt_noflush_merge, "noflush_merge"},
|
{Opt_noflush_merge, "noflush_merge"},
|
||||||
{Opt_nobarrier, "nobarrier"},
|
{Opt_nobarrier, "nobarrier"},
|
||||||
@ -488,6 +490,9 @@ static int parse_options(struct super_block *sb, char *options)
|
|||||||
case Opt_inline_dentry:
|
case Opt_inline_dentry:
|
||||||
set_opt(sbi, INLINE_DENTRY);
|
set_opt(sbi, INLINE_DENTRY);
|
||||||
break;
|
break;
|
||||||
|
case Opt_noinline_dentry:
|
||||||
|
clear_opt(sbi, INLINE_DENTRY);
|
||||||
|
break;
|
||||||
case Opt_flush_merge:
|
case Opt_flush_merge:
|
||||||
set_opt(sbi, FLUSH_MERGE);
|
set_opt(sbi, FLUSH_MERGE);
|
||||||
break;
|
break;
|
||||||
@ -878,6 +883,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
|
|||||||
seq_puts(seq, ",noinline_data");
|
seq_puts(seq, ",noinline_data");
|
||||||
if (test_opt(sbi, INLINE_DENTRY))
|
if (test_opt(sbi, INLINE_DENTRY))
|
||||||
seq_puts(seq, ",inline_dentry");
|
seq_puts(seq, ",inline_dentry");
|
||||||
|
else
|
||||||
|
seq_puts(seq, ",noinline_dentry");
|
||||||
if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE))
|
if (!f2fs_readonly(sbi->sb) && test_opt(sbi, FLUSH_MERGE))
|
||||||
seq_puts(seq, ",flush_merge");
|
seq_puts(seq, ",flush_merge");
|
||||||
if (test_opt(sbi, NOBARRIER))
|
if (test_opt(sbi, NOBARRIER))
|
||||||
@ -975,6 +982,7 @@ static void default_options(struct f2fs_sb_info *sbi)
|
|||||||
|
|
||||||
set_opt(sbi, BG_GC);
|
set_opt(sbi, BG_GC);
|
||||||
set_opt(sbi, INLINE_DATA);
|
set_opt(sbi, INLINE_DATA);
|
||||||
|
set_opt(sbi, INLINE_DENTRY);
|
||||||
set_opt(sbi, EXTENT_CACHE);
|
set_opt(sbi, EXTENT_CACHE);
|
||||||
sbi->sb->s_flags |= MS_LAZYTIME;
|
sbi->sb->s_flags |= MS_LAZYTIME;
|
||||||
set_opt(sbi, FLUSH_MERGE);
|
set_opt(sbi, FLUSH_MERGE);
|
||||||
|
Loading…
Reference in New Issue
Block a user