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



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to