jfs: Add missing set_freezable() for freezable kthread
authorKevin Hao <haokexin@gmail.com>
Mon, 18 Dec 2023 05:23:23 +0000 (13:23 +0800)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 2 Jan 2024 17:06:52 +0000 (11:06 -0600)
The kernel thread function jfs_lazycommit() and jfs_sync() invoke the
try_to_freeze() in its loop. But all the kernel threads are no-freezable
by default. So if we want to make a kernel thread to be freezable, we have
to invoke set_freezable() explicitly.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>
fs/jfs/jfs_txnmgr.c

index dccc8b3f104593a5f96c68f1e51b4a7fefdb3d8d..be17e3c43582f0ec17e1830b1b22b563cafbb0ba 100644 (file)
@@ -2702,6 +2702,7 @@ int jfs_lazycommit(void *arg)
        unsigned long flags;
        struct jfs_sb_info *sbi;
 
+       set_freezable();
        do {
                LAZY_LOCK(flags);
                jfs_commit_thread_waking = 0;   /* OK to wake another thread */
@@ -2884,6 +2885,7 @@ int jfs_sync(void *arg)
        struct jfs_inode_info *jfs_ip;
        tid_t tid;
 
+       set_freezable();
        do {
                /*
                 * write each inode on the anonymous inode list