All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: David Milburn <dmilburn@redhat.com>
Cc: James.Bottomley@HansenPartnership.com, linux-scsi@vger.kernel.org
Subject: Re: [RFC] aic7xxx - ahc_done check SCB_ACTIVE for tagged transactions
Date: Tue, 29 Jan 2008 16:18:16 +0100	[thread overview]
Message-ID: <479F43B8.2090902@suse.de> (raw)
In-Reply-To: <20080125181618.GB26158@dhcp-210.hsv.redhat.com>

David Milburn wrote:
> Hannes,
> 
> Does ahc_done need to check the SCB_ACTIVE flag only if the SCB
> is not in the untagged queue before panic?
> 
> If the driver is in error recovery, you may end panic'ing
> on a TUR that is in the untagged queue.
> 
> Attempting to queue an ABORT message
> CDB: 0x0 0x0 0x0 0x0 0x0 0x0
> SCB 3 done'd twice
> 
> This patch is included in Adaptec's 6.3.11 driver on their 
> website.
> 
> Thank you,
> David
> 
> --- scsi-misc-2.6.git/drivers/scsi/aic7xxx/aic7xxx_osm.c.abort
> +++ scsi-misc-2.6.git/drivers/scsi/aic7xxx/aic7xxx_osm.c
> @@ -1658,9 +1658,12 @@ ahc_done(struct ahc_softc *ahc, struct s
>  		untagged_q = &(ahc->untagged_queues[target_offset]);
>  		TAILQ_REMOVE(untagged_q, scb, links.tqe);
>  		BUG_ON(!TAILQ_EMPTY(untagged_q));
> -	}
> -
> -	if ((scb->flags & SCB_ACTIVE) == 0) {
> +	} else if ((scb->flags & SCB_ACTIVE) == 0) {
> +		/*
> +		 * Transactions aborted from the untagged queue may
> +		 * not have been dispatched to the controller, so
> +		 * only check the SCB_ACTIVE flag for tagged transactions.
> +		 */
>  		printf("SCB %d done'd twice\n", scb->hscb->tag);
>  		ahc_dump_card_state(ahc);
>  		panic("Stopping for safety");
> 
Yes, this looks correct. The SCB_ACTIVE flag is reset when doing an ahc_scb_free()
at the very end of ahc_done(). And seeing that we are re-using scbs for error recovery
we might indeed end up with an scb with SCB_ACTIVE is set.

But I'll do some more investigation.
Do you have any setup to exercise this?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		      zSeries & Storage
hare@suse.de			      +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: Markus Rex, HRB 16746 (AG Nürnberg)
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2008-01-29 15:18 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-25 18:16 [RFC] aic7xxx - ahc_done check SCB_ACTIVE for tagged transactions David Milburn
2008-01-29 15:18 ` Hannes Reinecke [this message]
2008-01-29 16:11   ` David Milburn

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=479F43B8.2090902@suse.de \
    --to=hare@suse.de \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=dmilburn@redhat.com \
    --cc=linux-scsi@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.