Re: [f2fs-dev] [PATCH] f2fs: init discard policy after thread wakeup

2022-11-24 Thread Chao Yu

On 2022/11/18 11:46, Yangtao Li wrote:

Under the current logic, after the discard thread wakes up, it will not
run according to the expected policy, but will use the expected policy
before sleep. Move the strategy selection to after the thread wakes up,
so that the running state of the thread meets expectations.

Signed-off-by: Yangtao Li 


Reviewed-by: Chao Yu 

Thanks,


___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [PATCH] f2fs: init discard policy after thread wakeup

2022-11-23 Thread Yangtao Li via Linux-f2fs-devel
HI Chao,
>>  set_freezable();
>>   
>>  do {
>
>   if (!atomic_read(>discard_cmd_cnt))
>  wait_ms = dpolicy.max_interval;

dpolicy has not been initialized for the first time, and the value in the stack 
is unstable.

Thx,
Yangtao


___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel


Re: [f2fs-dev] [PATCH] f2fs: init discard policy after thread wakeup

2022-11-23 Thread Chao Yu

On 2022/11/18 11:46, Yangtao Li wrote:

Under the current logic, after the discard thread wakes up, it will not
run according to the expected policy, but will use the expected policy
before sleep. Move the strategy selection to after the thread wakes up,
so that the running state of the thread meets expectations.

Signed-off-by: Yangtao Li 
---
  fs/f2fs/segment.c | 20 +---
  1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 8b0b76550578..609e90aa80c2 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1685,6 +1685,11 @@ static int issue_discard_thread(void *data)
set_freezable();
  
  	do {


if (!atomic_read(>discard_cmd_cnt))
   wait_ms = dpolicy.max_interval;

Thanks,


+   wait_event_interruptible_timeout(*q,
+   kthread_should_stop() || freezing(current) ||
+   dcc->discard_wake,
+   msecs_to_jiffies(wait_ms));
+
if (sbi->gc_mode == GC_URGENT_HIGH ||
!f2fs_available_free_memory(sbi, DISCARD_CACHE))
__init_discard_policy(sbi, , DPOLICY_FORCE, 1);
@@ -1692,14 +1697,6 @@ static int issue_discard_thread(void *data)
__init_discard_policy(sbi, , DPOLICY_BG,
dcc->discard_granularity);
  
-		if (!atomic_read(>discard_cmd_cnt))

-  wait_ms = dpolicy.max_interval;
-
-   wait_event_interruptible_timeout(*q,
-   kthread_should_stop() || freezing(current) ||
-   dcc->discard_wake,
-   msecs_to_jiffies(wait_ms));
-
if (dcc->discard_wake)
dcc->discard_wake = 0;
  
@@ -1713,12 +1710,11 @@ static int issue_discard_thread(void *data)

continue;
if (kthread_should_stop())
return 0;
-   if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) {
+   if (is_sbi_flag_set(sbi, SBI_NEED_FSCK) ||
+   !atomic_read(>discard_cmd_cnt)) {
wait_ms = dpolicy.max_interval;
continue;
}
-   if (!atomic_read(>discard_cmd_cnt))
-   continue;
  
  		sb_start_intwrite(sbi->sb);
  
@@ -1733,6 +1729,8 @@ static int issue_discard_thread(void *data)

} else {
wait_ms = dpolicy.max_interval;
}
+   if (!atomic_read(>discard_cmd_cnt))
+   wait_ms = dpolicy.max_interval;
  
  		sb_end_intwrite(sbi->sb);
  



___
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel