]> www.infradead.org Git - nvme.git/commitdiff
nvme: re-read ANA log page after ns scan completes
authorHannes Reinecke <hare@kernel.org>
Thu, 3 Apr 2025 07:19:30 +0000 (09:19 +0200)
committerChristoph Hellwig <hch@lst.de>
Tue, 8 Apr 2025 05:07:14 +0000 (07:07 +0200)
When scanning for new namespaces we might have missed an ANA AEN.

The NVMe base spec (NVMe Base Specification v2.1, Figure 151 'Asynchonous
Event Information - Notice': Asymmetric Namespace Access Change) states:

  A controller shall not send this even if an Attached Namespace
  Attribute Changed asynchronous event [...] is sent for the same event.

so we need to re-read the ANA log page after we rescanned the namespace
list to update the ANA states of the new namespaces.

Signed-off-by: Hannes Reinecke <hare@kernel.org>
Reviewed-by: Keith Busch <kbusch@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/host/core.c

index dc298de76de1725d8052a6b27d8e7ade05e65e18..b502ac07483ba839fcedd907238180ff8ea7ace8 100644 (file)
@@ -4299,6 +4299,11 @@ static void nvme_scan_work(struct work_struct *work)
        /* Requeue if we have missed AENs */
        if (test_bit(NVME_AER_NOTICE_NS_CHANGED, &ctrl->events))
                nvme_queue_scan(ctrl);
+#ifdef CONFIG_NVME_MULTIPATH
+       else
+               /* Re-read the ANA log page to not miss updates */
+               queue_work(nvme_wq, &ctrl->ana_work);
+#endif
 }
 
 /*