summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch')
-rw-r--r--debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch18
1 files changed, 9 insertions, 9 deletions
diff --git a/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch b/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch
index 6fb41c49a..ecade5cd6 100644
--- a/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch
+++ b/debian/patches-rt/0257-workqueue-Prevent-deadlock-stall-on-RT.patch
@@ -1,7 +1,7 @@
From: Thomas Gleixner <tglx@linutronix.de>
Date: Fri, 27 Jun 2014 16:24:52 +0200
-Subject: [PATCH 257/353] workqueue: Prevent deadlock/stall on RT
-Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=a62b1ced9d802c6c953e854a71ef4c2bfabfb7e1
+Subject: [PATCH 257/354] workqueue: Prevent deadlock/stall on RT
+Origin: https://git.kernel.org/cgit/linux/kernel/git/rt/linux-stable-rt.git/commit?id=78b64dbd9f7ad3fb3e34cca02f8d504f1596ef7e
Austin reported a XFS deadlock/stall on RT where scheduled work gets
never exececuted and tasks are waiting for each other for ever.
@@ -67,7 +67,7 @@ index e581ce1edc12..fd1a7d1ff9f4 100644
* If we are going to sleep and we have plugged IO queued,
* make sure to submit it to avoid deadlocks.
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
-index 7561ac884a3e..cb81c7767b17 100644
+index 21751b94b93a..c148b0b8bda9 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -126,6 +126,11 @@ enum {
@@ -114,7 +114,7 @@ index 7561ac884a3e..cb81c7767b17 100644
#ifdef CONFIG_DEBUG_OBJECTS_WORK
static struct debug_obj_descr work_debug_descr;
-@@ -837,10 +867,16 @@ static struct worker *first_idle_worker(struct worker_pool *pool)
+@@ -840,10 +870,16 @@ static struct worker *first_idle_worker(struct worker_pool *pool)
*/
static void wake_up_worker(struct worker_pool *pool)
{
@@ -132,7 +132,7 @@ index 7561ac884a3e..cb81c7767b17 100644
}
/**
-@@ -869,7 +905,7 @@ void wq_worker_running(struct task_struct *task)
+@@ -872,7 +908,7 @@ void wq_worker_running(struct task_struct *task)
*/
void wq_worker_sleeping(struct task_struct *task)
{
@@ -141,7 +141,7 @@ index 7561ac884a3e..cb81c7767b17 100644
struct worker_pool *pool;
/*
-@@ -886,26 +922,18 @@ void wq_worker_sleeping(struct task_struct *task)
+@@ -889,26 +925,18 @@ void wq_worker_sleeping(struct task_struct *task)
return;
worker->sleeping = 1;
@@ -171,7 +171,7 @@ index 7561ac884a3e..cb81c7767b17 100644
}
/**
-@@ -1678,7 +1706,9 @@ static void worker_enter_idle(struct worker *worker)
+@@ -1681,7 +1709,9 @@ static void worker_enter_idle(struct worker *worker)
worker->last_active = jiffies;
/* idle_list is LIFO */
@@ -181,7 +181,7 @@ index 7561ac884a3e..cb81c7767b17 100644
if (too_many_workers(pool) && !timer_pending(&pool->idle_timer))
mod_timer(&pool->idle_timer, jiffies + IDLE_WORKER_TIMEOUT);
-@@ -1711,7 +1741,9 @@ static void worker_leave_idle(struct worker *worker)
+@@ -1714,7 +1744,9 @@ static void worker_leave_idle(struct worker *worker)
return;
worker_clr_flags(worker, WORKER_IDLE);
pool->nr_idle--;
@@ -191,7 +191,7 @@ index 7561ac884a3e..cb81c7767b17 100644
}
static struct worker *alloc_worker(int node)
-@@ -1876,7 +1908,9 @@ static void destroy_worker(struct worker *worker)
+@@ -1879,7 +1911,9 @@ static void destroy_worker(struct worker *worker)
pool->nr_workers--;
pool->nr_idle--;