nvme-fabrics: patch target code in prep for FC transport support
authorJames Smart <james.smart@broadcom.com>
Fri, 21 Oct 2016 20:32:51 +0000 (23:32 +0300)
committerSagi Grimberg <sagi@grimberg.me>
Tue, 6 Dec 2016 08:17:03 +0000 (10:17 +0200)
- Add FC transport type decoding
- Add FC address family decoding

Signed-off-by: James Smart <james.smart@broadcom.com>
Acked-by: Johannes Thumshirn <jth@kernel.org>
Reviewed-by: Jay Freyensee <james_p_freyensee@linux.intel.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
drivers/nvme/target/configfs.c

index 011f88e5663e72591ad60f5ed21a97682ad2b7e2..d0f60c36d5767e1aad481039ac05382a4c93f198 100644 (file)
@@ -37,6 +37,8 @@ static ssize_t nvmet_addr_adrfam_show(struct config_item *item,
                return sprintf(page, "ipv6\n");
        case NVMF_ADDR_FAMILY_IB:
                return sprintf(page, "ib\n");
+       case NVMF_ADDR_FAMILY_FC:
+               return sprintf(page, "fc\n");
        default:
                return sprintf(page, "\n");
        }
@@ -59,6 +61,8 @@ static ssize_t nvmet_addr_adrfam_store(struct config_item *item,
                port->disc_addr.adrfam = NVMF_ADDR_FAMILY_IP6;
        } else if (sysfs_streq(page, "ib")) {
                port->disc_addr.adrfam = NVMF_ADDR_FAMILY_IB;
+       } else if (sysfs_streq(page, "fc")) {
+               port->disc_addr.adrfam = NVMF_ADDR_FAMILY_FC;
        } else {
                pr_err("Invalid value '%s' for adrfam\n", page);
                return -EINVAL;
@@ -209,6 +213,8 @@ static ssize_t nvmet_addr_trtype_show(struct config_item *item,
                return sprintf(page, "rdma\n");
        case NVMF_TRTYPE_LOOP:
                return sprintf(page, "loop\n");
+       case NVMF_TRTYPE_FC:
+               return sprintf(page, "fc\n");
        default:
                return sprintf(page, "\n");
        }
@@ -229,6 +235,12 @@ static void nvmet_port_init_tsas_loop(struct nvmet_port *port)
        memset(&port->disc_addr.tsas, 0, NVMF_TSAS_SIZE);
 }
 
+static void nvmet_port_init_tsas_fc(struct nvmet_port *port)
+{
+       port->disc_addr.trtype = NVMF_TRTYPE_FC;
+       memset(&port->disc_addr.tsas, 0, NVMF_TSAS_SIZE);
+}
+
 static ssize_t nvmet_addr_trtype_store(struct config_item *item,
                const char *page, size_t count)
 {
@@ -244,6 +256,8 @@ static ssize_t nvmet_addr_trtype_store(struct config_item *item,
                nvmet_port_init_tsas_rdma(port);
        } else if (sysfs_streq(page, "loop")) {
                nvmet_port_init_tsas_loop(port);
+       } else if (sysfs_streq(page, "fc")) {
+               nvmet_port_init_tsas_fc(port);
        } else {
                pr_err("Invalid value '%s' for trtype\n", page);
                return -EINVAL;