History

nvmet-fc: add transport discovery change event callback support

This patch adds support for the nvmet discovery_change transport op. In turn, the transport adds it's own LLDD api callback discovery_event op to request the LLDD to generate an RSCN for the discovery change.

James Smart committed 7 years ago

Commit 150d71f1 parent 9d09dd82 files · +17 −0Browse files

Unified · Split

2 files
  1. drivers/nvme/target/fc.c +11 −0
  2. include/linux/nvme-fc-driver.h +6 −0
drivers/nvme/target/fc.c+11−0
@@ -2549,6 +2549,16 @@ nvmet_fc_remove_port(struct nvmet_port *port) · 2548 unmodified lines
25492549 kfree(pe);
25502550 }
25512551
2552+static void
2553+nvmet_fc_discovery_chg(struct nvmet_port *port)
2554+{
2555+ struct nvmet_fc_port_entry *pe = port->priv;
2556+ struct nvmet_fc_tgtport *tgtport = pe->tgtport;
2557+
2558+ if (tgtport && tgtport->ops->discovery_event)
2559+ tgtport->ops->discovery_event(&tgtport->fc_target_port);
2560+}
2561+
25522562 static const struct nvmet_fabrics_ops nvmet_fc_tgt_fcp_ops = {
25532563 .owner = THIS_MODULE,
25542564 .type = NVMF_TRTYPE_FC,
@@ -2557,6 +2567,7 @@ static const struct nvmet_fabrics_ops nvmet_fc_tgt_fcp_ops = { · 2 unmodified lines
25572567 .remove_port = nvmet_fc_remove_port,
25582568 .queue_response = nvmet_fc_fcp_nvme_cmd_done,
25592569 .delete_ctrl = nvmet_fc_delete_ctrl,
2570+ .discovery_chg = nvmet_fc_discovery_chg,
25602571 };
25612572
25622573 static int __init nvmet_fc_init_module(void)
include/linux/nvme-fc-driver.h+6−0
@@ -791,6 +791,11 @@ struct nvmet_fc_target_port { · 790 unmodified lines
791791 * nvmefc_tgt_fcp_req.
792792 * Entrypoint is Optional.
793793 *
794+ * @discovery_event: Called by the transport to generate an RSCN
795+ * change notifications to NVME initiators. The RSCN notifications
796+ * should cause the initiator to rescan the discovery controller
797+ * on the targetport.
798+ *
794799 * @max_hw_queues: indicates the maximum number of hw queues the LLDD
795800 * supports for cpu affinitization.
796801 * Value is Mandatory. Must be at least 1.
@@ -832,6 +837,7 @@ struct nvmet_fc_target_template { · 35 unmodified lines
832837 struct nvmefc_tgt_fcp_req *fcpreq);
833838 void (*defer_rcv)(struct nvmet_fc_target_port *tgtport,
834839 struct nvmefc_tgt_fcp_req *fcpreq);
840+ void (*discovery_event)(struct nvmet_fc_target_port *tgtport);
835841
836842 u32 max_hw_queues;
837843 u16 max_sgl_segments;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t