]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - linux/kthread.c
Update bcachefs sources to 7c0fe6f104 bcachefs: Fix bch2_fsck_ask_yn()
[bcachefs-tools-debian] / linux / kthread.c
index 65e824b4cc0843c36d0b905e7b9c266dabcb98d7..134aeeef2c8125f160c1e1c7c7db4c798cf2e9e9 100644 (file)
@@ -71,8 +71,10 @@ struct task_struct *kthread_create(int (*thread_fn)(void *data),
        p->thread_fn    = thread_fn;
        p->thread_data  = thread_data;
        p->state        = TASK_UNINTERRUPTIBLE;
+       p->signal       = &p->_signal;
        atomic_set(&p->usage, 1);
        init_completion(&p->exited);
+       init_rwsem(&p->_signal.exec_update_lock);
 
        pthread_attr_t attr;
        pthread_attr_init(&attr);
@@ -80,7 +82,7 @@ struct task_struct *kthread_create(int (*thread_fn)(void *data),
 
        ret = pthread_create(&p->thread, &attr, kthread_start_fn, p);
        if (ret)
-               die("pthread_create error %s", strerror(ret));
+               return ERR_PTR(-ret);
        pthread_setname_np(p->thread, p->comm);
        return p;
 }
@@ -97,6 +99,11 @@ bool kthread_should_stop(void)
        return test_bit(KTHREAD_SHOULD_STOP, &current->kthread_flags);
 }
 
+bool kthread_freezable_should_stop(bool *was_frozen)
+{
+       return test_bit(KTHREAD_SHOULD_STOP, &current->kthread_flags);
+}
+
 /**
  * kthread_stop - stop a thread created by kthread_create().
  * @k: thread created by kthread_create().