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>,
linux-usb@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Oliver Neukum <oneukum@suse.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
Hannes Reinecke <hare@suse.de>,
Himanshu Madhani <himanshu.madhani@oracle.com>,
Alan Stern <stern@rowland.harvard.edu>
Subject: [PATCH v4 46/50] scsi: usb: Stop using the SCSI pointer
Date: Wed, 16 Feb 2022 13:02:29 -0800 [thread overview]
Message-ID: <20220216210233.28774-47-bvanassche@acm.org> (raw)
In-Reply-To: <20220216210233.28774-1-bvanassche@acm.org>
Set scsi_host_template.cmd_size instead of using the SCSI pointer for
storing driver-private data. Change the type of the argument of
uas_add_work() from struct uas_cmd_info * into struct scsi_cmnd * because
it is easier to convert a SCSI command pointer into a uas_cmd_info pointer
than the other way around.
This patch prepares for removal of the SCSI pointer from struct scsi_cmnd.
Cc: linux-usb@vger.kernel.org
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Oliver Neukum <oneukum@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
drivers/usb/storage/uas.c | 43 ++++++++++++++++++---------------------
1 file changed, 20 insertions(+), 23 deletions(-)
diff --git a/drivers/usb/storage/uas.c b/drivers/usb/storage/uas.c
index 7f2944729ecd..84dc270f6f73 100644
--- a/drivers/usb/storage/uas.c
+++ b/drivers/usb/storage/uas.c
@@ -113,7 +113,7 @@ static void uas_do_work(struct work_struct *work)
continue;
cmnd = devinfo->cmnd[i];
- cmdinfo = (void *)&cmnd->SCp;
+ cmdinfo = scsi_cmd_priv(cmnd);
if (!(cmdinfo->state & IS_IN_WORK_LIST))
continue;
@@ -139,10 +139,9 @@ static void uas_scan_work(struct work_struct *work)
dev_dbg(&devinfo->intf->dev, "scan complete\n");
}
-static void uas_add_work(struct uas_cmd_info *cmdinfo)
+static void uas_add_work(struct scsi_cmnd *cmnd)
{
- struct scsi_pointer *scp = (void *)cmdinfo;
- struct scsi_cmnd *cmnd = container_of(scp, struct scsi_cmnd, SCp);
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct uas_dev_info *devinfo = cmnd->device->hostdata;
lockdep_assert_held(&devinfo->lock);
@@ -163,7 +162,7 @@ static void uas_zap_pending(struct uas_dev_info *devinfo, int result)
continue;
cmnd = devinfo->cmnd[i];
- cmdinfo = (void *)&cmnd->SCp;
+ cmdinfo = scsi_cmd_priv(cmnd);
uas_log_cmd_state(cmnd, __func__, 0);
/* Sense urbs were killed, clear COMMAND_INFLIGHT manually */
cmdinfo->state &= ~COMMAND_INFLIGHT;
@@ -200,15 +199,14 @@ static void uas_sense(struct urb *urb, struct scsi_cmnd *cmnd)
static void uas_log_cmd_state(struct scsi_cmnd *cmnd, const char *prefix,
int status)
{
- struct uas_cmd_info *ci = (void *)&cmnd->SCp;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *ci = scsi_cmd_priv(cmnd);
if (status == -ENODEV) /* too late */
return;
scmd_printk(KERN_INFO, cmnd,
"%s %d uas-tag %d inflight:%s%s%s%s%s%s%s%s%s%s%s%s ",
- prefix, status, cmdinfo->uas_tag,
+ prefix, status, ci->uas_tag,
(ci->state & SUBMIT_STATUS_URB) ? " s-st" : "",
(ci->state & ALLOC_DATA_IN_URB) ? " a-in" : "",
(ci->state & SUBMIT_DATA_IN_URB) ? " s-in" : "",
@@ -231,7 +229,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd)
if (!cmnd)
return;
- cmdinfo = (void *)&cmnd->SCp;
+ cmdinfo = scsi_cmd_priv(cmnd);
if (cmdinfo->state & SUBMIT_CMD_URB)
usb_free_urb(cmdinfo->cmd_urb);
@@ -245,7 +243,7 @@ static void uas_free_unsubmitted_urbs(struct scsi_cmnd *cmnd)
static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller)
{
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
lockdep_assert_held(&devinfo->lock);
@@ -263,13 +261,13 @@ static int uas_try_complete(struct scsi_cmnd *cmnd, const char *caller)
static void uas_xfer_data(struct urb *urb, struct scsi_cmnd *cmnd,
unsigned direction)
{
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
int err;
cmdinfo->state |= direction | SUBMIT_STATUS_URB;
err = uas_submit_urbs(cmnd, cmnd->device->hostdata);
if (err) {
- uas_add_work(cmdinfo);
+ uas_add_work(cmnd);
}
}
@@ -329,7 +327,7 @@ static void uas_stat_cmplt(struct urb *urb)
}
cmnd = devinfo->cmnd[idx];
- cmdinfo = (void *)&cmnd->SCp;
+ cmdinfo = scsi_cmd_priv(cmnd);
if (!(cmdinfo->state & COMMAND_INFLIGHT)) {
uas_log_cmd_state(cmnd, "unexpected status cmplt", 0);
@@ -394,7 +392,7 @@ static void uas_stat_cmplt(struct urb *urb)
static void uas_data_cmplt(struct urb *urb)
{
struct scsi_cmnd *cmnd = urb->context;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
struct scsi_data_buffer *sdb = &cmnd->sdb;
unsigned long flags;
@@ -446,7 +444,7 @@ static struct urb *uas_alloc_data_urb(struct uas_dev_info *devinfo, gfp_t gfp,
enum dma_data_direction dir)
{
struct usb_device *udev = devinfo->udev;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct urb *urb = usb_alloc_urb(0, gfp);
struct scsi_data_buffer *sdb = &cmnd->sdb;
unsigned int pipe = (dir == DMA_FROM_DEVICE)
@@ -468,7 +466,7 @@ static struct urb *uas_alloc_sense_urb(struct uas_dev_info *devinfo, gfp_t gfp,
struct scsi_cmnd *cmnd)
{
struct usb_device *udev = devinfo->udev;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct urb *urb = usb_alloc_urb(0, gfp);
struct sense_iu *iu;
@@ -496,7 +494,7 @@ static struct urb *uas_alloc_cmd_urb(struct uas_dev_info *devinfo, gfp_t gfp,
{
struct usb_device *udev = devinfo->udev;
struct scsi_device *sdev = cmnd->device;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct urb *urb = usb_alloc_urb(0, gfp);
struct command_iu *iu;
int len;
@@ -558,7 +556,7 @@ static struct urb *uas_submit_sense_urb(struct scsi_cmnd *cmnd, gfp_t gfp)
static int uas_submit_urbs(struct scsi_cmnd *cmnd,
struct uas_dev_info *devinfo)
{
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct urb *urb;
int err;
@@ -637,12 +635,10 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd)
{
struct scsi_device *sdev = cmnd->device;
struct uas_dev_info *devinfo = sdev->hostdata;
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
unsigned long flags;
int idx, err;
- BUILD_BUG_ON(sizeof(struct uas_cmd_info) > sizeof(struct scsi_pointer));
-
/* Re-check scsi_block_requests now that we've the host-lock */
if (cmnd->device->host->host_self_blocked)
return SCSI_MLQUEUE_DEVICE_BUSY;
@@ -712,7 +708,7 @@ static int uas_queuecommand_lck(struct scsi_cmnd *cmnd)
spin_unlock_irqrestore(&devinfo->lock, flags);
return SCSI_MLQUEUE_DEVICE_BUSY;
}
- uas_add_work(cmdinfo);
+ uas_add_work(cmnd);
}
devinfo->cmnd[idx] = cmnd;
@@ -730,7 +726,7 @@ static DEF_SCSI_QCMD(uas_queuecommand)
*/
static int uas_eh_abort_handler(struct scsi_cmnd *cmnd)
{
- struct uas_cmd_info *cmdinfo = (void *)&cmnd->SCp;
+ struct uas_cmd_info *cmdinfo = scsi_cmd_priv(cmnd);
struct uas_dev_info *devinfo = (void *)cmnd->device->hostdata;
struct urb *data_in_urb = NULL;
struct urb *data_out_urb = NULL;
@@ -910,6 +906,7 @@ static struct scsi_host_template uas_host_template = {
.this_id = -1,
.skip_settle_delay = 1,
.dma_boundary = PAGE_SIZE - 1,
+ .cmd_size = sizeof(struct uas_cmd_info),
};
#define UNUSUAL_DEV(id_vendor, id_product, bcdDeviceMin, bcdDeviceMax, \
next prev parent reply other threads:[~2022-02-16 21:04 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-16 21:01 [PATCH v4 00/50] Remove the SCSI pointer from struct scsi_cmnd Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 01/50] scsi: ips: Remove an unreachable statement Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 02/50] scsi: ips: Change the return type of ips_release() into 'void' Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 03/50] scsi: ips: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 04/50] scsi: nsp_cs: Change the return type of two functions into 'void' Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 05/50] scsi: nsp_cs: Use true and false instead of TRUE and FALSE Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 06/50] scsi: Remove drivers/scsi/scsi.h Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 07/50] scsi: NCR5380: Remove the NCR5380_CMD_SIZE macro Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 08/50] scsi: NCR5380: Introduce the NCR5380_cmd_priv() function Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 09/50] scsi: NCR5380: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 10/50] scsi: arm: Rename arm/scsi.h into arm/arm_scsi.h Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 11/50] scsi: arm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 12/50] scsi: 53c700: Stop clearing SCSI pointer fields Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 13/50] scsi: aacraid: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 14/50] scsi: advansys: " Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 15/50] scsi: aha1542: Remove a set-but-not-used array Bart Van Assche
2022-02-16 21:01 ` [PATCH v4 16/50] scsi: aha152x: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 17/50] scsi: bfa: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 18/50] scsi: csio: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 19/50] scsi: dc395x: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 20/50] scsi: esp_scsi: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 21/50] scsi: fdomain: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 22/50] scsi: fnic: Fix a tracing statement Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 23/50] scsi: fnic: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 24/50] scsi: hptiop: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 25/50] scsi: imm: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 26/50] scsi: iscsi: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 27/50] scsi: initio: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 28/50] scsi: libfc: " Bart Van Assche
2022-02-17 7:05 ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 29/50] scsi: bnx2fc: " Bart Van Assche
2022-02-17 7:06 ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 30/50] scsi: qedf: " Bart Van Assche
2022-02-17 7:06 ` Hannes Reinecke
2022-02-16 21:02 ` [PATCH v4 31/50] scsi: mac53c94: Fix a set-but-not-used compiler warning Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 32/50] scsi: mac53c94: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 33/50] scsi: megaraid: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 34/50] scsi: megasas: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 35/50] scsi: mesh: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 36/50] scsi: mvsas: Fix a set-but-not-used warning Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 37/50] scsi: mvumi: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 38/50] scsi: nsp32: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 39/50] scsi: nsp_cs: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 40/50] scsi: sym53c500_cs: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 41/50] scsi: ppa: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 42/50] scsi: qla1280: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 43/50] scsi: qla2xxx: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 44/50] scsi: smartpqi: " Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 45/50] scsi: sym53c8xx_2: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` Bart Van Assche [this message]
2022-02-16 21:02 ` [PATCH v4 47/50] scsi: wd719x: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 48/50] scsi: wd33c93: Move the SCSI pointer to private command data Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 49/50] scsi: zalon: Stop using the SCSI pointer Bart Van Assche
2022-02-16 21:02 ` [PATCH v4 50/50] scsi: core: Remove struct scsi_pointer from struct scsi_cmnd Bart Van Assche
2022-02-18 0:45 ` [PATCH v4 00/50] Remove the SCSI pointer " Finn Thain
2022-02-18 19:43 ` Bart Van Assche
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=20220216210233.28774-47-bvanassche@acm.org \
--to=bvanassche@acm.org \
--cc=gregkh@linuxfoundation.org \
--cc=hare@suse.de \
--cc=himanshu.madhani@oracle.com \
--cc=johannes.thumshirn@wdc.com \
--cc=linux-scsi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=oneukum@suse.com \
--cc=stern@rowland.harvard.edu \
/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