Linux SCSI subsystem development
 help / color / mirror / Atom feed
From: Khalid Aziz <khalid@gonehiking.org>
To: Bart Van Assche <bvanassche@acm.org>
Cc: "Martin K . Petersen" <martin.petersen@oracle.com>,
	linux-scsi@vger.kernel.org,
	"James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>,
	"Martin K. Petersen" <mkp@kernel.org>
Subject: Re: [PATCH v4 04/54] scsi: BusLogic: Pass the host pointer directly to several functions
Date: Sat, 26 Sep 2026 14:02:36 -0600	[thread overview]
Message-ID: <argk3DLMl_YSDOsV@gonehiking.org> (raw)
In-Reply-To: <09e99ec9c6fa24ee5fe3c47110c88a1be076e01a.1790360262.git.bvanassche@acm.org>

On Fri, Sep 25, 2026 at 11:25:42AM -0700, Bart Van Assche wrote:
> Pass the struct Scsi_Host pointer directly to multiple functions. This
> prepares the BusLogic driver for enabling compiler-based lock context
> analysis. No functionality has been changed.
> 
> Cc: Khalid Aziz <khalid@gonehiking.org>
> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
> ---
>  drivers/scsi/BusLogic.c | 93 +++++++++++++++++++++++------------------
>  drivers/scsi/BusLogic.h |  2 +-
>  2 files changed, 54 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
> index 27b446c0c5d0..75aaf35383a9 100644
> --- a/drivers/scsi/BusLogic.c
> +++ b/drivers/scsi/BusLogic.c
..... snip.....
>  
> @@ -2878,11 +2883,11 @@ static int blogic_hostreset(struct scsi_cmnd *SCpnt)
>    Outgoing Mailbox for execution by the associated Host Adapter.
>  */
>  
> -static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
> +static enum scsi_qc_status blogic_qcmd_lck(struct Scsi_Host *shost, struct scsi_cmnd *command)

Buslogic.c defines blogic_qcmd() usind "DEF_SCSI_QCMD(blogic_qcmd)" which in turn will call
blogic_qcmd_lck() with just struct *scsi_cmd as a single parameter as defined in 
include/scsi/scsi_host.h. I did not see an update to DEF_SCSI_QCMD in patches 1-3. With this
change, callers are not being updated and that will not work. Can you double check this?

Thanks,
Khalid

>  {
>  	void (*comp_cb)(struct scsi_cmnd *) = scsi_done;
>  	struct blogic_adapter *adapter =
> -		(struct blogic_adapter *) command->device->host->hostdata;
> +		(struct blogic_adapter *) shost->hostdata;
>  	struct blogic_tgt_flags *tgt_flags =
>  		&adapter->tgt_flags[command->device->id];
>  	struct blogic_tgt_stats *tgt_stats = adapter->tgt_stats;
> @@ -2913,12 +2918,12 @@ static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
>  	   probably hung so signal an error as a Host Adapter Hard Reset
>  	   should be initiated soon.
>  	 */
> -	ccb = blogic_alloc_ccb(adapter);
> +	ccb = blogic_alloc_ccb(shost);
>  	if (ccb == NULL) {
> -		spin_unlock_irq(&adapter->scsi_host->host_lock);
> +		spin_unlock_irq(&shost->host_lock);
>  		blogic_delay(1);
> -		spin_lock_irq(&adapter->scsi_host->host_lock);
> -		ccb = blogic_alloc_ccb(adapter);
> +		spin_lock_irq(&shost->host_lock);
> +		ccb = blogic_alloc_ccb(shost);
>  		if (ccb == NULL) {
>  			command->result = DID_ERROR << 16;
>  			comp_cb(command);
> @@ -3046,7 +3051,7 @@ static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
>  	if (dma_mapping_error(&adapter->pci_device->dev, sense_buf)) {
>  		blogic_err("DMA mapping for sense data buffer failed\n",
>  				adapter);
> -		blogic_dealloc_ccb(ccb, 0);
> +		blogic_dealloc_ccb(shost, ccb, 0);
>  		return SCSI_MLQUEUE_HOST_BUSY;
>  	}
>  	ccb->sensedata = sense_buf;
> @@ -3061,15 +3066,15 @@ static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
>  		   so signal an error as a Host Adapter Hard Reset should
>  		   be initiated soon.
>  		 */
> -		if (!blogic_write_outbox(adapter, BLOGIC_MBOX_START, ccb)) {
> -			spin_unlock_irq(&adapter->scsi_host->host_lock);
> +		if (!blogic_write_outbox(shost, BLOGIC_MBOX_START, ccb)) {
> +			spin_unlock_irq(&shost->host_lock);
>  			blogic_warn("Unable to write Outgoing Mailbox - Pausing for 1 second\n", adapter);
>  			blogic_delay(1);
> -			spin_lock_irq(&adapter->scsi_host->host_lock);
> -			if (!blogic_write_outbox(adapter, BLOGIC_MBOX_START,
> +			spin_lock_irq(&shost->host_lock);
> +			if (!blogic_write_outbox(shost, BLOGIC_MBOX_START,
>  						ccb)) {
>  				blogic_warn("Still unable to write Outgoing Mailbox - Host Adapter Dead?\n", adapter);
> -				blogic_dealloc_ccb(ccb, 1);
> +				blogic_dealloc_ccb(shost, ccb, 1);
>  				command->result = DID_ERROR << 16;
>  				scsi_done(command);
>  			}
> @@ -3089,12 +3094,20 @@ static enum scsi_qc_status blogic_qcmd_lck(struct scsi_cmnd *command)
>  		   pending.
>  		 */
>  		if (ccb->status == BLOGIC_CCB_COMPLETE)
> -			blogic_process_ccbs(adapter);
> +			blogic_process_ccbs(shost);
>  	}
>  	return 0;
>  }
>  
> -static DEF_SCSI_QCMD(blogic_qcmd)
> +static enum scsi_qc_status blogic_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *cmd)
> +{
> +	enum scsi_qc_status rc;
> +
> +	spin_lock_irq(&shost->host_lock);
> +	rc = blogic_qcmd_lck(shost, cmd);
> +	spin_unlock_irq(&shost->host_lock);
> +	return rc;
> +}
>  
>  #if 0
>  /*
> @@ -3103,9 +3116,8 @@ static DEF_SCSI_QCMD(blogic_qcmd)
>  
>  static int blogic_abort(struct scsi_cmnd *command)
>  {
> -	struct blogic_adapter *adapter =
> -		(struct blogic_adapter *) command->device->host->hostdata;
> -
> +	struct Scsi_Host *const shost = command->device->host;
> +	struct blogic_adapter *adapter = (void *) shost->hostdata;
>  	int tgt_id = command->device->id;
>  	struct blogic_ccb *ccb;
>  	blogic_inc_count(&adapter->tgt_stats[tgt_id].aborts_request);
> @@ -3144,7 +3156,7 @@ static int blogic_abort(struct scsi_cmnd *command)
>  				adapter->fw_ver[0] < '5') {
>  			blogic_warn("Unable to Abort CCB #%ld to Target %d - Abort Tag Not Supported\n", adapter, ccb->serial, tgt_id);
>  			return FAILURE;
> -		} else if (blogic_write_outbox(adapter, BLOGIC_MBOX_ABORT,
> +		} else if (blogic_write_outbox(shost, BLOGIC_MBOX_ABORT,
>  					ccb)) {
>  			blogic_warn("Aborting CCB #%ld to Target %d\n",
>  					adapter, ccb->serial, tgt_id);
> @@ -3169,7 +3181,7 @@ static int blogic_abort(struct scsi_cmnd *command)
>  		   may still be pending.
>  		 */
>  		if (ccb->status == BLOGIC_CCB_COMPLETE)
> -			blogic_process_ccbs(adapter);
> +			blogic_process_ccbs(shost);
>  		return SUCCESS;
>  	}
>  	return SUCCESS;
> @@ -3181,8 +3193,9 @@ static int blogic_abort(struct scsi_cmnd *command)
>    currently executing SCSI Commands as having been Reset.
>  */
>  
> -static int blogic_resetadapter(struct blogic_adapter *adapter, bool hard_reset)
> +static int blogic_resetadapter(struct Scsi_Host *host, bool hard_reset)
>  {
> +	struct blogic_adapter *adapter = (void *)host->hostdata;
>  	struct blogic_ccb *ccb;
>  	int tgt_id;
>  
> @@ -3203,7 +3216,7 @@ static int blogic_resetadapter(struct blogic_adapter *adapter, bool hard_reset)
>  
>  	for (ccb = adapter->all_ccbs; ccb != NULL; ccb = ccb->next_all)
>  		if (ccb->status == BLOGIC_CCB_ACTIVE)
> -			blogic_dealloc_ccb(ccb, 1);
> +			blogic_dealloc_ccb(host, ccb, 1);
>  	/*
>  	 * Wait a few seconds between the Host Adapter Hard Reset which
>  	 * initiates a SCSI Bus Reset and issuing any SCSI Commands.  Some
> @@ -3212,9 +3225,9 @@ static int blogic_resetadapter(struct blogic_adapter *adapter, bool hard_reset)
>  	 */
>  
>  	if (hard_reset) {
> -		spin_unlock_irq(&adapter->scsi_host->host_lock);
> +		spin_unlock_irq(&host->host_lock);
>  		blogic_delay(adapter->bus_settle_time);
> -		spin_lock_irq(&adapter->scsi_host->host_lock);
> +		spin_lock_irq(&host->host_lock);
>  	}
>  
>  	for (tgt_id = 0; tgt_id < adapter->maxdev; tgt_id++) {
> diff --git a/drivers/scsi/BusLogic.h b/drivers/scsi/BusLogic.h
> index 24697a5bedc8..6ace3c307a90 100644
> --- a/drivers/scsi/BusLogic.h
> +++ b/drivers/scsi/BusLogic.h
> @@ -1279,7 +1279,7 @@ static int blogic_sdev_configure(struct scsi_device *,
>  				 struct queue_limits *lim);
>  static void blogic_qcompleted_ccb(struct blogic_ccb *);
>  static irqreturn_t blogic_inthandler(int, void *);
> -static int blogic_resetadapter(struct blogic_adapter *, bool hard_reset);
> +static int blogic_resetadapter(struct Scsi_Host *host, bool hard_reset);
>  static void blogic_msg(enum blogic_msglevel, char *, struct blogic_adapter *, ...);
>  static int __init blogic_setup(char *);
>  

  reply	other threads:[~2026-09-26 20:11 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-25 18:25 [PATCH v4 00/54] scsi: Enable context analysis for most drivers Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 01/54] PCI: Convert to_pci_dev() into an inline function Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 02/54] scsi: sg: Prepare for enabling lock context analysis Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 03/54] scsi: st: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 04/54] scsi: BusLogic: Pass the host pointer directly to several functions Bart Van Assche
2026-09-26 20:02   ` Khalid Aziz [this message]
2026-09-28 17:41     ` Bart Van Assche
2026-09-28 18:55       ` Khalid Aziz
2026-09-28 19:28         ` Bart Van Assche
2026-09-30 20:13           ` Khalid Aziz
2026-09-30 20:42             ` Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 05/54] scsi: BusLogic: Prepare for enabling lock context analysis Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 06/54] scsi: NCR5380: " Bart Van Assche
2026-09-26  0:42   ` Finn Thain
2026-09-28 17:42     ` Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 07/54] scsi: aacraid: Enable " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 08/54] scsi: aha152x: Prepare for enabling " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 09/54] scsi: aic7xxx: Enable " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 10/54] scsi: aic94xx: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 11/54] scsi: arcmsr: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 12/54] scsi: libiscsi: Pass the session pointer directly to several functions Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 13/54] scsi: libiscsi: Prepare for enabling lock context analysis Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 14/54] scsi: be2iscsi: Enable " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 15/54] scsi: cxgbi: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 16/54] scsi: bfa: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 17/54] scsi: bnx2fc: Pass tgt directly to several functions Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 18/54] scsi: bnx2fc: Enable lock context analysis Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 19/54] scsi: bnx2i: " Bart Van Assche
2026-09-25 18:25 ` [PATCH v4 20/54] scsi: csiostor: Pass the hw pointer directly to several functions Bart Van Assche
2026-09-28  6:27   ` Damien Le Moal
2026-09-25 18:25 ` [PATCH v4 21/54] scsi: csiostor: Enable lock context analysis Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 22/54] scsi: elx: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 23/54] scsi: esas2r: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 24/54] scsi: fcoe: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 25/54] scsi: fnic: Pass pointers directly to several functions Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 26/54] scsi: fnic: Enable lock context analysis Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 27/54] scsi: hisi_sas: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 28/54] scsi: hpsa: Prepare for enabling " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 29/54] scsi: ibmvscsi: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 30/54] scsi: ibmvscsi_tgt: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 31/54] scsi: ipr: Simplify ipr_eh_abort() Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 32/54] scsi: ipr: Pass the host pointer directly to several functions Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 33/54] scsi: ipr: Prepare for enabling lock context analysis Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 34/54] scsi: ips: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 35/54] scsi: isci: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 36/54] scsi: libfc: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 37/54] scsi: libsas: Prepare for enabling " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 38/54] scsi: libsas: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 39/54] scsi: lpfc: Prepare for enabling " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 40/54] scsi: mpt3sas: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 41/54] scsi: mvsas: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 42/54] scsi: pcmcia: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 43/54] scsi: pm8001: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 44/54] scsi: qedf: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 45/54] scsi: qedi: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 46/54] scsi: qla1280: Pass the host pointer directly to several functions Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 47/54] scsi: qla1280: Prepare for enabling lock context analysis Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 48/54] scsi: qla2xxx: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 49/54] scsi: qla4xxx: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 50/54] scsi: iSCSI transport: Prepare for enabling " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 51/54] scsi: smartpqi: Enable " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 52/54] scsi: snic: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 53/54] scsi: sym53c8xx_2: " Bart Van Assche
2026-09-25 18:26 ` [PATCH v4 54/54] scsi: drivers: " 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=argk3DLMl_YSDOsV@gonehiking.org \
    --to=khalid@gonehiking.org \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=bvanassche@acm.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mkp@kernel.org \
    /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