linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag
@ 2021-09-15  9:07 John Garry
  2021-09-15  9:07 ` [PATCH v2 1/3] fas216: kill scmd->tag John Garry
                   ` (3 more replies)
  0 siblings, 4 replies; 9+ messages in thread
From: John Garry @ 2021-09-15  9:07 UTC (permalink / raw)
  To: linux, jejb, martin.petersen, hare
  Cc: linux-arm-kernel, linux-scsi, linux-kernel, John Garry

This is v2 of Hannes' series to fix the build errors from removing
scsi_cmnd.tag. Here is the original cover letter:

"with commit 4c7b6ea336c1 ("scsi: core: Remove scsi_cmnd.tag") drivers
cannot reference the SCSI command tag anymore.
Arguably these drivers would have stopped working since 2010 with
the switch to block layer tags in SCSI anyway, so chances are no-one
had been using tagging in these drivers.

This patchset fixes up these usage; for fas216 we're just switching
to use the appropriate wrapper.
For acornscsi the tagged queue handling is removed altogether as it
was broken in the first place, and no-one since the switch to git
could be bothered to fix it.
And the patchset has the nice side-effect that we can remove the
scsi_device.current_tag field."

AFAIK, only the arm rpc_defconfig build was broken.

I dropped the scsi_cmd_to_tag() patch as it was not strictly necessary here
and there was some doubt on its need.

The "scsi: remove 'current_tag'" patch is not needed as a fix.

Baseline is v5.15-rc1

Hannes Reinecke (3):
  fas216: kill scmd->tag
  acornscsi: remove tagged queuing vestiges
  scsi: remove 'current_tag'

 drivers/scsi/arm/Kconfig     |  11 ----
 drivers/scsi/arm/acornscsi.c | 103 ++++++++---------------------------
 drivers/scsi/arm/fas216.c    |  31 +++--------
 drivers/scsi/arm/queue.c     |   2 +-
 include/scsi/scsi_device.h   |   1 -
 5 files changed, 31 insertions(+), 117 deletions(-)

-- 
2.26.2


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH v2 1/3] fas216: kill scmd->tag
  2021-09-15  9:07 [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag John Garry
@ 2021-09-15  9:07 ` John Garry
  2021-09-15  9:07 ` [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges John Garry
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: John Garry @ 2021-09-15  9:07 UTC (permalink / raw)
  To: linux, jejb, martin.petersen, hare
  Cc: linux-arm-kernel, linux-scsi, linux-kernel, John Garry

From: Hannes Reinecke <hare@suse.de>

The driver is attempting to allocated a tag internally, which is
is no-go with blk-mq. Switch the driver to use the request tag and
kill usage of scmd->tag and scmd->device->current_tag.

Signed-off-by: Hannes Reinecke <hare@suse.de>
jpg: Change to use scsi_cmd_to_rq()
Signed-off-by: John Garry <john.garry@huawei.com>
---
 drivers/scsi/arm/fas216.c | 31 ++++++++-----------------------
 1 file changed, 8 insertions(+), 23 deletions(-)

diff --git a/drivers/scsi/arm/fas216.c b/drivers/scsi/arm/fas216.c
index 9c4458a99025..cf71ef488e36 100644
--- a/drivers/scsi/arm/fas216.c
+++ b/drivers/scsi/arm/fas216.c
@@ -77,7 +77,6 @@
  *  I was thinking that this was a good chip until I found this restriction ;(
  */
 #define SCSI2_SYNC
-#undef  SCSI2_TAG
 
 #undef DEBUG_CONNECT
 #undef DEBUG_MESSAGES
@@ -990,7 +989,7 @@ fas216_reselected_intr(FAS216_Info *info)
 		info->scsi.disconnectable = 0;
 		if (info->SCpnt->device->id  == target &&
 		    info->SCpnt->device->lun == lun &&
-		    info->SCpnt->tag         == tag) {
+		    scsi_cmd_to_rq(info->SCpnt)->tag == tag) {
 			fas216_log(info, LOG_CONNECT, "reconnected previously executing command");
 		} else {
 			queue_add_cmd_tail(&info->queues.disconnected, info->SCpnt);
@@ -1791,8 +1790,9 @@ static void fas216_start_command(FAS216_Info *info, struct scsi_cmnd *SCpnt)
 	/*
 	 * add tag message if required
 	 */
-	if (SCpnt->tag)
-		msgqueue_addmsg(&info->scsi.msgs, 2, SIMPLE_QUEUE_TAG, SCpnt->tag);
+	if (SCpnt->device->simple_tags)
+		msgqueue_addmsg(&info->scsi.msgs, 2, SIMPLE_QUEUE_TAG,
+				scsi_cmd_to_rq(SCpnt)->tag);
 
 	do {
 #ifdef SCSI2_SYNC
@@ -1815,20 +1815,8 @@ static void fas216_start_command(FAS216_Info *info, struct scsi_cmnd *SCpnt)
 
 static void fas216_allocate_tag(FAS216_Info *info, struct scsi_cmnd *SCpnt)
 {
-#ifdef SCSI2_TAG
-	/*
-	 * tagged queuing - allocate a new tag to this command
-	 */
-	if (SCpnt->device->simple_tags && SCpnt->cmnd[0] != REQUEST_SENSE &&
-	    SCpnt->cmnd[0] != INQUIRY) {
-	    SCpnt->device->current_tag += 1;
-		if (SCpnt->device->current_tag == 0)
-		    SCpnt->device->current_tag = 1;
-			SCpnt->tag = SCpnt->device->current_tag;
-	} else
-#endif
-		set_bit(SCpnt->device->id * 8 +
-			(u8)(SCpnt->device->lun & 0x7), info->busyluns);
+	set_bit(SCpnt->device->id * 8 +
+		(u8)(SCpnt->device->lun & 0x7), info->busyluns);
 
 	info->stats.removes += 1;
 	switch (SCpnt->cmnd[0]) {
@@ -2117,7 +2105,6 @@ fas216_std_done(FAS216_Info *info, struct scsi_cmnd *SCpnt, unsigned int result)
 	init_SCp(SCpnt);
 	SCpnt->SCp.Message = 0;
 	SCpnt->SCp.Status = 0;
-	SCpnt->tag = 0;
 	SCpnt->host_scribble = (void *)fas216_rq_sns_done;
 
 	/*
@@ -2223,7 +2210,6 @@ static int fas216_queue_command_lck(struct scsi_cmnd *SCpnt,
 	init_SCp(SCpnt);
 
 	info->stats.queues += 1;
-	SCpnt->tag = 0;
 
 	spin_lock(&info->host_lock);
 
@@ -3003,9 +2989,8 @@ void fas216_print_devices(FAS216_Info *info, struct seq_file *m)
 		dev = &info->device[scd->id];
 		seq_printf(m, "     %d/%llu   ", scd->id, scd->lun);
 		if (scd->tagged_supported)
-			seq_printf(m, "%3sabled(%3d) ",
-				     scd->simple_tags ? "en" : "dis",
-				     scd->current_tag);
+			seq_printf(m, "%3sabled ",
+				     scd->simple_tags ? "en" : "dis");
 		else
 			seq_puts(m, "unsupported   ");
 
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges
  2021-09-15  9:07 [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag John Garry
  2021-09-15  9:07 ` [PATCH v2 1/3] fas216: kill scmd->tag John Garry
@ 2021-09-15  9:07 ` John Garry
  2021-09-30  7:21   ` Arnd Bergmann
  2021-09-15  9:07 ` [PATCH v2 3/3] scsi: remove 'current_tag' John Garry
  2021-09-22  4:44 ` [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag Martin K. Petersen
  3 siblings, 1 reply; 9+ messages in thread
From: John Garry @ 2021-09-15  9:07 UTC (permalink / raw)
  To: linux, jejb, martin.petersen, hare
  Cc: linux-arm-kernel, linux-scsi, linux-kernel, John Garry

From: Hannes Reinecke <hare@suse.de>

The acornscsi driver has a config option to enable tagged queuing,
but this option gets disabled in the driver itself with the comment
'needs to be debugged'.
As this is a _really_ old driver I doubt anyone will be wanting to
invest time here, so remove the tagged queue vestiges and make
our live easier.

Signed-off-by: Hannes Reinecke <hare@suse.de>
jpg: Use scsi_cmd_to_rq()
Signed-off-by: John Garry <john.garry@huawei.com>
---
 drivers/scsi/arm/Kconfig     |  11 ----
 drivers/scsi/arm/acornscsi.c | 103 ++++++++---------------------------
 drivers/scsi/arm/queue.c     |   2 +-
 3 files changed, 23 insertions(+), 93 deletions(-)

diff --git a/drivers/scsi/arm/Kconfig b/drivers/scsi/arm/Kconfig
index f34badc75196..9f64133f976a 100644
--- a/drivers/scsi/arm/Kconfig
+++ b/drivers/scsi/arm/Kconfig
@@ -10,17 +10,6 @@ config SCSI_ACORNSCSI_3
 	  This enables support for the Acorn SCSI card (aka30). If you have an
 	  Acorn system with one of these, say Y. If unsure, say N.
 
-config SCSI_ACORNSCSI_TAGGED_QUEUE
-	bool "Support SCSI 2 Tagged queueing"
-	depends on SCSI_ACORNSCSI_3
-	help
-	  Say Y here to enable tagged queuing support on the Acorn SCSI card.
-
-	  This is a feature of SCSI-2 which improves performance: the host
-	  adapter can send several SCSI commands to a device's queue even if
-	  previous commands haven't finished yet. Some SCSI devices don't
-	  implement this properly, so the safe answer is N.
-
 config SCSI_ACORNSCSI_SYNC
 	bool "Support SCSI 2 Synchronous Transfers"
 	depends on SCSI_ACORNSCSI_3
diff --git a/drivers/scsi/arm/acornscsi.c b/drivers/scsi/arm/acornscsi.c
index 4a84599ff491..b4cb5fb19998 100644
--- a/drivers/scsi/arm/acornscsi.c
+++ b/drivers/scsi/arm/acornscsi.c
@@ -52,12 +52,8 @@
  * You can tell if you have a device that supports tagged queueing my
  * cating (eg) /proc/scsi/acornscsi/0 and see if the SCSI revision is reported
  * as '2 TAG'.
- *
- * Also note that CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE is normally set in the config
- * scripts, but disabled here.  Once debugged, remove the #undef, otherwise to debug,
- * comment out the undef.
  */
-#undef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
+
 /*
  * SCSI-II Synchronous transfer support.
  *
@@ -171,7 +167,7 @@ static void acornscsi_done(AS_Host *host, struct scsi_cmnd **SCpntp,
 			   unsigned int result);
 static int acornscsi_reconnect_finish(AS_Host *host);
 static void acornscsi_dma_cleanup(AS_Host *host);
-static void acornscsi_abortcmd(AS_Host *host, unsigned char tag);
+static void acornscsi_abortcmd(AS_Host *host);
 
 /* ====================================================================================
  * Miscellaneous
@@ -741,17 +737,6 @@ intr_ret_t acornscsi_kick(AS_Host *host)
 #endif
 
     if (from_queue) {
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-	/*
-	 * tagged queueing - allocate a new tag to this command
-	 */
-	if (SCpnt->device->simple_tags) {
-	    SCpnt->device->current_tag += 1;
-	    if (SCpnt->device->current_tag == 0)
-		SCpnt->device->current_tag = 1;
-	    SCpnt->tag = SCpnt->device->current_tag;
-	} else
-#endif
 	    set_bit(SCpnt->device->id * 8 +
 		    (u8)(SCpnt->device->lun & 0x07), host->busyluns);
 
@@ -1192,7 +1177,7 @@ void acornscsi_dma_intr(AS_Host *host)
 	 * the device recognises the attention.
 	 */
 	if (dmac_read(host, DMAC_STATUS) & STATUS_RQ0) {
-	    acornscsi_abortcmd(host, host->SCpnt->tag);
+	    acornscsi_abortcmd(host);
 
 	    dmac_write(host, DMAC_TXCNTLO, 0);
 	    dmac_write(host, DMAC_TXCNTHI, 0);
@@ -1560,23 +1545,6 @@ void acornscsi_message(AS_Host *host)
 	    acornscsi_sbic_issuecmd(host, CMND_ASSERTATN);
 
 	switch (host->scsi.last_message) {
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-	case HEAD_OF_QUEUE_TAG:
-	case ORDERED_QUEUE_TAG:
-	case SIMPLE_QUEUE_TAG:
-	    /*
-	     * ANSI standard says: (Section SCSI-2 Rev. 10c Sect 5.6.17)
-	     *  If a target does not implement tagged queuing and a queue tag
-	     *  message is received, it shall respond with a MESSAGE REJECT
-	     *  message and accept the I/O process as if it were untagged.
-	     */
-	    printk(KERN_NOTICE "scsi%d.%c: disabling tagged queueing\n",
-		    host->host->host_no, acornscsi_target(host));
-	    host->SCpnt->device->simple_tags = 0;
-	    set_bit(host->SCpnt->device->id * 8 +
-		    (u8)(host->SCpnt->device->lun & 0x7), host->busyluns);
-	    break;
-#endif
 	case EXTENDED_MESSAGE | (EXTENDED_SDTR << 8):
 	    /*
 	     * Target can't handle synchronous transfers
@@ -1687,24 +1655,11 @@ void acornscsi_buildmessages(AS_Host *host)
 #if 0
     /* does the device need the current command aborted */
     if (cmd_aborted) {
-	acornscsi_abortcmd(host->SCpnt->tag);
+	acornscsi_abortcmd(host);
 	return;
     }
 #endif
 
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-    if (host->SCpnt->tag) {
-	unsigned int tag_type;
-
-	if (host->SCpnt->cmnd[0] == REQUEST_SENSE ||
-	    host->SCpnt->cmnd[0] == TEST_UNIT_READY ||
-	    host->SCpnt->cmnd[0] == INQUIRY)
-	    tag_type = HEAD_OF_QUEUE_TAG;
-	else
-	    tag_type = SIMPLE_QUEUE_TAG;
-	msgqueue_addmsg(&host->scsi.msgs, 2, tag_type, host->SCpnt->tag);
-    }
-#endif
 
 #ifdef CONFIG_SCSI_ACORNSCSI_SYNC
     if (host->device[host->SCpnt->device->id].sync_state == SYNC_NEGOCIATE) {
@@ -1798,7 +1753,7 @@ int acornscsi_reconnect(AS_Host *host)
 		"to reconnect with\n",
 		host->host->host_no, '0' + target);
 	acornscsi_dumplog(host, target);
-	acornscsi_abortcmd(host, 0);
+	acornscsi_abortcmd(host);
 	if (host->SCpnt) {
 	    queue_add_cmd_tail(&host->queues.disconnected, host->SCpnt);
 	    host->SCpnt = NULL;
@@ -1821,7 +1776,7 @@ int acornscsi_reconnect_finish(AS_Host *host)
 	host->scsi.disconnectable = 0;
 	if (host->SCpnt->device->id  == host->scsi.reconnected.target &&
 	    host->SCpnt->device->lun == host->scsi.reconnected.lun &&
-	    host->SCpnt->tag         == host->scsi.reconnected.tag) {
+	    scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
 #if (DEBUG & (DEBUG_QUEUES|DEBUG_DISCON))
 	    DBG(host->SCpnt, printk("scsi%d.%c: reconnected",
 		    host->host->host_no, acornscsi_target(host)));
@@ -1848,7 +1803,7 @@ int acornscsi_reconnect_finish(AS_Host *host)
     }
 
     if (!host->SCpnt)
-	acornscsi_abortcmd(host, host->scsi.reconnected.tag);
+	acornscsi_abortcmd(host);
     else {
 	/*
 	 * Restore data pointer from SAVED pointers.
@@ -1889,21 +1844,15 @@ void acornscsi_disconnect_unexpected(AS_Host *host)
  * Function: void acornscsi_abortcmd(AS_host *host, unsigned char tag)
  * Purpose : abort a currently executing command
  * Params  : host - host with connected command to abort
- *	     tag  - tag to abort
  */
 static
-void acornscsi_abortcmd(AS_Host *host, unsigned char tag)
+void acornscsi_abortcmd(AS_Host *host)
 {
     host->scsi.phase = PHASE_ABORTED;
     sbic_arm_write(host, SBIC_CMND, CMND_ASSERTATN);
 
     msgqueue_flush(&host->scsi.msgs);
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-    if (tag)
-	msgqueue_addmsg(&host->scsi.msgs, 2, ABORT_TAG, tag);
-    else
-#endif
-	msgqueue_addmsg(&host->scsi.msgs, 1, ABORT);
+    msgqueue_addmsg(&host->scsi.msgs, 1, ABORT);
 }
 
 /* ==========================================================================================
@@ -1993,7 +1942,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	    printk(KERN_ERR "scsi%d.%c: PHASE_CONNECTING, SSR %02X?\n",
 		    host->host->host_no, acornscsi_target(host), ssr);
 	    acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
-	    acornscsi_abortcmd(host, host->SCpnt->tag);
+	    acornscsi_abortcmd(host);
 	}
 	return INTR_PROCESSING;
 
@@ -2029,7 +1978,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	    printk(KERN_ERR "scsi%d.%c: PHASE_CONNECTED, SSR %02X?\n",
 		    host->host->host_no, acornscsi_target(host), ssr);
 	    acornscsi_dumplog(host, host->SCpnt ? host->SCpnt->device->id : 8);
-	    acornscsi_abortcmd(host, host->SCpnt->tag);
+	    acornscsi_abortcmd(host);
 	}
 	return INTR_PROCESSING;
 
@@ -2075,20 +2024,20 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	case 0x18:			/* -> PHASE_DATAOUT				*/
 	    /* COMMAND -> DATA OUT */
 	    if (host->scsi.SCp.sent_command != host->SCpnt->cmd_len)
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    acornscsi_dma_setup(host, DMA_OUT);
 	    if (!acornscsi_starttransfer(host))
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    host->scsi.phase = PHASE_DATAOUT;
 	    return INTR_IDLE;
 
 	case 0x19:			/* -> PHASE_DATAIN				*/
 	    /* COMMAND -> DATA IN */
 	    if (host->scsi.SCp.sent_command != host->SCpnt->cmd_len)
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    acornscsi_dma_setup(host, DMA_IN);
 	    if (!acornscsi_starttransfer(host))
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    host->scsi.phase = PHASE_DATAIN;
 	    return INTR_IDLE;
 
@@ -2156,7 +2105,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	    /* MESSAGE IN -> DATA OUT */
 	    acornscsi_dma_setup(host, DMA_OUT);
 	    if (!acornscsi_starttransfer(host))
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    host->scsi.phase = PHASE_DATAOUT;
 	    return INTR_IDLE;
 
@@ -2165,7 +2114,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	    /* MESSAGE IN -> DATA IN */
 	    acornscsi_dma_setup(host, DMA_IN);
 	    if (!acornscsi_starttransfer(host))
-		acornscsi_abortcmd(host, host->SCpnt->tag);
+		acornscsi_abortcmd(host);
 	    host->scsi.phase = PHASE_DATAIN;
 	    return INTR_IDLE;
 
@@ -2206,7 +2155,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	switch (ssr) {
 	case 0x19:			/* -> PHASE_DATAIN				*/
 	case 0x89:			/* -> PHASE_DATAIN				*/
-	    acornscsi_abortcmd(host, host->SCpnt->tag);
+	    acornscsi_abortcmd(host);
 	    return INTR_IDLE;
 
 	case 0x1b:			/* -> PHASE_STATUSIN				*/
@@ -2255,7 +2204,7 @@ intr_ret_t acornscsi_sbicintr(AS_Host *host, int in_irq)
 	switch (ssr) {
 	case 0x18:			/* -> PHASE_DATAOUT				*/
 	case 0x88:			/* -> PHASE_DATAOUT				*/
-	    acornscsi_abortcmd(host, host->SCpnt->tag);
+	    acornscsi_abortcmd(host);
 	    return INTR_IDLE;
 
 	case 0x1b:			/* -> PHASE_STATUSIN				*/
@@ -2482,7 +2431,6 @@ static int acornscsi_queuecmd_lck(struct scsi_cmnd *SCpnt,
     SCpnt->scsi_done = done;
     SCpnt->host_scribble = NULL;
     SCpnt->result = 0;
-    SCpnt->tag = 0;
     SCpnt->SCp.phase = (int)acornscsi_datadirection(SCpnt->cmnd[0]);
     SCpnt->SCp.sent_command = 0;
     SCpnt->SCp.scsi_xferred = 0;
@@ -2581,7 +2529,7 @@ static enum res_abort acornscsi_do_abort(AS_Host *host, struct scsi_cmnd *SCpnt)
 			break;
 
 		default:
-			acornscsi_abortcmd(host, host->SCpnt->tag);
+			acornscsi_abortcmd(host);
 			res = res_snooze;
 		}
 		local_irq_restore(flags);
@@ -2747,9 +2695,6 @@ char *acornscsi_info(struct Scsi_Host *host)
 #ifdef CONFIG_SCSI_ACORNSCSI_SYNC
     " SYNC"
 #endif
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-    " TAG"
-#endif
 #if (DEBUG & DEBUG_NO_WRITE)
     " NOWRITE (" __stringify(NO_WRITE) ")"
 #endif
@@ -2770,9 +2715,6 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
 #ifdef CONFIG_SCSI_ACORNSCSI_SYNC
     " SYNC"
 #endif
-#ifdef CONFIG_SCSI_ACORNSCSI_TAGGED_QUEUE
-    " TAG"
-#endif
 #if (DEBUG & DEBUG_NO_WRITE)
     " NOWRITE (" __stringify(NO_WRITE) ")"
 #endif
@@ -2827,9 +2769,8 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
 	seq_printf(m, "Device/Lun TaggedQ      Sync\n");
 	seq_printf(m, "     %d/%llu   ", scd->id, scd->lun);
 	if (scd->tagged_supported)
-		seq_printf(m, "%3sabled(%3d) ",
-			     scd->simple_tags ? "en" : "dis",
-			     scd->current_tag);
+		seq_printf(m, "%3sabled ",
+			     scd->simple_tags ? "en" : "dis");
 	else
 		seq_printf(m, "unsupported  ");
 
diff --git a/drivers/scsi/arm/queue.c b/drivers/scsi/arm/queue.c
index e5559f27669d..c6f71a7d1b8e 100644
--- a/drivers/scsi/arm/queue.c
+++ b/drivers/scsi/arm/queue.c
@@ -214,7 +214,7 @@ struct scsi_cmnd *queue_remove_tgtluntag(Queue_t *queue, int target, int lun,
 	list_for_each(l, &queue->head) {
 		QE_t *q = list_entry(l, QE_t, list);
 		if (q->SCpnt->device->id == target && q->SCpnt->device->lun == lun &&
-		    q->SCpnt->tag == tag) {
+		    scsi_cmd_to_rq(q->SCpnt)->tag == tag) {
 			SCpnt = __queue_remove(queue, l);
 			break;
 		}
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 3/3] scsi: remove 'current_tag'
  2021-09-15  9:07 [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag John Garry
  2021-09-15  9:07 ` [PATCH v2 1/3] fas216: kill scmd->tag John Garry
  2021-09-15  9:07 ` [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges John Garry
@ 2021-09-15  9:07 ` John Garry
  2021-09-16  2:52   ` Bart Van Assche
  2021-09-22  4:44 ` [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag Martin K. Petersen
  3 siblings, 1 reply; 9+ messages in thread
From: John Garry @ 2021-09-15  9:07 UTC (permalink / raw)
  To: linux, jejb, martin.petersen, hare
  Cc: linux-arm-kernel, linux-scsi, linux-kernel, John Garry

From: Hannes Reinecke <hare@suse.de>

The 'current_tag' field in struct scsi_device is unused now; remove it.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: John Garry <john.garry@huawei.com>
---
 include/scsi/scsi_device.h | 1 -
 1 file changed, 1 deletion(-)

diff --git a/include/scsi/scsi_device.h b/include/scsi/scsi_device.h
index 09a17f6e93a7..b97e142a7ca9 100644
--- a/include/scsi/scsi_device.h
+++ b/include/scsi/scsi_device.h
@@ -146,7 +146,6 @@ struct scsi_device {
 	struct scsi_vpd __rcu *vpd_pg83;
 	struct scsi_vpd __rcu *vpd_pg80;
 	struct scsi_vpd __rcu *vpd_pg89;
-	unsigned char current_tag;	/* current tag */
 	struct scsi_target      *sdev_target;
 
 	blist_flags_t		sdev_bflags; /* black/white flags as also found in
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 3/3] scsi: remove 'current_tag'
  2021-09-15  9:07 ` [PATCH v2 3/3] scsi: remove 'current_tag' John Garry
@ 2021-09-16  2:52   ` Bart Van Assche
  0 siblings, 0 replies; 9+ messages in thread
From: Bart Van Assche @ 2021-09-16  2:52 UTC (permalink / raw)
  To: John Garry, linux, jejb, martin.petersen, hare
  Cc: linux-arm-kernel, linux-scsi, linux-kernel

On 9/15/21 02:07, John Garry wrote:
> From: Hannes Reinecke <hare@suse.de>
> 
> The 'current_tag' field in struct scsi_device is unused now; remove it.

Reviewed-by: Bart Van Assche <bvanassche@acm.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag
  2021-09-15  9:07 [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag John Garry
                   ` (2 preceding siblings ...)
  2021-09-15  9:07 ` [PATCH v2 3/3] scsi: remove 'current_tag' John Garry
@ 2021-09-22  4:44 ` Martin K. Petersen
  3 siblings, 0 replies; 9+ messages in thread
From: Martin K. Petersen @ 2021-09-22  4:44 UTC (permalink / raw)
  To: linux, John Garry, hare, jejb
  Cc: Martin K . Petersen, linux-kernel, linux-scsi, linux-arm-kernel

On Wed, 15 Sep 2021 17:07:12 +0800, John Garry wrote:

> This is v2 of Hannes' series to fix the build errors from removing
> scsi_cmnd.tag. Here is the original cover letter:
> 
> "with commit 4c7b6ea336c1 ("scsi: core: Remove scsi_cmnd.tag") drivers
> cannot reference the SCSI command tag anymore.
> Arguably these drivers would have stopped working since 2010 with
> the switch to block layer tags in SCSI anyway, so chances are no-one
> had been using tagging in these drivers.
> 
> [...]

Applied to 5.15/scsi-fixes, thanks!

[1/3] fas216: kill scmd->tag
      https://git.kernel.org/mkp/scsi/c/bc41fcbffd57
[2/3] acornscsi: remove tagged queuing vestiges
      https://git.kernel.org/mkp/scsi/c/756fb6a895af
[3/3] scsi: remove 'current_tag'
      https://git.kernel.org/mkp/scsi/c/a4869faf9642

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges
  2021-09-15  9:07 ` [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges John Garry
@ 2021-09-30  7:21   ` Arnd Bergmann
  2021-09-30  8:17     ` John Garry
  2021-10-12 23:45     ` Bart Van Assche
  0 siblings, 2 replies; 9+ messages in thread
From: Arnd Bergmann @ 2021-09-30  7:21 UTC (permalink / raw)
  To: John Garry
  Cc: Russell King - ARM Linux, James E.J. Bottomley,
	Martin K. Petersen, Hannes Reinecke, Linux ARM, linux-scsi,
	Linux Kernel Mailing List

On Wed, Sep 15, 2021 at 11:16 AM John Garry <john.garry@huawei.com> wrote:
>
> From: Hannes Reinecke <hare@suse.de>
>
> The acornscsi driver has a config option to enable tagged queuing,
> but this option gets disabled in the driver itself with the comment
> 'needs to be debugged'.
> As this is a _really_ old driver I doubt anyone will be wanting to
> invest time here, so remove the tagged queue vestiges and make
> our live easier.
>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> jpg: Use scsi_cmd_to_rq()
> Signed-off-by: John Garry <john.garry@huawei.com>

A few thousand randconfig builds later, I actually came across
building this driver.

> @@ -1821,7 +1776,7 @@ int acornscsi_reconnect_finish(AS_Host *host)
>         host->scsi.disconnectable = 0;
>         if (host->SCpnt->device->id  == host->scsi.reconnected.target &&
>             host->SCpnt->device->lun == host->scsi.reconnected.lun &&
> -           host->SCpnt->tag         == host->scsi.reconnected.tag) {
> +           scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
>  #if (DEBUG & (DEBUG_QUEUES|DEBUG_DISCON))
>             DBG(host->SCpnt, printk("scsi%d.%c: reconnected",
>                     host->host->host_no, acornscsi_target(host)));

drivers/scsi/arm/acornscsi.c: In function 'acornscsi_reconnect_finish':
drivers/scsi/arm/acornscsi.c:1779:6: error: implicit declaration of
function 'scsi_cmd_to_tag'; did you mean 'scsi_cmd_to_rq'?
[-Werror=implicit-function-declaration]
      scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
      ^~~~~~~~~~~~~~~
      scsi_cmd_to_rq

I have no idea what this is meant to do instead, but scsi_cmd_to_tag()
does not appear to be defined in any kernel I can find.

       Arnd

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges
  2021-09-30  7:21   ` Arnd Bergmann
@ 2021-09-30  8:17     ` John Garry
  2021-10-12 23:45     ` Bart Van Assche
  1 sibling, 0 replies; 9+ messages in thread
From: John Garry @ 2021-09-30  8:17 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Russell King - ARM Linux, James E.J. Bottomley,
	Martin K. Petersen, Hannes Reinecke, Linux ARM, linux-scsi,
	Linux Kernel Mailing List

On 30/09/2021 08:21, Arnd Bergmann wrote:
> On Wed, Sep 15, 2021 at 11:16 AM John Garry<john.garry@huawei.com>  wrote:
>> From: Hannes Reinecke<hare@suse.de>
>>
>> The acornscsi driver has a config option to enable tagged queuing,
>> but this option gets disabled in the driver itself with the comment
>> 'needs to be debugged'.
>> As this is a_really_  old driver I doubt anyone will be wanting to
>> invest time here, so remove the tagged queue vestiges and make
>> our live easier.
>>
>> Signed-off-by: Hannes Reinecke<hare@suse.de>
>> jpg: Use scsi_cmd_to_rq()
>> Signed-off-by: John Garry<john.garry@huawei.com>
> A few thousand randconfig builds later, I actually came across
> building this driver.
> 
>> @@ -1821,7 +1776,7 @@ int acornscsi_reconnect_finish(AS_Host *host)
>>          host->scsi.disconnectable = 0;
>>          if (host->SCpnt->device->id  == host->scsi.reconnected.target &&
>>              host->SCpnt->device->lun == host->scsi.reconnected.lun &&
>> -           host->SCpnt->tag         == host->scsi.reconnected.tag) {
>> +           scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
>>   #if (DEBUG & (DEBUG_QUEUES|DEBUG_DISCON))
>>              DBG(host->SCpnt, printk("scsi%d.%c: reconnected",
>>                      host->host->host_no, acornscsi_target(host)));
> drivers/scsi/arm/acornscsi.c: In function 'acornscsi_reconnect_finish':
> drivers/scsi/arm/acornscsi.c:1779:6: error: implicit declaration of
> function 'scsi_cmd_to_tag'; did you mean 'scsi_cmd_to_rq'?
> [-Werror=implicit-function-declaration]
>        scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
>        ^~~~~~~~~~~~~~~
>        scsi_cmd_to_rq
> 
> I have no idea what this is meant to do instead, but scsi_cmd_to_tag()
> does not appear to be defined in any kernel I can find.

Hannes added new function scsi_cmd_to_tag() in v1 series, but I removed 
it when I reposted the v2 series. But then missed this reference.

I think the build fix should be as follows:

--- a/drivers/scsi/arm/acornscsi.c
+++ b/drivers/scsi/arm/acornscsi.c
@@ -1776,7 +1776,7 @@ int acornscsi_reconnect_finish(AS_Host *host)
        host->scsi.disconnectable = 0;
        if (host->SCpnt->device->id  == host->scsi.reconnected.target &&
            host->SCpnt->device->lun == host->scsi.reconnected.lun &&
-           scsi_cmd_to_tag(host->SCpnt) == host->scsi.reconnected.tag) {
+           scsi_cmd_to_rq(host->SCpnt)->tag == 
host->scsi.reconnected.tag) {

Let me know if you want us to post a patch for this.

Thanks,
John



^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges
  2021-09-30  7:21   ` Arnd Bergmann
  2021-09-30  8:17     ` John Garry
@ 2021-10-12 23:45     ` Bart Van Assche
  1 sibling, 0 replies; 9+ messages in thread
From: Bart Van Assche @ 2021-10-12 23:45 UTC (permalink / raw)
  To: Arnd Bergmann, John Garry
  Cc: Russell King - ARM Linux, James E.J. Bottomley,
	Martin K. Petersen, Hannes Reinecke, Linux ARM, linux-scsi,
	Linux Kernel Mailing List

On 9/30/21 12:21 AM, Arnd Bergmann wrote:
> On Wed, Sep 15, 2021 at 11:16 AM John Garry <john.garry@huawei.com> wrote:
>>
>> From: Hannes Reinecke <hare@suse.de>
>>
>> The acornscsi driver has a config option to enable tagged queuing,
>> but this option gets disabled in the driver itself with the comment
>> 'needs to be debugged'.
>> As this is a _really_ old driver I doubt anyone will be wanting to
>> invest time here, so remove the tagged queue vestiges and make
>> our live easier.
>>
>> Signed-off-by: Hannes Reinecke <hare@suse.de>
>> jpg: Use scsi_cmd_to_rq()
>> Signed-off-by: John Garry <john.garry@huawei.com>
> 
> A few thousand randconfig builds later, I actually came across
> building this driver.

Building all SCSI code is nontrivial. The shell script that I am using 
myself to build all SCSI kernel code is available here: 
https://github.com/bvanassche/build-scsi-drivers

Bart.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2021-10-12 23:45 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-15  9:07 [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag John Garry
2021-09-15  9:07 ` [PATCH v2 1/3] fas216: kill scmd->tag John Garry
2021-09-15  9:07 ` [PATCH v2 2/3] acornscsi: remove tagged queuing vestiges John Garry
2021-09-30  7:21   ` Arnd Bergmann
2021-09-30  8:17     ` John Garry
2021-10-12 23:45     ` Bart Van Assche
2021-09-15  9:07 ` [PATCH v2 3/3] scsi: remove 'current_tag' John Garry
2021-09-16  2:52   ` Bart Van Assche
2021-09-22  4:44 ` [PATCH v2 0/3] scsi: remove last references to scsi_cmnd.tag Martin K. Petersen

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).