f2fs: support to show noage_extent_cache mount option

Message ID 20230330173127.46900-1-frank.li@vivo.com
State New
Headers
Series f2fs: support to show noage_extent_cache mount option |

Commit Message

李扬韬 March 30, 2023, 5:31 p.m. UTC
  This patch support noage_extent_cache mount option.

Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
 Documentation/filesystems/f2fs.rst | 2 ++
 fs/f2fs/super.c                    | 7 +++++++
 2 files changed, 9 insertions(+)
  

Comments

Jaegeuk Kim April 3, 2023, 5:40 p.m. UTC | #1
On 03/31, Yangtao Li wrote:
> This patch support noage_extent_cache mount option.
> 
> Signed-off-by: Yangtao Li <frank.li@vivo.com>
> ---
>  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
  
Chao Yu April 4, 2023, 1:44 a.m. UTC | #2
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 <frank.li@vivo.com>
>> ---
>>   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 <wanpeng.li@linux.intel.com>
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
  

Patch

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");