mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: John Garry <john.garry@huawei.com>,
	jejb@linux.vnet.ibm.com, martin.petersen@oracle.com
Cc: linuxarm@huawei.com, zhangfei.gao@linaro.org,
	xuwei5@hisilicon.com, john.garry2@mail.dcu.ie,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 5/8] hisi_sas: add v2 hw slot complete internal abort support
Date: Wed, 24 Aug 2016 14:59:53 +0200	[thread overview]
Message-ID: <5b7f8fb5-3682-06d4-9466-da38d0fe1d19@suse.de> (raw)
In-Reply-To: <1472036754-156813-6-git-send-email-john.garry@huawei.com>

On 08/24/2016 01:05 PM, John Garry wrote:
> Add code in slot_complete_v2_hw() to deal with the
> slots which have completed due to internal abort.
> 
> The status codes have the following meaning:
> - STAT_IO_ABORTED: the IO has been aborted due to
> internal abort, whether by device or individual
> abort command
> - STAT_IO_COMPLETE: internal abort command has
> completed successfully for device or individual
> abort command
> - STAT_IO_NO_DEVICE: internal abort command has
> completed for device but cannot find any IO
> - STAT_IO_NOT_VALID: internal abort command has
> completed for single command but could not
> find the command
> 
> Signed-off-by: John Garry <john.garry@huawei.com>
> ---
>  drivers/scsi/hisi_sas/hisi_sas_v2_hw.c | 31 +++++++++++++++++++++++++++++++
>  1 file changed, 31 insertions(+)
> 
> diff --git a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> index fec1675..bf9b693 100644
> --- a/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> +++ b/drivers/scsi/hisi_sas/hisi_sas_v2_hw.c
> @@ -227,6 +227,13 @@
>  #define CMPLT_HDR_RSPNS_XFRD_MSK	(0x1 << CMPLT_HDR_RSPNS_XFRD_OFF)
>  #define CMPLT_HDR_ERX_OFF		12
>  #define CMPLT_HDR_ERX_MSK		(0x1 << CMPLT_HDR_ERX_OFF)
> +#define CMPLT_HDR_ABORT_STAT_OFF	13
> +#define CMPLT_HDR_ABORT_STAT_MSK	(0x7 << CMPLT_HDR_ABORT_STAT_OFF)
> +/* abort_stat */
> +#define STAT_IO_NOT_VALID		0x1
> +#define STAT_IO_NO_DEVICE		0x2
> +#define STAT_IO_COMPLETE		0x3
> +#define STAT_IO_ABORTED			0x4
>  /* dw1 */
>  #define CMPLT_HDR_IPTT_OFF		0
>  #define CMPLT_HDR_IPTT_MSK		(0xffff << CMPLT_HDR_IPTT_OFF)
> @@ -1569,6 +1576,30 @@ slot_complete_v2_hw(struct hisi_hba *hisi_hba, struct hisi_sas_slot *slot,
>  		goto out;
>  	}
>  
> +	/* Use SAS+TMF status codes */
> +	switch ((complete_hdr->dw0 & CMPLT_HDR_ABORT_STAT_MSK)
> +			>> CMPLT_HDR_ABORT_STAT_OFF) {
> +	case STAT_IO_ABORTED:
> +		/* this io has been aborted by abort command */
> +		ts->stat = SAS_ABORTED_TASK;
> +		goto out;
> +	case STAT_IO_COMPLETE:
> +		/* internal abort command complete */
> +		ts->stat = TMF_RESP_FUNC_COMPLETE;
> +		goto out;
> +	case STAT_IO_NO_DEVICE:
> +		ts->stat = TMF_RESP_FUNC_COMPLETE;
> +		goto out;
> +	case STAT_IO_NOT_VALID:
> +		/* abort single io, controller don't find
> +		 * the io need to abort
> +		 */
> +		ts->stat = TMF_RESP_FUNC_FAILED;
> +		goto out;
Hmm. This will cause the SCSI EH to kick in.
And then, according to the description abort has succeeded, it's just
that for some reason the associated command couldn't be found.
So couldn't this be due to a race condition, and the command has in fact
been aborted correctly (and the code is just too slow acknowledging it)?

Cheers,

Hannes
-- 
Dr. Hannes Reinecke		   Teamlead Storage & Networking
hare@suse.de			               +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)

  reply	other threads:[~2016-08-24 12:59 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-24 11:05 [PATCH v2 0/8] hisi_sas " John Garry
2016-08-24 11:05 ` [PATCH v2 1/8] hisi_sas: add internal abort main code John Garry
2016-08-24 12:41   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 2/8] hisi_sas: add internal abort in hisi_sas_dev_gone() John Garry
2016-08-24 12:41   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 3/8] hisi_sas: add internal abort to hisi_sas_abort_task() John Garry
2016-08-24 12:42   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 4/8] hisi_sas: add prep_abort_v2_hw() John Garry
2016-08-24 12:43   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 5/8] hisi_sas: add v2 hw slot complete internal abort support John Garry
2016-08-24 12:59   ` Hannes Reinecke [this message]
2016-08-24 14:07     ` John Garry
2016-08-24 14:21       ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 6/8] hisi_sas: fail tmf task prep when port detached John Garry
2016-08-24 13:00   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 7/8] hisi_sas: add TMF success check John Garry
2016-08-24 13:00   ` Hannes Reinecke
2016-08-24 11:05 ` [PATCH v2 8/8] hisi_sas: update version to 1.6 John Garry
2016-08-24 13:00   ` Hannes Reinecke
2016-08-26  2:40 ` [PATCH v2 0/8] hisi_sas internal abort support Martin K. Petersen

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=5b7f8fb5-3682-06d4-9466-da38d0fe1d19@suse.de \
    --to=hare@suse.de \
    --cc=jejb@linux.vnet.ibm.com \
    --cc=john.garry2@mail.dcu.ie \
    --cc=john.garry@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=martin.petersen@oracle.com \
    --cc=xuwei5@hisilicon.com \
    --cc=zhangfei.gao@linaro.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

all inboxes | Powered by JetHome®