|
Hannes Reinecke |
ece455 |
From: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
ece455 |
Date: Tue, 31 Mar 2020 09:50:00 -0700
|
|
Hannes Reinecke |
ece455 |
Subject: [PATCH] nvme-fcloop: refactor to enable target to host LS
|
|
Hannes Reinecke |
ece455 |
Git-commit: 43b722380017429f9f09fb19ceda5a30a9a5f5ed
|
|
Hannes Reinecke |
ece455 |
Git-repo: git://git.infradead.org/nvme.git
|
|
Hannes Reinecke |
ece455 |
Patch-mainline: Queued in subsystem maintainer repository
|
|
Hannes Reinecke |
ece455 |
References: bsc#1169045
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
Currently nvmefc-loop only sends LS's from host to target.
|
|
Hannes Reinecke |
ece455 |
Slightly rework data structures and routine names to reflect this
|
|
Hannes Reinecke |
ece455 |
path. Allows a straight-forward conversion to be used by ls's
|
|
Hannes Reinecke |
ece455 |
from target to host.
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
Signed-off-by: James Smart <jsmart2021@gmail.com>
|
|
Hannes Reinecke |
ece455 |
Reviewed-by: Hannes Reinecke <hare@suse.de>
|
|
Hannes Reinecke |
ece455 |
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
|
Hannes Reinecke |
ece455 |
Acked-by: Hannes Reinecke <hare@suse.com>
|
|
Hannes Reinecke |
ece455 |
---
|
|
Hannes Reinecke |
ece455 |
drivers/nvme/target/fcloop.c | 19 +++++++++++++------
|
|
Hannes Reinecke |
ece455 |
1 file changed, 13 insertions(+), 6 deletions(-)
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
diff --git a/drivers/nvme/target/fcloop.c b/drivers/nvme/target/fcloop.c
|
|
Hannes Reinecke |
ece455 |
index c11805a155e8..fac7dbe572db 100644
|
|
Hannes Reinecke |
ece455 |
--- a/drivers/nvme/target/fcloop.c
|
|
Hannes Reinecke |
ece455 |
+++ b/drivers/nvme/target/fcloop.c
|
|
Hannes Reinecke |
ece455 |
@@ -226,9 +226,15 @@ struct fcloop_nport {
|
|
Hannes Reinecke |
ece455 |
u32 port_id;
|
|
Hannes Reinecke |
ece455 |
};
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
+enum {
|
|
Hannes Reinecke |
ece455 |
+ H2T = 0,
|
|
Hannes Reinecke |
ece455 |
+ T2H = 1,
|
|
Hannes Reinecke |
ece455 |
+};
|
|
Hannes Reinecke |
ece455 |
+
|
|
Hannes Reinecke |
ece455 |
struct fcloop_lsreq {
|
|
Hannes Reinecke |
ece455 |
struct nvmefc_ls_req *lsreq;
|
|
Hannes Reinecke |
ece455 |
struct nvmefc_ls_rsp ls_rsp;
|
|
Hannes Reinecke |
ece455 |
+ int lsdir; /* H2T or T2H */
|
|
Hannes Reinecke |
ece455 |
int status;
|
|
Hannes Reinecke |
ece455 |
struct list_head ls_list; /* fcloop_rport->ls_list */
|
|
Hannes Reinecke |
ece455 |
};
|
|
Hannes Reinecke |
ece455 |
@@ -323,7 +329,7 @@ fcloop_rport_lsrqst_work(struct work_struct *work)
|
|
Hannes Reinecke |
ece455 |
}
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
static int
|
|
Hannes Reinecke |
ece455 |
-fcloop_ls_req(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
+fcloop_h2t_ls_req(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
struct nvme_fc_remote_port *remoteport,
|
|
Hannes Reinecke |
ece455 |
struct nvmefc_ls_req *lsreq)
|
|
Hannes Reinecke |
ece455 |
{
|
|
Hannes Reinecke |
ece455 |
@@ -331,6 +337,7 @@ fcloop_ls_req(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
struct fcloop_rport *rport = remoteport->private;
|
|
Hannes Reinecke |
ece455 |
int ret = 0;
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
+ tls_req->lsdir = H2T;
|
|
Hannes Reinecke |
ece455 |
tls_req->lsreq = lsreq;
|
|
Hannes Reinecke |
ece455 |
INIT_LIST_HEAD(&tls_req->ls_list);
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
@@ -351,7 +358,7 @@ fcloop_ls_req(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
}
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
static int
|
|
Hannes Reinecke |
ece455 |
-fcloop_xmt_ls_rsp(struct nvmet_fc_target_port *targetport,
|
|
Hannes Reinecke |
ece455 |
+fcloop_h2t_xmt_ls_rsp(struct nvmet_fc_target_port *targetport,
|
|
Hannes Reinecke |
ece455 |
struct nvmefc_ls_rsp *lsrsp)
|
|
Hannes Reinecke |
ece455 |
{
|
|
Hannes Reinecke |
ece455 |
struct fcloop_lsreq *tls_req = ls_rsp_to_lsreq(lsrsp);
|
|
Hannes Reinecke |
ece455 |
@@ -762,7 +769,7 @@ fcloop_fcp_req_release(struct nvmet_fc_target_port *tgtport,
|
|
Hannes Reinecke |
ece455 |
}
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
static void
|
|
Hannes Reinecke |
ece455 |
-fcloop_ls_abort(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
+fcloop_h2t_ls_abort(struct nvme_fc_local_port *localport,
|
|
Hannes Reinecke |
ece455 |
struct nvme_fc_remote_port *remoteport,
|
|
Hannes Reinecke |
ece455 |
struct nvmefc_ls_req *lsreq)
|
|
Hannes Reinecke |
ece455 |
{
|
|
Hannes Reinecke |
ece455 |
@@ -879,9 +886,9 @@ static struct nvme_fc_port_template fctemplate = {
|
|
Hannes Reinecke |
ece455 |
.remoteport_delete = fcloop_remoteport_delete,
|
|
Hannes Reinecke |
ece455 |
.create_queue = fcloop_create_queue,
|
|
Hannes Reinecke |
ece455 |
.delete_queue = fcloop_delete_queue,
|
|
Hannes Reinecke |
ece455 |
- .ls_req = fcloop_ls_req,
|
|
Hannes Reinecke |
ece455 |
+ .ls_req = fcloop_h2t_ls_req,
|
|
Hannes Reinecke |
ece455 |
.fcp_io = fcloop_fcp_req,
|
|
Hannes Reinecke |
ece455 |
- .ls_abort = fcloop_ls_abort,
|
|
Hannes Reinecke |
ece455 |
+ .ls_abort = fcloop_h2t_ls_abort,
|
|
Hannes Reinecke |
ece455 |
.fcp_abort = fcloop_fcp_abort,
|
|
Hannes Reinecke |
ece455 |
.max_hw_queues = FCLOOP_HW_QUEUES,
|
|
Hannes Reinecke |
ece455 |
.max_sgl_segments = FCLOOP_SGL_SEGS,
|
|
Hannes Reinecke |
ece455 |
@@ -896,7 +903,7 @@ static struct nvme_fc_port_template fctemplate = {
|
|
Hannes Reinecke |
ece455 |
|
|
Hannes Reinecke |
ece455 |
static struct nvmet_fc_target_template tgttemplate = {
|
|
Hannes Reinecke |
ece455 |
.targetport_delete = fcloop_targetport_delete,
|
|
Hannes Reinecke |
ece455 |
- .xmt_ls_rsp = fcloop_xmt_ls_rsp,
|
|
Hannes Reinecke |
ece455 |
+ .xmt_ls_rsp = fcloop_h2t_xmt_ls_rsp,
|
|
Hannes Reinecke |
ece455 |
.fcp_op = fcloop_fcp_op,
|
|
Hannes Reinecke |
ece455 |
.fcp_abort = fcloop_tgt_fcp_abort,
|
|
Hannes Reinecke |
ece455 |
.fcp_req_release = fcloop_fcp_req_release,
|
|
Hannes Reinecke |
ece455 |
--
|
|
Hannes Reinecke |
ece455 |
2.16.4
|
|
Hannes Reinecke |
ece455 |
|