From 77bc933b23c936bc8de44427f15e69d54253ad66 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 28 Feb 2014 17:47:24 -0800 Subject: [PATCH] delete cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch --- ...red-workqueue-for-cgroup-destruction.patch | 54 ------------------- queue-3.10/series | 1 - ...red-workqueue-for-cgroup-destruction.patch | 54 ------------------- queue-3.13/series | 1 - 4 files changed, 110 deletions(-) delete mode 100644 queue-3.10/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch delete mode 100644 queue-3.13/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch diff --git a/queue-3.10/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch b/queue-3.10/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch deleted file mode 100644 index 0ec6333948d..00000000000 --- a/queue-3.10/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ab3f5faa6255a0eb4f832675507d9e295ca7e9ba Mon Sep 17 00:00:00 2001 -From: Hugh Dickins -Date: Thu, 6 Feb 2014 15:56:01 -0800 -Subject: cgroup: use an ordered workqueue for cgroup destruction - -From: Hugh Dickins - -commit ab3f5faa6255a0eb4f832675507d9e295ca7e9ba upstream. - -Sometimes the cleanup after memcg hierarchy testing gets stuck in -mem_cgroup_reparent_charges(), unable to bring non-kmem usage down to 0. - -There may turn out to be several causes, but a major cause is this: the -workitem to offline parent can get run before workitem to offline child; -parent's mem_cgroup_reparent_charges() circles around waiting for the -child's pages to be reparented to its lrus, but it's holding cgroup_mutex -which prevents the child from reaching its mem_cgroup_reparent_charges(). - -Just use an ordered workqueue for cgroup_destroy_wq. - -tj: Committing as the temporary fix until the reverse dependency can - be removed from memcg. Comment updated accordingly. - -Fixes: e5fca243abae ("cgroup: use a dedicated workqueue for cgroup destruction") -Suggested-by: Filipe Brandenburger -Signed-off-by: Hugh Dickins -Signed-off-by: Tejun Heo -Signed-off-by: Greg Kroah-Hartman - ---- - kernel/cgroup.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - ---- a/kernel/cgroup.c -+++ b/kernel/cgroup.c -@@ -4699,12 +4699,16 @@ static int __init cgroup_wq_init(void) - /* - * There isn't much point in executing destruction path in - * parallel. Good chunk is serialized with cgroup_mutex anyway. -- * Use 1 for @max_active. -+ * -+ * XXX: Must be ordered to make sure parent is offlined after -+ * children. The ordering requirement is for memcg where a -+ * parent's offline may wait for a child's leading to deadlock. In -+ * the long term, this should be fixed from memcg side. - * - * We would prefer to do this in cgroup_init() above, but that - * is called before init_workqueues(): so leave this until after. - */ -- cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); -+ cgroup_destroy_wq = alloc_ordered_workqueue("cgroup_destroy", 0); - BUG_ON(!cgroup_destroy_wq); - return 0; - } diff --git a/queue-3.10/series b/queue-3.10/series index 820506d6745..69702206e03 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -36,5 +36,4 @@ net-core-introduce-netif_skb_dev_features.patch net-ip-ipv6-handle-gso-skbs-in-forwarding-path.patch net-use-__gfp_noretry-for-high-order-allocations.patch memcg-fix-endless-loop-caused-by-mem_cgroup_iter.patch -cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch fs-fix-iversion-handling.patch diff --git a/queue-3.13/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch b/queue-3.13/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch deleted file mode 100644 index 98cb91ff2ee..00000000000 --- a/queue-3.13/cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch +++ /dev/null @@ -1,54 +0,0 @@ -From ab3f5faa6255a0eb4f832675507d9e295ca7e9ba Mon Sep 17 00:00:00 2001 -From: Hugh Dickins -Date: Thu, 6 Feb 2014 15:56:01 -0800 -Subject: cgroup: use an ordered workqueue for cgroup destruction - -From: Hugh Dickins - -commit ab3f5faa6255a0eb4f832675507d9e295ca7e9ba upstream. - -Sometimes the cleanup after memcg hierarchy testing gets stuck in -mem_cgroup_reparent_charges(), unable to bring non-kmem usage down to 0. - -There may turn out to be several causes, but a major cause is this: the -workitem to offline parent can get run before workitem to offline child; -parent's mem_cgroup_reparent_charges() circles around waiting for the -child's pages to be reparented to its lrus, but it's holding cgroup_mutex -which prevents the child from reaching its mem_cgroup_reparent_charges(). - -Just use an ordered workqueue for cgroup_destroy_wq. - -tj: Committing as the temporary fix until the reverse dependency can - be removed from memcg. Comment updated accordingly. - -Fixes: e5fca243abae ("cgroup: use a dedicated workqueue for cgroup destruction") -Suggested-by: Filipe Brandenburger -Signed-off-by: Hugh Dickins -Signed-off-by: Tejun Heo -Signed-off-by: Greg Kroah-Hartman - ---- - kernel/cgroup.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - ---- a/kernel/cgroup.c -+++ b/kernel/cgroup.c -@@ -5093,12 +5093,16 @@ static int __init cgroup_wq_init(void) - /* - * There isn't much point in executing destruction path in - * parallel. Good chunk is serialized with cgroup_mutex anyway. -- * Use 1 for @max_active. -+ * -+ * XXX: Must be ordered to make sure parent is offlined after -+ * children. The ordering requirement is for memcg where a -+ * parent's offline may wait for a child's leading to deadlock. In -+ * the long term, this should be fixed from memcg side. - * - * We would prefer to do this in cgroup_init() above, but that - * is called before init_workqueues(): so leave this until after. - */ -- cgroup_destroy_wq = alloc_workqueue("cgroup_destroy", 0, 1); -+ cgroup_destroy_wq = alloc_ordered_workqueue("cgroup_destroy", 0); - BUG_ON(!cgroup_destroy_wq); - return 0; - } diff --git a/queue-3.13/series b/queue-3.13/series index f54a6619227..9a45cc7368c 100644 --- a/queue-3.13/series +++ b/queue-3.13/series @@ -70,7 +70,6 @@ batman-adv-fix-tt-crc-computation-by-ensuring-byte-order.patch batman-adv-free-skb-on-tvlv-parsing-success.patch batman-adv-avoid-double-free-when-orig_node-initialization-fails.patch batman-adv-fix-potential-kernel-paging-error-for-unicast-transmissions.patch -cgroup-use-an-ordered-workqueue-for-cgroup-destruction.patch cgroup-fix-error-return-value-in-cgroup_mount.patch cgroup-fix-error-return-from-cgroup_create.patch cgroup-fix-locking-in-cgroup_cfts_commit.patch -- 2.47.3