From: Bart Van Assche <bvanassche@acm.org>
To: "Martin K . Petersen" <martin.petersen@oracle.com>
Cc: linux-scsi@vger.kernel.org, Bart Van Assche <bvanassche@acm.org>,
Saurav Kashyap <skashyap@marvell.com>,
Javed Hasan <jhasan@marvell.com>,
Himanshu Madhani <himanshu.madhani@oracle.com>,
Hannes Reinecke <hare@suse.de>,
"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: [PATCH v5 27/49] scsi: libfc: Stop using the SCSI pointer
Date: Fri, 18 Feb 2022 11:50:55 -0800 [thread overview]
Message-ID: <20220218195117.25689-28-bvanassche@acm.org> (raw)
In-Reply-To: <20220218195117.25689-1-bvanassche@acm.org>
Move the fc_fcp_pkt pointer, the residual length and the SCSI status into
the new data structure libfc_cmd_priv. This patch prepares for removal of
the SCSI pointer from struct scsi_cmnd.
The user of the libfc data path functions have been identified as follows:
$ git grep -lw fc_queuecommand | grep -v scsi/libfc/
drivers/scsi/fcoe/fcoe.c
Cc: Saurav Kashyap <skashyap@marvell.com>
Cc: Javed Hasan <jhasan@marvell.com>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/scsi/fcoe/fcoe.c | 1 +
drivers/scsi/libfc/fc_fcp.c | 26 +++++++++++---------------
include/scsi/libfc.h | 9 +++++++++
3 files changed, 21 insertions(+), 15 deletions(-)
diff --git a/drivers/scsi/fcoe/fcoe.c b/drivers/scsi/fcoe/fcoe.c
index 6415f88738ad..44ca6110213c 100644
--- a/drivers/scsi/fcoe/fcoe.c
+++ b/drivers/scsi/fcoe/fcoe.c
@@ -277,6 +277,7 @@ static struct scsi_host_template fcoe_shost_template = {
.sg_tablesize = SG_ALL,
.max_sectors = 0xffff,
.track_queue_depth = 1,
+ .cmd_size = sizeof(struct libfc_cmd_priv),
};
/**
diff --git a/drivers/scsi/libfc/fc_fcp.c b/drivers/scsi/libfc/fc_fcp.c
index 871b11edb586..bce90eb56c9c 100644
--- a/drivers/scsi/libfc/fc_fcp.c
+++ b/drivers/scsi/libfc/fc_fcp.c
@@ -45,14 +45,10 @@ static struct kmem_cache *scsi_pkt_cachep;
#define FC_SRB_READ (1 << 1)
#define FC_SRB_WRITE (1 << 0)
-/*
- * The SCp.ptr should be tested and set under the scsi_pkt_queue lock
- */
-#define CMD_SP(Cmnd) ((struct fc_fcp_pkt *)(Cmnd)->SCp.ptr)
-#define CMD_ENTRY_STATUS(Cmnd) ((Cmnd)->SCp.have_data_in)
-#define CMD_COMPL_STATUS(Cmnd) ((Cmnd)->SCp.this_residual)
-#define CMD_SCSI_STATUS(Cmnd) ((Cmnd)->SCp.Status)
-#define CMD_RESID_LEN(Cmnd) ((Cmnd)->SCp.buffers_residual)
+static struct libfc_cmd_priv *libfc_priv(struct scsi_cmnd *cmd)
+{
+ return scsi_cmd_priv(cmd);
+}
/**
* struct fc_fcp_internal - FCP layer internal data
@@ -1137,7 +1133,7 @@ static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp)
unsigned long flags;
int rc;
- fsp->cmd->SCp.ptr = (char *)fsp;
+ libfc_priv(fsp->cmd)->fsp = fsp;
fsp->cdb_cmd.fc_dl = htonl(fsp->data_len);
fsp->cdb_cmd.fc_flags = fsp->req_flags & ~FCP_CFL_LEN_MASK;
@@ -1150,7 +1146,7 @@ static int fc_fcp_pkt_send(struct fc_lport *lport, struct fc_fcp_pkt *fsp)
rc = lport->tt.fcp_cmd_send(lport, fsp, fc_fcp_recv);
if (unlikely(rc)) {
spin_lock_irqsave(&si->scsi_queue_lock, flags);
- fsp->cmd->SCp.ptr = NULL;
+ libfc_priv(fsp->cmd)->fsp = NULL;
list_del(&fsp->list);
spin_unlock_irqrestore(&si->scsi_queue_lock, flags);
}
@@ -1983,7 +1979,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
fc_fcp_can_queue_ramp_up(lport);
sc_cmd = fsp->cmd;
- CMD_SCSI_STATUS(sc_cmd) = fsp->cdb_status;
+ libfc_priv(sc_cmd)->status = fsp->cdb_status;
switch (fsp->status_code) {
case FC_COMPLETE:
if (fsp->cdb_status == 0) {
@@ -1992,7 +1988,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
*/
sc_cmd->result = DID_OK << 16;
if (fsp->scsi_resid)
- CMD_RESID_LEN(sc_cmd) = fsp->scsi_resid;
+ libfc_priv(sc_cmd)->resid_len = fsp->scsi_resid;
} else {
/*
* transport level I/O was ok but scsi
@@ -2025,7 +2021,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
*/
FC_FCP_DBG(fsp, "Returning DID_ERROR to scsi-ml "
"due to FC_DATA_UNDRUN (scsi)\n");
- CMD_RESID_LEN(sc_cmd) = fsp->scsi_resid;
+ libfc_priv(sc_cmd)->resid_len = fsp->scsi_resid;
sc_cmd->result = (DID_ERROR << 16) | fsp->cdb_status;
}
break;
@@ -2085,7 +2081,7 @@ static void fc_io_compl(struct fc_fcp_pkt *fsp)
spin_lock_irqsave(&si->scsi_queue_lock, flags);
list_del(&fsp->list);
- sc_cmd->SCp.ptr = NULL;
+ libfc_priv(sc_cmd)->fsp = NULL;
spin_unlock_irqrestore(&si->scsi_queue_lock, flags);
scsi_done(sc_cmd);
@@ -2121,7 +2117,7 @@ int fc_eh_abort(struct scsi_cmnd *sc_cmd)
si = fc_get_scsi_internal(lport);
spin_lock_irqsave(&si->scsi_queue_lock, flags);
- fsp = CMD_SP(sc_cmd);
+ fsp = libfc_priv(sc_cmd)->fsp;
if (!fsp) {
/* command completed while scsi eh was setting up */
spin_unlock_irqrestore(&si->scsi_queue_lock, flags);
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h
index eeb8d689ff6b..6e29e1719db1 100644
--- a/include/scsi/libfc.h
+++ b/include/scsi/libfc.h
@@ -351,6 +351,15 @@ struct fc_fcp_pkt {
struct completion tm_done;
} ____cacheline_aligned_in_smp;
+/*
+ * @fsp should be tested and set under the scsi_pkt_queue lock
+ */
+struct libfc_cmd_priv {
+ struct fc_fcp_pkt *fsp;
+ u32 resid_len;
+ u8 status;
+};
+
/*
* Structure and function definitions for managing Fibre Channel Exchanges
* and Sequences
next prev parent reply other threads:[~2022-02-18 19:52 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-18 19:50 [PATCH v5 00/49] Remove the SCSI pointer from struct scsi_cmnd Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 01/49] scsi: ips: Remove an unreachable statement Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 02/49] scsi: ips: Change the return type of ips_release() into 'void' Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 03/49] scsi: ips: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 04/49] scsi: nsp_cs: Change the return type of two functions into 'void' Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 05/49] scsi: nsp_cs: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 06/49] scsi: Remove drivers/scsi/scsi.h Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 07/49] scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 08/49] scsi: NCR5380: Add SCp members to struct NCR5380_cmd Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 09/49] scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 10/49] scsi: arm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 11/49] scsi: 53c700: Stop clearing SCSI pointer fields Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 12/49] scsi: aacraid: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 13/49] scsi: advansys: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 14/49] scsi: aha1542: Remove a set-but-not-used array Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 15/49] scsi: aha152x: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 16/49] scsi: bfa: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 17/49] scsi: csio: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 18/49] scsi: dc395x: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 19/49] scsi: esp_scsi: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 20/49] scsi: fdomain: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 21/49] scsi: fnic: Fix a tracing statement Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 22/49] scsi: fnic: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 23/49] scsi: hptiop: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 24/49] scsi: imm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 25/49] scsi: iscsi: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 26/49] scsi: initio: " Bart Van Assche
2022-02-18 19:50 ` Bart Van Assche [this message]
2022-02-18 19:50 ` [PATCH v5 28/49] scsi: bnx2fc: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 29/49] scsi: qedf: " Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 30/49] scsi: mac53c94: Fix a set-but-not-used compiler warning Bart Van Assche
2022-02-18 19:50 ` [PATCH v5 31/49] scsi: mac53c94: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 32/49] scsi: megaraid: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 33/49] scsi: megasas: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 34/49] scsi: mesh: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 35/49] scsi: mvsas: Fix a set-but-not-used warning Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 36/49] scsi: mvumi: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 37/49] scsi: nsp32: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 38/49] scsi: nsp_cs: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 39/49] scsi: sym53c500_cs: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 40/49] scsi: ppa: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 41/49] scsi: qla1280: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 42/49] scsi: qla2xxx: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 43/49] scsi: smartpqi: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 44/49] scsi: sym53c8xx_2: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 45/49] scsi: usb: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 46/49] scsi: wd719x: " Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 47/49] scsi: wd33c93: Move the SCSI pointer to private command data Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 48/49] scsi: zalon: Stop using the SCSI pointer Bart Van Assche
2022-02-18 19:51 ` [PATCH v5 49/49] scsi: core: Remove struct scsi_pointer from struct scsi_cmnd Bart Van Assche
2022-02-19 22:05 ` [PATCH v5 00/49] Remove the SCSI pointer " Martin K. Petersen
2022-02-28 3:43 ` Martin K. Petersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220218195117.25689-28-bvanassche@acm.org \
--to=bvanassche@acm.org \
--cc=hare@suse.de \
--cc=himanshu.madhani@oracle.com \
--cc=jejb@linux.ibm.com \
--cc=jhasan@marvell.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=skashyap@marvell.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox