]> www.infradead.org Git - users/jedix/linux-maple.git/commit
nvmet: pci-epf: Keep completion queues mapped
authorDamien Le Moal <dlemoal@kernel.org>
Thu, 13 Mar 2025 08:22:18 +0000 (17:22 +0900)
committerKeith Busch <kbusch@kernel.org>
Tue, 1 Apr 2025 16:01:05 +0000 (09:01 -0700)
commitea7789c1541084a3dae65ffd36778348dd98f61b
tree120bc59e176c7a14f8712645cd88ebdd43773c0d
parente3e68311ead15d8be61e8e1a8d2f0d1773a7ba9c
nvmet: pci-epf: Keep completion queues mapped

Instead of mapping and unmapping the completion queues memory to the
host PCI address space whenever nvmet_pci_epf_cq_work() is called, map
a completion queue to the host PCI address space when the completion
queue is created with nvmet_pci_epf_create_cq() and unmap it when the
completion queue is deleted with nvmet_pci_epf_delete_cq().

This removes the completion queue mapping/unmapping from
nvmet_pci_epf_cq_work() and significantly increases performance. For
a single job 4K random read QD=1 workload, the IOPS is increased from
23 KIOPS to 25 KIOPS. Some significant throughput increasde for high
queue depth and large IOs workloads can also be seen.

Since the functions nvmet_pci_epf_map_queue() and
nvmet_pci_epf_unmap_queue() are called respectively only from
nvmet_pci_epf_create_cq() and nvmet_pci_epf_delete_cq(), these functions
are removed and open-coded in their respective call sites.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/pci-epf.c