On Mon, Oct 14, 2024 at 07:41:18PM +0900, Damien Le Moal wrote: > | | PCIe NVMe endpoint driver | | > | | (Handles BAR registers, | | > | | doorbells, IRQs, SQs, CQs | | > | | and DMA transfers) | | > | +---------------------------+ | > | | | > | +---------------------------+ | > | | NVMe fabrics host | | > | +---------------------------+ | That whole fabrics host here is broken. The PCI frontend needs to talk directly to the target code instead of doing a completely pointless roundtrip through the block layer. > Unless I am mistaken, if I use a PCI transport as the base for the endpoint > driver, I would be able to connect only to a PCIe nvme device as the backend, no > ? No. Any fabrisc transport (or frontend) can you any of the the backends (file / bdev and passthrough).