f2fs: fix to check warm_data_age_threshold

Message ID 20230117095407.37398-1-frank.li@vivo.com
State New
Headers
Series f2fs: fix to check warm_data_age_threshold |

Commit Message

李扬韬 Jan. 17, 2023, 9:54 a.m. UTC
  hot_data_age_threshold is a non-zero positive number, and
condition 2 includes condition 1, so there is no need to
additionally judge whether t is 0. And we need to judge
whether hot_data_age_threshold exceeds the number of available
blocks.

Fixes: 71644dff4811 ("f2fs: add block_age-based extent cache")
Signed-off-by: Yangtao Li <frank.li@vivo.com>
---
 fs/f2fs/sysfs.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
  

Patch

diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index e396851a6dd1..b59595daf3ef 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -689,7 +689,10 @@  static ssize_t __sbi_store(struct f2fs_attr *a,
 	}
 
 	if (!strcmp(a->attr.name, "warm_data_age_threshold")) {
-		if (t == 0 || t <= sbi->hot_data_age_threshold)
+		block_t avail_user_block_count;
+
+		avail_user_block_count = sbi->user_block_count - sbi->current_reserved_blocks;
+		if (t <= sbi->hot_data_age_threshold || t >= avail_user_block_count)
 			return -EINVAL;
 		if (t == *ui)
 			return count;