diff options
author | Josef Bacik <josef@toxicpanda.com> | 2018-07-31 18:39:04 +0200 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-08-01 17:16:04 +0200 |
commit | 2c323017e381c55c5ce2a603b8305bb18c1162cc (patch) | |
tree | dec6e7ee5c6b022966a69e4422d4e33a3adfbcba /kernel/fork.c | |
parent | blk-cgroup: hold the queue ref during throttling (diff) | |
download | linux-2c323017e381c55c5ce2a603b8305bb18c1162cc.tar.xz linux-2c323017e381c55c5ce2a603b8305bb18c1162cc.zip |
blk-cgroup: clear the throttle queue on fork
We were hitting a panic in production where we put too many times on the
request queue. This is because we'd get the throttle_queue of the
parent if we fork()'ed while we needed to be throttled, but we didn't
have a reference on it. Instead just clear these flags on fork so the
child doesn't pay for the sins of its father.
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 9440d61b925c..694ae0e56866 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -843,6 +843,11 @@ static struct task_struct *dup_task_struct(struct task_struct *orig, int node) tsk->fail_nth = 0; #endif +#ifdef CONFIG_BLK_CGROUP + tsk->throttle_queue = NULL; + tsk->use_memdelay = 0; +#endif + return tsk; free_stack: |