2022-10-27 18:16:24

by Jaegeuk Kim

[permalink] [raw]
Subject: [PATCH] f2fs: do not stop threads in irq context

Let's stop threads first to avoid irq context.

Signed-off-by: Jaegeuk Kim <[email protected]>
---
fs/f2fs/super.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
index a241e4073f1d..14b4bb0f8ce6 100644
--- a/fs/f2fs/super.c
+++ b/fs/f2fs/super.c
@@ -3905,6 +3905,9 @@ static void f2fs_record_stop_reason(struct f2fs_sb_info *sbi)
struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi);
int err;

+ f2fs_stop_gc_thread(sbi);
+ f2fs_stop_discard_thread(sbi);
+
f2fs_down_write(&sbi->sb_lock);

spin_lock(&sbi->error_lock);
@@ -4014,9 +4017,6 @@ void f2fs_handle_critical_error(struct f2fs_sb_info *sbi, unsigned char reason,
*/
smp_wmb();
sb->s_flags |= SB_RDONLY;
-
- f2fs_stop_gc_thread(sbi);
- f2fs_stop_discard_thread(sbi);
}

static void flush_error_work(struct work_struct *work)
--
2.38.1.273.g43a17bfeac-goog