From 86da5ebacf2cd93c8a4640e4cc95d38ae5be63ee Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 26 Nov 2019 18:58:37 +0100 Subject: [PATCH] 4.19-stable patches added patches: dm-crypt-make-workqueue-names-device-specific.patch revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch --- ...make-workqueue-names-device-specific.patch | 83 +++++++++++++++++++ ...hpri-for-the-io-and-crypt-workqueues.patch | 52 ++++++++++++ queue-4.19/series | 2 + 3 files changed, 137 insertions(+) create mode 100644 queue-4.19/dm-crypt-make-workqueue-names-device-specific.patch create mode 100644 queue-4.19/revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch diff --git a/queue-4.19/dm-crypt-make-workqueue-names-device-specific.patch b/queue-4.19/dm-crypt-make-workqueue-names-device-specific.patch new file mode 100644 index 00000000000..50a459af13d --- /dev/null +++ b/queue-4.19/dm-crypt-make-workqueue-names-device-specific.patch @@ -0,0 +1,83 @@ +From ed0302e83098db9b3a8c27f36c93deeafd6963d8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= +Date: Tue, 9 Oct 2018 22:13:43 +0200 +Subject: dm crypt: make workqueue names device-specific +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Michał Mirosław + +commit ed0302e83098db9b3a8c27f36c93deeafd6963d8 upstream. + +Make cpu-usage debugging easier by naming workqueues per device. + +Example ps output: + +root 413 0.0 0.0 0 0 ? I< paź02 0:00 [kcryptd_io/253:0] +root 414 0.0 0.0 0 0 ? I< paź02 0:00 [kcryptd/253:0] +root 415 0.0 0.0 0 0 ? S paź02 1:10 [dmcrypt_write/253:0] +root 465 0.0 0.0 0 0 ? I< paź02 0:00 [kcryptd_io/253:2] +root 466 0.0 0.0 0 0 ? I< paź02 0:00 [kcryptd/253:2] +root 467 0.0 0.0 0 0 ? S paź02 2:06 [dmcrypt_write/253:2] +root 15359 0.2 0.0 0 0 ? I< 19:43 0:25 [kworker/u17:8-kcryptd/253:0] +root 16563 0.2 0.0 0 0 ? I< 20:10 0:18 [kworker/u17:0-kcryptd/253:2] +root 23205 0.1 0.0 0 0 ? I< 21:21 0:04 [kworker/u17:4-kcryptd/253:0] +root 13383 0.1 0.0 0 0 ? I< 21:32 0:02 [kworker/u17:2-kcryptd/253:2] +root 2610 0.1 0.0 0 0 ? I< 21:42 0:01 [kworker/u17:12-kcryptd/253:2] +root 20124 0.1 0.0 0 0 ? I< 21:56 0:01 [kworker/u17:1-kcryptd/253:2] + +Signed-off-by: Michał Mirosław +Signed-off-by: Mike Snitzer +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-crypt.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +--- a/drivers/md/dm-crypt.c ++++ b/drivers/md/dm-crypt.c +@@ -2671,6 +2671,7 @@ static int crypt_ctr_optional(struct dm_ + static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv) + { + struct crypt_config *cc; ++ const char *devname = dm_table_device_name(ti->table); + int key_size; + unsigned int align_mask; + unsigned long long tmpll; +@@ -2816,18 +2817,22 @@ static int crypt_ctr(struct dm_target *t + } + + ret = -ENOMEM; +- cc->io_queue = alloc_workqueue("kcryptd_io", WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, 1); ++ cc->io_queue = alloc_workqueue("kcryptd_io/%s", ++ WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, ++ 1, devname); + if (!cc->io_queue) { + ti->error = "Couldn't create kcryptd io queue"; + goto bad; + } + + if (test_bit(DM_CRYPT_SAME_CPU, &cc->flags)) +- cc->crypt_queue = alloc_workqueue("kcryptd", WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, 1); ++ cc->crypt_queue = alloc_workqueue("kcryptd/%s", ++ WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, ++ 1, devname); + else +- cc->crypt_queue = alloc_workqueue("kcryptd", ++ cc->crypt_queue = alloc_workqueue("kcryptd/%s", + WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM | WQ_UNBOUND, +- num_online_cpus()); ++ num_online_cpus(), devname); + if (!cc->crypt_queue) { + ti->error = "Couldn't create kcryptd queue"; + goto bad; +@@ -2836,7 +2841,7 @@ static int crypt_ctr(struct dm_target *t + spin_lock_init(&cc->write_thread_lock); + cc->write_tree = RB_ROOT; + +- cc->write_thread = kthread_create(dmcrypt_write, cc, "dmcrypt_write"); ++ cc->write_thread = kthread_create(dmcrypt_write, cc, "dmcrypt_write/%s", devname); + if (IS_ERR(cc->write_thread)) { + ret = PTR_ERR(cc->write_thread); + cc->write_thread = NULL; diff --git a/queue-4.19/revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch b/queue-4.19/revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch new file mode 100644 index 00000000000..e2a11b880df --- /dev/null +++ b/queue-4.19/revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch @@ -0,0 +1,52 @@ +From f612b2132db529feac4f965f28a1b9258ea7c22b Mon Sep 17 00:00:00 2001 +From: Mike Snitzer +Date: Wed, 20 Nov 2019 17:27:39 -0500 +Subject: Revert "dm crypt: use WQ_HIGHPRI for the IO and crypt workqueues" + +From: Mike Snitzer + +commit f612b2132db529feac4f965f28a1b9258ea7c22b upstream. + +This reverts commit a1b89132dc4f61071bdeaab92ea958e0953380a1. + +Revert required hand-patching due to subsequent changes that were +applied since commit a1b89132dc4f61071bdeaab92ea958e0953380a1. + +Requires: ed0302e83098d ("dm crypt: make workqueue names device-specific") +Cc: stable@vger.kernel.org +Bug: https://bugzilla.kernel.org/show_bug.cgi?id=199857 +Reported-by: Vito Caputo +Signed-off-by: Mike Snitzer +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/md/dm-crypt.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +--- a/drivers/md/dm-crypt.c ++++ b/drivers/md/dm-crypt.c +@@ -2817,21 +2817,18 @@ static int crypt_ctr(struct dm_target *t + } + + ret = -ENOMEM; +- cc->io_queue = alloc_workqueue("kcryptd_io/%s", +- WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, +- 1, devname); ++ cc->io_queue = alloc_workqueue("kcryptd_io/%s", WQ_MEM_RECLAIM, 1, devname); + if (!cc->io_queue) { + ti->error = "Couldn't create kcryptd io queue"; + goto bad; + } + + if (test_bit(DM_CRYPT_SAME_CPU, &cc->flags)) +- cc->crypt_queue = alloc_workqueue("kcryptd/%s", +- WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, ++ cc->crypt_queue = alloc_workqueue("kcryptd/%s", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, + 1, devname); + else + cc->crypt_queue = alloc_workqueue("kcryptd/%s", +- WQ_HIGHPRI | WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM | WQ_UNBOUND, ++ WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM | WQ_UNBOUND, + num_online_cpus(), devname); + if (!cc->crypt_queue) { + ti->error = "Couldn't create kcryptd queue"; diff --git a/queue-4.19/series b/queue-4.19/series index 1d2918b64bd..68cc7093938 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -261,3 +261,5 @@ md-raid10-prevent-access-of-uninitialized-resync_pages-offset.patch mm-memory_hotplug-don-t-access-uninitialized-memmaps-in-shrink_zone_span.patch net-phy-dp83867-fix-speed-10-in-sgmii-mode.patch net-phy-dp83867-increase-sgmii-autoneg-timer-duration.patch +dm-crypt-make-workqueue-names-device-specific.patch +revert-dm-crypt-use-wq_highpri-for-the-io-and-crypt-workqueues.patch -- 2.47.3