mirror of
https://github.com/torvalds/linux.git
synced 2024-11-13 23:51:39 +00:00
Revert "bcache: ignore pending signals when creating gc and allocator thread"
This reverts commit 0b96da639a
.
We can't just go flushing random signals, under the assumption that the
OOM killer will just do something else. It's not safe from the OOM
perspective, and it could also cause other signals to get randomly lost.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
e959e5405f
commit
764b53b26c
@ -67,7 +67,6 @@
|
|||||||
#include <linux/blkdev.h>
|
#include <linux/blkdev.h>
|
||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/sched/signal.h>
|
|
||||||
#include <trace/events/bcache.h>
|
#include <trace/events/bcache.h>
|
||||||
|
|
||||||
#define MAX_OPEN_BUCKETS 128
|
#define MAX_OPEN_BUCKETS 128
|
||||||
@ -734,21 +733,8 @@ int bch_open_buckets_alloc(struct cache_set *c)
|
|||||||
|
|
||||||
int bch_cache_allocator_start(struct cache *ca)
|
int bch_cache_allocator_start(struct cache *ca)
|
||||||
{
|
{
|
||||||
struct task_struct *k;
|
struct task_struct *k = kthread_run(bch_allocator_thread,
|
||||||
|
ca, "bcache_allocator");
|
||||||
/*
|
|
||||||
* In case previous btree check operation occupies too many
|
|
||||||
* system memory for bcache btree node cache, and the
|
|
||||||
* registering process is selected by OOM killer. Here just
|
|
||||||
* ignore the SIGKILL sent by OOM killer if there is, to
|
|
||||||
* avoid kthread_run() being failed by pending signals. The
|
|
||||||
* bcache registering process will exit after the registration
|
|
||||||
* done.
|
|
||||||
*/
|
|
||||||
if (signal_pending(current))
|
|
||||||
flush_signals(current);
|
|
||||||
|
|
||||||
k = kthread_run(bch_allocator_thread, ca, "bcache_allocator");
|
|
||||||
if (IS_ERR(k))
|
if (IS_ERR(k))
|
||||||
return PTR_ERR(k);
|
return PTR_ERR(k);
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@
|
|||||||
#include <linux/random.h>
|
#include <linux/random.h>
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
#include <linux/sched/clock.h>
|
#include <linux/sched/clock.h>
|
||||||
#include <linux/sched/signal.h>
|
|
||||||
#include <linux/rculist.h>
|
#include <linux/rculist.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <trace/events/bcache.h>
|
#include <trace/events/bcache.h>
|
||||||
@ -1914,18 +1913,6 @@ static int bch_gc_thread(void *arg)
|
|||||||
|
|
||||||
int bch_gc_thread_start(struct cache_set *c)
|
int bch_gc_thread_start(struct cache_set *c)
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
* In case previous btree check operation occupies too many
|
|
||||||
* system memory for bcache btree node cache, and the
|
|
||||||
* registering process is selected by OOM killer. Here just
|
|
||||||
* ignore the SIGKILL sent by OOM killer if there is, to
|
|
||||||
* avoid kthread_run() being failed by pending signals. The
|
|
||||||
* bcache registering process will exit after the registration
|
|
||||||
* done.
|
|
||||||
*/
|
|
||||||
if (signal_pending(current))
|
|
||||||
flush_signals(current);
|
|
||||||
|
|
||||||
c->gc_thread = kthread_run(bch_gc_thread, c, "bcache_gc");
|
c->gc_thread = kthread_run(bch_gc_thread, c, "bcache_gc");
|
||||||
return PTR_ERR_OR_ZERO(c->gc_thread);
|
return PTR_ERR_OR_ZERO(c->gc_thread);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user