From cd80e76bc2261704c62cd695be017e4b3820ee84 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Tue, 7 Jul 2020 22:27:36 -0400 Subject: [PATCH] Drop nvme-fix-possible-deadlock-when-i-o-is-blocked.patch from 5.4 and 4.19 Signed-off-by: Sasha Levin --- ...ossible-deadlock-when-i-o-is-blocked.patch | 124 ------------------ queue-4.19/series | 1 - ...ossible-deadlock-when-i-o-is-blocked.patch | 124 ------------------ queue-5.4/series | 1 - 4 files changed, 250 deletions(-) delete mode 100644 queue-4.19/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch delete mode 100644 queue-5.4/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch diff --git a/queue-4.19/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch b/queue-4.19/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch deleted file mode 100644 index aaf22029c38..00000000000 --- a/queue-4.19/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch +++ /dev/null @@ -1,124 +0,0 @@ -From bf6f07e595da01974334f6d10892543d85fd1696 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 24 Jun 2020 01:53:08 -0700 -Subject: nvme: fix possible deadlock when I/O is blocked - -From: Sagi Grimberg - -[ Upstream commit 3b4b19721ec652ad2c4fe51dfbe5124212b5f581 ] - -Revert fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk -in nvme_validate_ns") - -When adding a new namespace to the head disk (via nvme_mpath_set_live) -we will see partition scan which triggers I/O on the mpath device node. -This process will usually be triggered from the scan_work which holds -the scan_lock. If I/O blocks (if we got ana change currently have only -available paths but none are accessible) this can deadlock on the head -disk bd_mutex as both partition scan I/O takes it, and head disk revalidation -takes it to check for resize (also triggered from scan_work on a different -path). See trace [1]. - -The mpath disk revalidation was originally added to detect online disk -size change, but this is no longer needed since commit cb224c3af4df -("nvme: Convert to use set_capacity_revalidate_and_notify") which already -updates resize info without unnecessarily revalidating the disk (the -mpath disk doesn't even implement .revalidate_disk fop). - -[1]: --- -kernel: INFO: task kworker/u65:9:494 blocked for more than 241 seconds. -kernel: Tainted: G OE 5.3.5-050305-generic #201910071830 -kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. -kernel: kworker/u65:9 D 0 494 2 0x80004000 -kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core] -kernel: Call Trace: -kernel: __schedule+0x2b9/0x6c0 -kernel: schedule+0x42/0xb0 -kernel: schedule_preempt_disabled+0xe/0x10 -kernel: __mutex_lock.isra.0+0x182/0x4f0 -kernel: __mutex_lock_slowpath+0x13/0x20 -kernel: mutex_lock+0x2e/0x40 -kernel: revalidate_disk+0x63/0xa0 -kernel: __nvme_revalidate_disk+0xfe/0x110 [nvme_core] -kernel: nvme_revalidate_disk+0xa4/0x160 [nvme_core] -kernel: ? evict+0x14c/0x1b0 -kernel: revalidate_disk+0x2b/0xa0 -kernel: nvme_validate_ns+0x49/0x940 [nvme_core] -kernel: ? blk_mq_free_request+0xd2/0x100 -kernel: ? __nvme_submit_sync_cmd+0xbe/0x1e0 [nvme_core] -kernel: nvme_scan_work+0x24f/0x380 [nvme_core] -kernel: process_one_work+0x1db/0x380 -kernel: worker_thread+0x249/0x400 -kernel: kthread+0x104/0x140 -kernel: ? process_one_work+0x380/0x380 -kernel: ? kthread_park+0x80/0x80 -kernel: ret_from_fork+0x1f/0x40 -... -kernel: INFO: task kworker/u65:1:2630 blocked for more than 241 seconds. -kernel: Tainted: G OE 5.3.5-050305-generic #201910071830 -kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. -kernel: kworker/u65:1 D 0 2630 2 0x80004000 -kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core] -kernel: Call Trace: -kernel: __schedule+0x2b9/0x6c0 -kernel: schedule+0x42/0xb0 -kernel: io_schedule+0x16/0x40 -kernel: do_read_cache_page+0x438/0x830 -kernel: ? __switch_to_asm+0x34/0x70 -kernel: ? file_fdatawait_range+0x30/0x30 -kernel: read_cache_page+0x12/0x20 -kernel: read_dev_sector+0x27/0xc0 -kernel: read_lba+0xc1/0x220 -kernel: ? kmem_cache_alloc_trace+0x19c/0x230 -kernel: efi_partition+0x1e6/0x708 -kernel: ? vsnprintf+0x39e/0x4e0 -kernel: ? snprintf+0x49/0x60 -kernel: check_partition+0x154/0x244 -kernel: rescan_partitions+0xae/0x280 -kernel: __blkdev_get+0x40f/0x560 -kernel: blkdev_get+0x3d/0x140 -kernel: __device_add_disk+0x388/0x480 -kernel: device_add_disk+0x13/0x20 -kernel: nvme_mpath_set_live+0x119/0x140 [nvme_core] -kernel: nvme_update_ns_ana_state+0x5c/0x60 [nvme_core] -kernel: nvme_set_ns_ana_state+0x1e/0x30 [nvme_core] -kernel: nvme_parse_ana_log+0xa1/0x180 [nvme_core] -kernel: ? nvme_update_ns_ana_state+0x60/0x60 [nvme_core] -kernel: nvme_mpath_add_disk+0x47/0x90 [nvme_core] -kernel: nvme_validate_ns+0x396/0x940 [nvme_core] -kernel: ? blk_mq_free_request+0xd2/0x100 -kernel: nvme_scan_work+0x24f/0x380 [nvme_core] -kernel: process_one_work+0x1db/0x380 -kernel: worker_thread+0x249/0x400 -kernel: kthread+0x104/0x140 -kernel: ? process_one_work+0x380/0x380 -kernel: ? kthread_park+0x80/0x80 -kernel: ret_from_fork+0x1f/0x40 --- - -Fixes: fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk -in nvme_validate_ns") -Signed-off-by: Anton Eidelman -Signed-off-by: Sagi Grimberg -Signed-off-by: Christoph Hellwig -Signed-off-by: Sasha Levin ---- - drivers/nvme/host/core.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c -index 0d60f2f8f3eec..5c9326777334f 100644 ---- a/drivers/nvme/host/core.c -+++ b/drivers/nvme/host/core.c -@@ -1602,7 +1602,6 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id) - if (ns->head->disk) { - nvme_update_disk_info(ns->head->disk, ns, id); - blk_queue_stack_limits(ns->head->disk->queue, ns->queue); -- revalidate_disk(ns->head->disk); - } - #endif - } --- -2.25.1 - diff --git a/queue-4.19/series b/queue-4.19/series index 5ead085a88b..06a296b47e9 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -7,7 +7,6 @@ mm-slub-fix-stack-overruns-with-slub_stats.patch usb-usbtest-fix-missing-kfree-dev-buf-in-usbtest_dis.patch s390-debug-avoid-kernel-warning-on-too-large-number-.patch nvme-multipath-set-bdi-capabilities-once.patch -nvme-fix-possible-deadlock-when-i-o-is-blocked.patch nvme-multipath-fix-deadlock-between-ana_work-and-sca.patch kgdb-avoid-suspicious-rcu-usage-warning.patch crypto-af_alg-fix-use-after-free-in-af_alg_accept-due-to-bh_lock_sock.patch diff --git a/queue-5.4/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch b/queue-5.4/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch deleted file mode 100644 index 96bd1d675ba..00000000000 --- a/queue-5.4/nvme-fix-possible-deadlock-when-i-o-is-blocked.patch +++ /dev/null @@ -1,124 +0,0 @@ -From ff0ab77899a11463749e83e2209d95f311d27e15 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 24 Jun 2020 01:53:08 -0700 -Subject: nvme: fix possible deadlock when I/O is blocked - -From: Sagi Grimberg - -[ Upstream commit 3b4b19721ec652ad2c4fe51dfbe5124212b5f581 ] - -Revert fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk -in nvme_validate_ns") - -When adding a new namespace to the head disk (via nvme_mpath_set_live) -we will see partition scan which triggers I/O on the mpath device node. -This process will usually be triggered from the scan_work which holds -the scan_lock. If I/O blocks (if we got ana change currently have only -available paths but none are accessible) this can deadlock on the head -disk bd_mutex as both partition scan I/O takes it, and head disk revalidation -takes it to check for resize (also triggered from scan_work on a different -path). See trace [1]. - -The mpath disk revalidation was originally added to detect online disk -size change, but this is no longer needed since commit cb224c3af4df -("nvme: Convert to use set_capacity_revalidate_and_notify") which already -updates resize info without unnecessarily revalidating the disk (the -mpath disk doesn't even implement .revalidate_disk fop). - -[1]: --- -kernel: INFO: task kworker/u65:9:494 blocked for more than 241 seconds. -kernel: Tainted: G OE 5.3.5-050305-generic #201910071830 -kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. -kernel: kworker/u65:9 D 0 494 2 0x80004000 -kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core] -kernel: Call Trace: -kernel: __schedule+0x2b9/0x6c0 -kernel: schedule+0x42/0xb0 -kernel: schedule_preempt_disabled+0xe/0x10 -kernel: __mutex_lock.isra.0+0x182/0x4f0 -kernel: __mutex_lock_slowpath+0x13/0x20 -kernel: mutex_lock+0x2e/0x40 -kernel: revalidate_disk+0x63/0xa0 -kernel: __nvme_revalidate_disk+0xfe/0x110 [nvme_core] -kernel: nvme_revalidate_disk+0xa4/0x160 [nvme_core] -kernel: ? evict+0x14c/0x1b0 -kernel: revalidate_disk+0x2b/0xa0 -kernel: nvme_validate_ns+0x49/0x940 [nvme_core] -kernel: ? blk_mq_free_request+0xd2/0x100 -kernel: ? __nvme_submit_sync_cmd+0xbe/0x1e0 [nvme_core] -kernel: nvme_scan_work+0x24f/0x380 [nvme_core] -kernel: process_one_work+0x1db/0x380 -kernel: worker_thread+0x249/0x400 -kernel: kthread+0x104/0x140 -kernel: ? process_one_work+0x380/0x380 -kernel: ? kthread_park+0x80/0x80 -kernel: ret_from_fork+0x1f/0x40 -... -kernel: INFO: task kworker/u65:1:2630 blocked for more than 241 seconds. -kernel: Tainted: G OE 5.3.5-050305-generic #201910071830 -kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. -kernel: kworker/u65:1 D 0 2630 2 0x80004000 -kernel: Workqueue: nvme-wq nvme_scan_work [nvme_core] -kernel: Call Trace: -kernel: __schedule+0x2b9/0x6c0 -kernel: schedule+0x42/0xb0 -kernel: io_schedule+0x16/0x40 -kernel: do_read_cache_page+0x438/0x830 -kernel: ? __switch_to_asm+0x34/0x70 -kernel: ? file_fdatawait_range+0x30/0x30 -kernel: read_cache_page+0x12/0x20 -kernel: read_dev_sector+0x27/0xc0 -kernel: read_lba+0xc1/0x220 -kernel: ? kmem_cache_alloc_trace+0x19c/0x230 -kernel: efi_partition+0x1e6/0x708 -kernel: ? vsnprintf+0x39e/0x4e0 -kernel: ? snprintf+0x49/0x60 -kernel: check_partition+0x154/0x244 -kernel: rescan_partitions+0xae/0x280 -kernel: __blkdev_get+0x40f/0x560 -kernel: blkdev_get+0x3d/0x140 -kernel: __device_add_disk+0x388/0x480 -kernel: device_add_disk+0x13/0x20 -kernel: nvme_mpath_set_live+0x119/0x140 [nvme_core] -kernel: nvme_update_ns_ana_state+0x5c/0x60 [nvme_core] -kernel: nvme_set_ns_ana_state+0x1e/0x30 [nvme_core] -kernel: nvme_parse_ana_log+0xa1/0x180 [nvme_core] -kernel: ? nvme_update_ns_ana_state+0x60/0x60 [nvme_core] -kernel: nvme_mpath_add_disk+0x47/0x90 [nvme_core] -kernel: nvme_validate_ns+0x396/0x940 [nvme_core] -kernel: ? blk_mq_free_request+0xd2/0x100 -kernel: nvme_scan_work+0x24f/0x380 [nvme_core] -kernel: process_one_work+0x1db/0x380 -kernel: worker_thread+0x249/0x400 -kernel: kthread+0x104/0x140 -kernel: ? process_one_work+0x380/0x380 -kernel: ? kthread_park+0x80/0x80 -kernel: ret_from_fork+0x1f/0x40 --- - -Fixes: fab7772bfbcf ("nvme-multipath: revalidate nvme_ns_head gendisk -in nvme_validate_ns") -Signed-off-by: Anton Eidelman -Signed-off-by: Sagi Grimberg -Signed-off-by: Christoph Hellwig -Signed-off-by: Sasha Levin ---- - drivers/nvme/host/core.c | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c -index d4b388793f40d..c44c00b9e1d85 100644 ---- a/drivers/nvme/host/core.c -+++ b/drivers/nvme/host/core.c -@@ -1870,7 +1870,6 @@ static void __nvme_revalidate_disk(struct gendisk *disk, struct nvme_id_ns *id) - if (ns->head->disk) { - nvme_update_disk_info(ns->head->disk, ns, id); - blk_queue_stack_limits(ns->head->disk->queue, ns->queue); -- revalidate_disk(ns->head->disk); - } - #endif - } --- -2.25.1 - diff --git a/queue-5.4/series b/queue-5.4/series index 3a41254e519..b7d4d50e2f1 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -11,7 +11,6 @@ tools-lib-traceevent-add-append-function-helper-for-.patch tools-lib-traceevent-handle-__attribute__-user-in-fi.patch s390-debug-avoid-kernel-warning-on-too-large-number-.patch nvme-multipath-set-bdi-capabilities-once.patch -nvme-fix-possible-deadlock-when-i-o-is-blocked.patch nvme-multipath-fix-deadlock-between-ana_work-and-sca.patch nvme-multipath-fix-deadlock-due-to-head-lock.patch nvme-multipath-fix-bogus-request-queue-reference-put.patch -- 2.47.3