]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Aug 2023 16:26:04 +0000 (18:26 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 13 Aug 2023 16:26:04 +0000 (18:26 +0200)
added patches:
nvme-rdma-fix-potential-unbalanced-freeze-unfreeze.patch
nvme-tcp-fix-potential-unbalanced-freeze-unfreeze.patch

queue-5.4/nvme-rdma-fix-potential-unbalanced-freeze-unfreeze.patch [new file with mode: 0644]
queue-5.4/nvme-tcp-fix-potential-unbalanced-freeze-unfreeze.patch [new file with mode: 0644]
queue-5.4/series

diff --git a/queue-5.4/nvme-rdma-fix-potential-unbalanced-freeze-unfreeze.patch b/queue-5.4/nvme-rdma-fix-potential-unbalanced-freeze-unfreeze.patch
new file mode 100644 (file)
index 0000000..62d46f7
--- /dev/null
@@ -0,0 +1,62 @@
+From 29b434d1e49252b3ad56ad3197e47fafff5356a1 Mon Sep 17 00:00:00 2001
+From: Ming Lei <ming.lei@redhat.com>
+Date: Tue, 11 Jul 2023 17:40:41 +0800
+Subject: nvme-rdma: fix potential unbalanced freeze & unfreeze
+
+From: Ming Lei <ming.lei@redhat.com>
+
+commit 29b434d1e49252b3ad56ad3197e47fafff5356a1 upstream.
+
+Move start_freeze into nvme_rdma_configure_io_queues(), and there is
+at least two benefits:
+
+1) fix unbalanced freeze and unfreeze, since re-connection work may
+fail or be broken by removal
+
+2) IO during error recovery can be failfast quickly because nvme fabrics
+unquiesces queues after teardown.
+
+One side-effect is that !mpath request may timeout during connecting
+because of queue topo change, but that looks not one big deal:
+
+1) same problem exists with current code base
+
+2) compared with !mpath, mpath use case is dominant
+
+Fixes: 9f98772ba307 ("nvme-rdma: fix controller reset hang during traffic")
+Cc: stable@vger.kernel.org
+Signed-off-by: Ming Lei <ming.lei@redhat.com>
+Tested-by: Yi Zhang <yi.zhang@redhat.com>
+Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/nvme/host/rdma.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/nvme/host/rdma.c
++++ b/drivers/nvme/host/rdma.c
+@@ -905,6 +905,7 @@ static int nvme_rdma_configure_io_queues
+               goto out_cleanup_connect_q;
+       if (!new) {
++              nvme_start_freeze(&ctrl->ctrl);
+               nvme_start_queues(&ctrl->ctrl);
+               if (!nvme_wait_freeze_timeout(&ctrl->ctrl, NVME_IO_TIMEOUT)) {
+                       /*
+@@ -913,6 +914,7 @@ static int nvme_rdma_configure_io_queues
+                        * to be safe.
+                        */
+                       ret = -ENODEV;
++                      nvme_unfreeze(&ctrl->ctrl);
+                       goto out_wait_freeze_timed_out;
+               }
+               blk_mq_update_nr_hw_queues(ctrl->ctrl.tagset,
+@@ -958,7 +960,6 @@ static void nvme_rdma_teardown_io_queues
+               bool remove)
+ {
+       if (ctrl->ctrl.queue_count > 1) {
+-              nvme_start_freeze(&ctrl->ctrl);
+               nvme_stop_queues(&ctrl->ctrl);
+               nvme_sync_io_queues(&ctrl->ctrl);
+               nvme_rdma_stop_io_queues(ctrl);
diff --git a/queue-5.4/nvme-tcp-fix-potential-unbalanced-freeze-unfreeze.patch b/queue-5.4/nvme-tcp-fix-potential-unbalanced-freeze-unfreeze.patch
new file mode 100644 (file)
index 0000000..5c5c299
--- /dev/null
@@ -0,0 +1,62 @@
+From 99dc264014d5aed66ee37ddf136a38b5a2b1b529 Mon Sep 17 00:00:00 2001
+From: Ming Lei <ming.lei@redhat.com>
+Date: Tue, 11 Jul 2023 17:40:40 +0800
+Subject: nvme-tcp: fix potential unbalanced freeze & unfreeze
+
+From: Ming Lei <ming.lei@redhat.com>
+
+commit 99dc264014d5aed66ee37ddf136a38b5a2b1b529 upstream.
+
+Move start_freeze into nvme_tcp_configure_io_queues(), and there is
+at least two benefits:
+
+1) fix unbalanced freeze and unfreeze, since re-connection work may
+fail or be broken by removal
+
+2) IO during error recovery can be failfast quickly because nvme fabrics
+unquiesces queues after teardown.
+
+One side-effect is that !mpath request may timeout during connecting
+because of queue topo change, but that looks not one big deal:
+
+1) same problem exists with current code base
+
+2) compared with !mpath, mpath use case is dominant
+
+Fixes: 2875b0aecabe ("nvme-tcp: fix controller reset hang during traffic")
+Cc: stable@vger.kernel.org
+Signed-off-by: Ming Lei <ming.lei@redhat.com>
+Tested-by: Yi Zhang <yi.zhang@redhat.com>
+Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
+Signed-off-by: Keith Busch <kbusch@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/nvme/host/tcp.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/nvme/host/tcp.c
++++ b/drivers/nvme/host/tcp.c
+@@ -1707,6 +1707,7 @@ static int nvme_tcp_configure_io_queues(
+               goto out_cleanup_connect_q;
+       if (!new) {
++              nvme_start_freeze(ctrl);
+               nvme_start_queues(ctrl);
+               if (!nvme_wait_freeze_timeout(ctrl, NVME_IO_TIMEOUT)) {
+                       /*
+@@ -1715,6 +1716,7 @@ static int nvme_tcp_configure_io_queues(
+                        * to be safe.
+                        */
+                       ret = -ENODEV;
++                      nvme_unfreeze(ctrl);
+                       goto out_wait_freeze_timed_out;
+               }
+               blk_mq_update_nr_hw_queues(ctrl->tagset,
+@@ -1837,7 +1839,6 @@ static void nvme_tcp_teardown_io_queues(
+       if (ctrl->queue_count <= 1)
+               return;
+       blk_mq_quiesce_queue(ctrl->admin_q);
+-      nvme_start_freeze(ctrl);
+       nvme_stop_queues(ctrl);
+       nvme_sync_io_queues(ctrl);
+       nvme_tcp_stop_io_queues(ctrl);
index 22e44b8e685139d91a940a5bc31787a8114fde7e..9e04502c3184e99e22acc6998752c5f13ee2582c 100644 (file)
@@ -27,3 +27,5 @@ net-mlx5-allow-0-for-total-host-vfs.patch
 ibmvnic-handle-dma-unmapping-of-login-buffs-in-release-functions.patch
 btrfs-don-t-stop-integrity-writeback-too-early.patch
 btrfs-set-cache_block_group_error-if-we-find-an-error.patch
+nvme-tcp-fix-potential-unbalanced-freeze-unfreeze.patch
+nvme-rdma-fix-potential-unbalanced-freeze-unfreeze.patch