From: Johannes Thumshirn <jthumshirn@suse.de>
To: Hannes Reinecke <hare@suse.de>,
"Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Christoph Hellwig <hch@lst.de>,
James Bottomley <jbottomley@odin.com>,
linux-scsi@vger.kernel.org
Subject: Re: [PATCH 3/5] scsi: make eh_eflags persistent
Date: Thu, 03 Dec 2015 10:08:44 +0100 [thread overview]
Message-ID: <1449133724.3311.8.camel@suse.de> (raw)
In-Reply-To: <1449127063-94512-4-git-send-email-hare@suse.de>
On Thu, 2015-12-03 at 08:17 +0100, Hannes Reinecke wrote:
> To detect if a failed command has been retried we must not
> clear scmd->eh_eflags when EH finishes.
> The flag should be persistent throughout the lifetime
> of the command.
>
> Signed-off-by: Hannes Reinecke <hare@suse.de>
> ---
> Documentation/scsi/scsi_eh.txt | 3 ---
> drivers/scsi/scsi_error.c | 4 ++--
> include/scsi/scsi_eh.h | 1 +
> 3 files changed, 3 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/scsi/scsi_eh.txt b/Documentation/scsi/scsi_eh.txt
> index 8638f61..745eed5 100644
> --- a/Documentation/scsi/scsi_eh.txt
> +++ b/Documentation/scsi/scsi_eh.txt
> @@ -264,7 +264,6 @@ scmd->allowed.
> 3. scmd recovered
> ACTION: scsi_eh_finish_cmd() is invoked to EH-finish scmd
> - shost->host_failed--
> - - clear scmd->eh_eflags
> - scsi_setup_cmd_retry()
> - move from local eh_work_q to local eh_done_q
> LOCKING: none
> @@ -452,8 +451,6 @@ except for #1 must be implemented by
> eh_strategy_handler().
>
> - shost->host_failed is zero.
>
> - - Each scmd's eh_eflags field is cleared.
> -
> - Each scmd is in such a state that scsi_setup_cmd_retry() on the
> scmd doesn't make any difference.
>
> diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
> index deb35737..eb0f19f 100644
> --- a/drivers/scsi/scsi_error.c
> +++ b/drivers/scsi/scsi_error.c
> @@ -182,7 +182,6 @@ scsi_abort_command(struct scsi_cmnd *scmd)
> /*
> * Retry after abort failed, escalate to next level.
> */
> - scmd->eh_eflags &= ~SCSI_EH_ABORT_SCHEDULED;
> SCSI_LOG_ERROR_RECOVERY(3,
> scmd_printk(KERN_INFO, scmd,
> "previous abort failed\n"));
> @@ -919,6 +918,7 @@ void scsi_eh_prep_cmnd(struct scsi_cmnd *scmd, struct
> scsi_eh_save *ses,
> ses->result = scmd->result;
> ses->underflow = scmd->underflow;
> ses->prot_op = scmd->prot_op;
> + ses->eh_eflags = scmd->eh_eflags;
>
> scmd->prot_op = SCSI_PROT_NORMAL;
> scmd->eh_eflags = 0;
> @@ -982,6 +982,7 @@ void scsi_eh_restore_cmnd(struct scsi_cmnd* scmd, struct
> scsi_eh_save *ses)
> scmd->result = ses->result;
> scmd->underflow = ses->underflow;
> scmd->prot_op = ses->prot_op;
> + scmd->eh_eflags = ses->eh_eflags;
> }
> EXPORT_SYMBOL(scsi_eh_restore_cmnd);
>
> @@ -1115,7 +1116,6 @@ static int scsi_eh_action(struct scsi_cmnd *scmd, int
> rtn)
> void scsi_eh_finish_cmd(struct scsi_cmnd *scmd, struct list_head *done_q)
> {
> scmd->device->host->host_failed--;
> - scmd->eh_eflags = 0;
> list_move_tail(&scmd->eh_entry, done_q);
> }
> EXPORT_SYMBOL(scsi_eh_finish_cmd);
> diff --git a/include/scsi/scsi_eh.h b/include/scsi/scsi_eh.h
> index dbb8c64..f2f876c 100644
> --- a/include/scsi/scsi_eh.h
> +++ b/include/scsi/scsi_eh.h
> @@ -30,6 +30,7 @@ extern int scsi_ioctl_reset(struct scsi_device *, int
> __user *);
> struct scsi_eh_save {
> /* saved state */
> int result;
> + int eh_eflags;
> enum dma_data_direction data_direction;
> unsigned underflow;
> unsigned char cmd_len;
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
--
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
next prev parent reply other threads:[~2015-12-03 9:08 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-03 7:17 [PATCH 0/5] SCSI EH cleanup Hannes Reinecke
2015-12-03 7:17 ` [PATCH 1/5] libsas: allow async aborts Hannes Reinecke
2015-12-03 8:17 ` Johannes Thumshirn
2015-12-03 7:17 ` [PATCH 2/5] scsi: make scsi_eh_scmd_add() always succeed Hannes Reinecke
2015-12-03 9:07 ` Johannes Thumshirn
2015-12-03 16:51 ` Christoph Hellwig
2015-12-03 7:17 ` [PATCH 3/5] scsi: make eh_eflags persistent Hannes Reinecke
2015-12-03 9:08 ` Johannes Thumshirn [this message]
2015-12-03 16:55 ` Christoph Hellwig
2015-12-03 7:17 ` [PATCH 4/5] scsi: make asynchronous aborts mandatory Hannes Reinecke
2015-12-03 9:13 ` Johannes Thumshirn
2015-12-03 7:17 ` [PATCH 5/5] scsi_error: do not escalate failed EH command Hannes Reinecke
2015-12-03 9:15 ` Johannes Thumshirn
-- strict thread matches above, loose matches on Subject: below --
2016-06-20 9:35 [PATCH 0/5] SCSI EH cleanup Hannes Reinecke
2016-06-20 9:35 ` [PATCH 3/5] scsi: make eh_eflags persistent Hannes Reinecke
2016-06-22 13:33 ` Christoph Hellwig
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=1449133724.3311.8.camel@suse.de \
--to=jthumshirn@suse.de \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=jbottomley@odin.com \
--cc=linux-scsi@vger.kernel.org \
--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 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.