Commit e399441d authored by James Smart's avatar James Smart Committed by Sagi Grimberg

nvme-fabrics: Add host support for FC transport

Implements the FC-NVME T11 definition of how nvme fabric capsules are
performed on an FC fabric. Utilizes a lower-layer API to FC host adapters
to send/receive FC-4 LS operations and FCP operations that comprise NVME
over FC operation.

The T11 definitions for FC-4 Link Services are implemented which create
NVMeOF connections.  Implements the hooks with blk-mq to then submit admin
and io requests to the different connections.
Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
Reviewed-by: default avatarJay Freyensee <james_p_freyensee@linux.intel.com>
Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent d6d20012
...@@ -8665,6 +8665,7 @@ L: linux-nvme@lists.infradead.org ...@@ -8665,6 +8665,7 @@ L: linux-nvme@lists.infradead.org
S: Supported S: Supported
F: include/linux/nvme-fc.h F: include/linux/nvme-fc.h
F: include/linux/nvme-fc-driver.h F: include/linux/nvme-fc-driver.h
F: drivers/nvme/host/fc.c
NVMEM FRAMEWORK NVMEM FRAMEWORK
M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
......
...@@ -43,3 +43,20 @@ config NVME_RDMA ...@@ -43,3 +43,20 @@ config NVME_RDMA
from https://github.com/linux-nvme/nvme-cli. from https://github.com/linux-nvme/nvme-cli.
If unsure, say N. If unsure, say N.
config NVME_FC
tristate "NVM Express over Fabrics FC host driver"
depends on BLOCK
depends on HAS_DMA
select NVME_CORE
select NVME_FABRICS
select SG_POOL
help
This provides support for the NVMe over Fabrics protocol using
the FC transport. This allows you to use remote block devices
exported using the NVMe protocol set.
To configure a NVMe over Fabrics controller use the nvme-cli tool
from https://github.com/linux-nvme/nvme-cli.
If unsure, say N.
...@@ -2,6 +2,7 @@ obj-$(CONFIG_NVME_CORE) += nvme-core.o ...@@ -2,6 +2,7 @@ obj-$(CONFIG_NVME_CORE) += nvme-core.o
obj-$(CONFIG_BLK_DEV_NVME) += nvme.o obj-$(CONFIG_BLK_DEV_NVME) += nvme.o
obj-$(CONFIG_NVME_FABRICS) += nvme-fabrics.o obj-$(CONFIG_NVME_FABRICS) += nvme-fabrics.o
obj-$(CONFIG_NVME_RDMA) += nvme-rdma.o obj-$(CONFIG_NVME_RDMA) += nvme-rdma.o
obj-$(CONFIG_NVME_FC) += nvme-fc.o
nvme-core-y := core.o nvme-core-y := core.o
nvme-core-$(CONFIG_BLK_DEV_NVME_SCSI) += scsi.o nvme-core-$(CONFIG_BLK_DEV_NVME_SCSI) += scsi.o
...@@ -12,3 +13,5 @@ nvme-y += pci.o ...@@ -12,3 +13,5 @@ nvme-y += pci.o
nvme-fabrics-y += fabrics.o nvme-fabrics-y += fabrics.o
nvme-rdma-y += rdma.o nvme-rdma-y += rdma.o
nvme-fc-y += fc.o
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment