This patch support noage_extent_cache mount option.
Signed-off-by: Yangtao Li <[email protected]>
---
Documentation/filesystems/f2fs.rst | 2 ++
fs/f2fs/super.c | 7 +++++++
2 files changed, 9 insertions(+)
diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
index a81c896464ff..75505ab88de8 100644
--- a/Documentation/filesystems/f2fs.rst
+++ b/Documentation/filesystems/f2fs.rst
@@ -352,6 +352,8 @@ age_extent_cache Enable an age extent cache based on rb-tree. It records
data block update frequency of the extent per inode, in
order to provide better temperature hints for data block
allocation.
+noage_extent_cache Disable an age extent cache based on rb-tree, see
+ the above age_extent_cache mount option.
======================== ============================================================
Debugfs Entries
diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index b5828a67f7c1..8bd9953ea7e3 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -165,6 +165,7 @@ enum {
Opt_discard_unit,
Opt_memory_mode,
Opt_age_extent_cache,
+ Opt_noage_extent_cache,
Opt_err,
};
@@ -244,6 +245,7 @@ static match_table_t f2fs_tokens = {
{Opt_discard_unit, "discard_unit=%s"},
{Opt_memory_mode, "memory=%s"},
{Opt_age_extent_cache, "age_extent_cache"},
+ {Opt_noage_extent_cache, "noage_extent_cache"},
{Opt_err, NULL},
};
@@ -1269,6 +1271,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
case Opt_age_extent_cache:
set_opt(sbi, AGE_EXTENT_CACHE);
break;
+ case Opt_noage_extent_cache:
+ clear_opt(sbi, AGE_EXTENT_CACHE);
+ break;
default:
f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value",
p);
@@ -1974,6 +1979,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
seq_puts(seq, ",noextent_cache");
if (test_opt(sbi, AGE_EXTENT_CACHE))
seq_puts(seq, ",age_extent_cache");
+ else
+ seq_puts(seq, ",noage_extent_cache");
if (test_opt(sbi, DATA_FLUSH))
seq_puts(seq, ",data_flush");
--
2.35.1
On 03/31, Yangtao Li wrote:
> This patch support noage_extent_cache mount option.
>
> Signed-off-by: Yangtao Li <[email protected]>
> ---
> Documentation/filesystems/f2fs.rst | 2 ++
> fs/f2fs/super.c | 7 +++++++
> 2 files changed, 9 insertions(+)
>
> diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
> index a81c896464ff..75505ab88de8 100644
> --- a/Documentation/filesystems/f2fs.rst
> +++ b/Documentation/filesystems/f2fs.rst
> @@ -352,6 +352,8 @@ age_extent_cache Enable an age extent cache based on rb-tree. It records
> data block update frequency of the extent per inode, in
> order to provide better temperature hints for data block
> allocation.
> +noage_extent_cache Disable an age extent cache based on rb-tree, see
> + the above age_extent_cache mount option.
Hmm, why do we need?
> ======================== ============================================================
>
> Debugfs Entries
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index b5828a67f7c1..8bd9953ea7e3 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -165,6 +165,7 @@ enum {
> Opt_discard_unit,
> Opt_memory_mode,
> Opt_age_extent_cache,
> + Opt_noage_extent_cache,
> Opt_err,
> };
>
> @@ -244,6 +245,7 @@ static match_table_t f2fs_tokens = {
> {Opt_discard_unit, "discard_unit=%s"},
> {Opt_memory_mode, "memory=%s"},
> {Opt_age_extent_cache, "age_extent_cache"},
> + {Opt_noage_extent_cache, "noage_extent_cache"},
> {Opt_err, NULL},
> };
>
> @@ -1269,6 +1271,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
> case Opt_age_extent_cache:
> set_opt(sbi, AGE_EXTENT_CACHE);
> break;
> + case Opt_noage_extent_cache:
> + clear_opt(sbi, AGE_EXTENT_CACHE);
> + break;
> default:
> f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value",
> p);
> @@ -1974,6 +1979,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
> seq_puts(seq, ",noextent_cache");
> if (test_opt(sbi, AGE_EXTENT_CACHE))
> seq_puts(seq, ",age_extent_cache");
> + else
> + seq_puts(seq, ",noage_extent_cache");
> if (test_opt(sbi, DATA_FLUSH))
> seq_puts(seq, ",data_flush");
>
> --
> 2.35.1
On 2023/4/4 1:40, Jaegeuk Kim wrote:
> On 03/31, Yangtao Li wrote:
>> This patch support noage_extent_cache mount option.
>>
>> Signed-off-by: Yangtao Li <[email protected]>
>> ---
>> Documentation/filesystems/f2fs.rst | 2 ++
>> fs/f2fs/super.c | 7 +++++++
>> 2 files changed, 9 insertions(+)
>>
>> diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
>> index a81c896464ff..75505ab88de8 100644
>> --- a/Documentation/filesystems/f2fs.rst
>> +++ b/Documentation/filesystems/f2fs.rst
>> @@ -352,6 +352,8 @@ age_extent_cache Enable an age extent cache based on rb-tree. It records
>> data block update frequency of the extent per inode, in
>> order to provide better temperature hints for data block
>> allocation.
>> +noage_extent_cache Disable an age extent cache based on rb-tree, see
>> + the above age_extent_cache mount option.
>
> Hmm, why do we need?
Hi Yangtao,
Please check the reason why we need to add no{inline_data, extent_cache, ...} mount
option as below:
commit 75342797988a0f9ebec400a2dde8d4de581c4079
Author: Wanpeng Li <[email protected]>
Date: Tue Mar 24 10:20:27 2015 +0800
f2fs: enable inline data by default
Enable inline_data feature by default since it brings us better
performance and space utilization and now has already stable.
Add another option noinline_data to disable it during mount.
Thanks,
>
>> ======================== ============================================================
>>
>> Debugfs Entries
>> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
>> index b5828a67f7c1..8bd9953ea7e3 100644
>> --- a/fs/f2fs/super.c
>> +++ b/fs/f2fs/super.c
>> @@ -165,6 +165,7 @@ enum {
>> Opt_discard_unit,
>> Opt_memory_mode,
>> Opt_age_extent_cache,
>> + Opt_noage_extent_cache,
>> Opt_err,
>> };
>>
>> @@ -244,6 +245,7 @@ static match_table_t f2fs_tokens = {
>> {Opt_discard_unit, "discard_unit=%s"},
>> {Opt_memory_mode, "memory=%s"},
>> {Opt_age_extent_cache, "age_extent_cache"},
>> + {Opt_noage_extent_cache, "noage_extent_cache"},
>> {Opt_err, NULL},
>> };
>>
>> @@ -1269,6 +1271,9 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
>> case Opt_age_extent_cache:
>> set_opt(sbi, AGE_EXTENT_CACHE);
>> break;
>> + case Opt_noage_extent_cache:
>> + clear_opt(sbi, AGE_EXTENT_CACHE);
>> + break;
>> default:
>> f2fs_err(sbi, "Unrecognized mount option \"%s\" or missing value",
>> p);
>> @@ -1974,6 +1979,8 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>> seq_puts(seq, ",noextent_cache");
>> if (test_opt(sbi, AGE_EXTENT_CACHE))
>> seq_puts(seq, ",age_extent_cache");
>> + else
>> + seq_puts(seq, ",noage_extent_cache");
>> if (test_opt(sbi, DATA_FLUSH))
>> seq_puts(seq, ",data_flush");
>>
>> --
>> 2.35.1