linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: "Russell King (Oracle)" <linux@armlinux.org.uk>
Cc: "Martin K . Petersen" <martin.petersen@oracle.com>,
	linux-scsi@vger.kernel.org,
	"James E.J. Bottomley" <jejb@linux.ibm.com>
Subject: Re: [PATCH 33/84] fas216: Call scsi_done() directly
Date: Sat, 18 Sep 2021 19:25:58 -0700	[thread overview]
Message-ID: <9f68887b-e499-ec29-9ebe-207c6c515cd3@acm.org> (raw)
In-Reply-To: <YUUx47L7W9qGGOwz@shell.armlinux.org.uk>

On 9/17/21 17:25, Russell King (Oracle) wrote:
> NAK. I don't think you've bothered to read the driver code to check
> that your change is safe to make.
> 
> SCpnt->scsi_done is not always "scsi_done" but may also be
> fas216_internal_done().

Thanks for the quick feedback. How about replacing this patch by the
two patches below?

[PATCH 1/2] fas216: Introduce struct fas216_cmd_priv

Introduce a structure with driver-private data per SCSI command. This data
structure will be used by the next patch to store a function pointer.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
  drivers/scsi/arm/arxescsi.c |  1 +
  drivers/scsi/arm/cumana_2.c |  1 +
  drivers/scsi/arm/eesox.c    |  1 +
  drivers/scsi/arm/fas216.h   | 10 ++++++++++
  drivers/scsi/arm/powertec.c |  2 +-
  5 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/arm/arxescsi.c b/drivers/scsi/arm/arxescsi.c
index 591414120754..7f667c198f6d 100644
--- a/drivers/scsi/arm/arxescsi.c
+++ b/drivers/scsi/arm/arxescsi.c
@@ -243,6 +243,7 @@ static struct scsi_host_template arxescsi_template = {
  	.eh_bus_reset_handler		= fas216_eh_bus_reset,
  	.eh_device_reset_handler	= fas216_eh_device_reset,
  	.eh_abort_handler		= fas216_eh_abort,
+	.cmd_size			= sizeof(struct fas216_cmd_priv),
  	.can_queue			= 0,
  	.this_id			= 7,
  	.sg_tablesize			= SG_ALL,
diff --git a/drivers/scsi/arm/cumana_2.c b/drivers/scsi/arm/cumana_2.c
index 9dcd912267e6..3c00d7773876 100644
--- a/drivers/scsi/arm/cumana_2.c
+++ b/drivers/scsi/arm/cumana_2.c
@@ -363,6 +363,7 @@ static struct scsi_host_template cumanascsi2_template = {
  	.eh_bus_reset_handler		= fas216_eh_bus_reset,
  	.eh_device_reset_handler	= fas216_eh_device_reset,
  	.eh_abort_handler		= fas216_eh_abort,
+	.cmd_size			= sizeof(struct fas216_cmd_priv),
  	.can_queue			= 1,
  	.this_id			= 7,
  	.sg_tablesize			= SG_MAX_SEGMENTS,
diff --git a/drivers/scsi/arm/eesox.c b/drivers/scsi/arm/eesox.c
index 5eb2415dda9d..1394590eecea 100644
--- a/drivers/scsi/arm/eesox.c
+++ b/drivers/scsi/arm/eesox.c
@@ -480,6 +480,7 @@ static struct scsi_host_template eesox_template = {
  	.eh_bus_reset_handler		= fas216_eh_bus_reset,
  	.eh_device_reset_handler	= fas216_eh_device_reset,
  	.eh_abort_handler		= fas216_eh_abort,
+	.cmd_size			= sizeof(struct fas216_cmd_priv),
  	.can_queue			= 1,
  	.this_id			= 7,
  	.sg_tablesize			= SG_MAX_SEGMENTS,
diff --git a/drivers/scsi/arm/fas216.h b/drivers/scsi/arm/fas216.h
index 847413ce14cf..abf960487314 100644
--- a/drivers/scsi/arm/fas216.h
+++ b/drivers/scsi/arm/fas216.h
@@ -310,6 +310,16 @@ typedef struct {
  	unsigned long		magic_end;
  } FAS216_Info;

+/* driver-private data per SCSI command. */
+struct fas216_cmd_priv {
+	void (*scsi_done)(struct scsi_cmnd *cmd);
+};
+
+static inline struct fas216_cmd_priv *fas216_cmd_priv(struct scsi_cmnd *cmd)
+{
+	return scsi_cmd_priv(cmd);
+}
+
  /* Function: int fas216_init (struct Scsi_Host *instance)
   * Purpose : initialise FAS/NCR/AMD SCSI structures.
   * Params  : instance - a driver-specific filled-out structure
diff --git a/drivers/scsi/arm/powertec.c b/drivers/scsi/arm/powertec.c
index 9cc73da4e876..8fec435cee18 100644
--- a/drivers/scsi/arm/powertec.c
+++ b/drivers/scsi/arm/powertec.c
@@ -286,7 +286,7 @@ static struct scsi_host_template powertecscsi_template = {
  	.eh_bus_reset_handler		= fas216_eh_bus_reset,
  	.eh_device_reset_handler	= fas216_eh_device_reset,
  	.eh_abort_handler		= fas216_eh_abort,
-
+	.cmd_size			= sizeof(struct fas216_cmd_priv),
  	.can_queue			= 8,
  	.this_id			= 7,
  	.sg_tablesize			= SG_MAX_SEGMENTS,






[PATCH 2/2] fas216: Stop using scsi_cmnd.scsi_done

Store the completion callback pointer in struct fas216_cmd_priv instead of in
struct scsi_cmnd. This patch prepares for removal of the scsi_done member
from struct scsi_cmnd.

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
---
  drivers/scsi/arm/fas216.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c
index bbb8635782b1..9926383f79ea 100644
--- a/drivers/scsi/arm/fas216.c
+++ b/drivers/scsi/arm/fas216.c
@@ -2017,7 +2017,7 @@ static void fas216_rq_sns_done(FAS216_Info *info, struct scsi_cmnd *SCpnt,
  	 * correctly by fas216_std_done.
  	 */
  	scsi_eh_restore_cmnd(SCpnt, &info->ses);
-	SCpnt->scsi_done(SCpnt);
+	fas216_cmd_priv(SCpnt)->scsi_done(SCpnt);
  }

  /**
@@ -2088,8 +2088,8 @@ fas216_std_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, unsigned int result)
  	}

  done:
-	if (SCpnt->scsi_done) {
-		SCpnt->scsi_done(SCpnt);
+	if (fas216_cmd_priv(SCpnt)->scsi_done) {
+		fas216_cmd_priv(SCpnt)->scsi_done(SCpnt);
  		return;
  	}

@@ -2205,7 +2205,7 @@ static int fas216_queue_command_lck(struct scsi_cmnd *SCpnt,
  	fas216_log_command(info, LOG_CONNECT, SCpnt,
  			   "received command (%p)", SCpnt);

-	SCpnt->scsi_done = done;
+	fas216_cmd_priv(SCpnt)->scsi_done = done;
  	SCpnt->host_scribble = (void *)fas216_std_done;
  	SCpnt->result = 0;


  reply	other threads:[~2021-09-19  2:26 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-18  0:04 [PATCH 00/84] Call scsi_done() directly Bart Van Assche
2021-09-18  0:04 ` [PATCH 01/84] scsi: core: Use a member variable to track the SCSI command submitter Bart Van Assche
2021-09-24  9:36   ` Benjamin Block
2021-09-25  3:38     ` Bart Van Assche
2021-09-27 19:55       ` Benjamin Block
2021-09-28 16:54   ` Benjamin Block
2021-09-28 18:51     ` Bart Van Assche
2021-09-18  0:04 ` [PATCH 02/84] scsi: core: Rename scsi_mq_done() into scsi_done() and export it Bart Van Assche
2021-09-20  9:42   ` John Garry
2021-09-20 16:28     ` Bart Van Assche
2021-09-20 16:47       ` John Garry
2021-09-28 16:57   ` Benjamin Block
2021-09-18  0:04 ` [PATCH 03/84] scsi: core: Call scsi_done directly Bart Van Assche
2021-09-28 16:59   ` Benjamin Block
2021-09-18  0:04 ` [PATCH 04/84] ata: Call scsi_done() directly Bart Van Assche
2021-09-21  1:02   ` Damien Le Moal
2021-09-18  0:04 ` [PATCH 05/84] firewire: sbp2: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 06/84] ib_srp: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 07/84] message: fusion: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 08/84] zfcp_scsi: " Bart Van Assche
2021-09-28 17:01   ` Benjamin Block
2021-09-18  0:04 ` [PATCH 09/84] 3w-9xxx: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 10/84] 3w-sas: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 11/84] 3w-xxxx: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 12/84] 53c700: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 13/84] BusLogic: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 14/84] NCR5380: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 15/84] a100u2w: " Bart Van Assche
2021-09-18  0:04 ` [PATCH 16/84] aacraid: Introduce aac_scsi_done() Bart Van Assche
2021-09-18  0:05 ` [PATCH 17/84] aacraid: Call scsi_done() directly Bart Van Assche
2021-09-18  0:05 ` [PATCH 18/84] acornscsi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 19/84] advansys: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 20/84] aha152x: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 21/84] aha1542: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 22/84] aic7xxx: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 23/84] arcmsr: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 24/84] atp870u: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 25/84] bfa: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 26/84] bnx2fc: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 27/84] csiostor: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 28/84] cxlflash: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 29/84] dc395x: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 30/84] dpt_i2o: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 31/84] esas2r: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 32/84] esp_scsi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 33/84] fas216: " Bart Van Assche
2021-09-18  0:25   ` Russell King (Oracle)
2021-09-19  2:25     ` Bart Van Assche [this message]
2021-09-18  0:05 ` [PATCH 34/84] fdomain: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 35/84] fnic: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 36/84] hpsa: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 37/84] hptiop: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 38/84] ibmvscsi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 39/84] imm: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 40/84] initio: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 41/84] ipr: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 42/84] ips: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 43/84] libfc: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 44/84] libiscsi: " Bart Van Assche
2021-09-18 18:34   ` Lee Duncan
2021-09-18  0:05 ` [PATCH 45/84] libsas: " Bart Van Assche
2021-09-22 17:26   ` John Garry
2021-09-18  0:05 ` [PATCH 46/84] lpfc: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 47/84] mac53c94: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 48/84] megaraid: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 49/84] " Bart Van Assche
2021-09-18  0:05 ` [PATCH 50/84] mesh: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 51/84] mpi3mr: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 52/84] mpt3sas: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 53/84] mvumi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 54/84] myrb: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 55/84] myrs: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 56/84] ncr53c8xx: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 57/84] nsp32: " Bart Van Assche
2021-09-18  1:10   ` Masanori Goto
2021-09-18  3:08     ` Bart Van Assche
2021-09-18  0:05 ` [PATCH 58/84] pcmcia: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 59/84] pmcraid: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 60/84] ppa: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 61/84] ps3rom: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 62/84] qedf: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 63/84] qla1280: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 64/84] qla2xxx: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 65/84] qla4xxx: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 66/84] qlogicfas408: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 67/84] qlogicpti: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 68/84] scsi_debug: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 69/84] smartpqi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 70/84] snic: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 71/84] stex: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 72/84] storvsc_drv: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 73/84] sym53c8xx_2: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 74/84] ufs: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 75/84] virtio_scsi: " Bart Van Assche
2021-09-18  0:05 ` [PATCH 76/84] vmw_pvscsi: " Bart Van Assche
2021-09-18  0:06 ` [PATCH 77/84] wd33c93: " Bart Van Assche
2021-09-18  0:06 ` [PATCH 78/84] wd719x: " Bart Van Assche
2021-09-22 16:25 ` [PATCH 79/84] xen-scsifront: " Bart Van Assche
2021-09-22 16:25   ` [PATCH 80/84] staging: rts5208: " Bart Van Assche
2021-09-23  6:49     ` Greg Kroah-Hartman
2021-09-22 16:25   ` [PATCH 81/84] staging: unisys: visorhba: " Bart Van Assche
2021-09-22 16:26   ` [PATCH 82/84] target/tcm_loop: " Bart Van Assche
2021-09-22 16:26   ` [PATCH 83/84] usb: " Bart Van Assche
2021-09-22 16:26   ` [PATCH 84/84] scsi_lib: " Bart Van Assche
2021-09-28 17:04     ` Benjamin Block
2021-09-23  8:15   ` [PATCH 79/84] xen-scsifront: " Juergen Gross

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=9f68887b-e499-ec29-9ebe-207c6c515cd3@acm.org \
    --to=bvanassche@acm.org \
    --cc=jejb@linux.ibm.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=martin.petersen@oracle.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;
as well as URLs for NNTP newsgroup(s).