2023-11-30 13:04:30

by Xingui Yang

[permalink] [raw]
Subject: [PATCH] scsi: libsas: Put the disk offline if all recovery actions fail

Currently, after all recovery actions in sas_eh_handle_sas_errors() fail
for sas disk, we just clear all IO, but the disk is still online. Perhaps
we should continue the subsequent recovery process for IO that cannot be
processed. If it still fails, the disk will be offline in
scsi_eh_ready_devs().

Signed-off-by: Xingui Yang <[email protected]>
Signed-off-by: Bo Wu <[email protected]>
---
drivers/scsi/libsas/sas_scsi_host.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
index 9047cfcd1072..3f9b99fa1769 100644
--- a/drivers/scsi/libsas/sas_scsi_host.c
+++ b/drivers/scsi/libsas/sas_scsi_host.c
@@ -637,8 +637,8 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
SAS_ADDR(task->dev->sas_addr),
cmd->device->lun);

- sas_eh_finish_cmd(cmd);
- goto clear_q;
+ list_move_tail(&cmd->eh_entry, work_q);
+ goto out;
}
}
out:
--
2.17.1


2023-12-01 03:00:15

by Xingui Yang

[permalink] [raw]
Subject: Re: [PATCH] scsi: libsas: Put the disk offline if all recovery actions fail

Sorry, please ignore this email, I need to update a new version, Thanks.

On 2023/11/30 21:01, Xingui Yang wrote:
> Currently, after all recovery actions in sas_eh_handle_sas_errors() fail
> for sas disk, we just clear all IO, but the disk is still online. Perhaps
> we should continue the subsequent recovery process for IO that cannot be
> processed. If it still fails, the disk will be offline in
> scsi_eh_ready_devs().
>
> Signed-off-by: Xingui Yang <[email protected]>
> Signed-off-by: Bo Wu <[email protected]>
> ---
> drivers/scsi/libsas/sas_scsi_host.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
> index 9047cfcd1072..3f9b99fa1769 100644
> --- a/drivers/scsi/libsas/sas_scsi_host.c
> +++ b/drivers/scsi/libsas/sas_scsi_host.c
> @@ -637,8 +637,8 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
> SAS_ADDR(task->dev->sas_addr),
> cmd->device->lun);
>
> - sas_eh_finish_cmd(cmd);
> - goto clear_q;
> + list_move_tail(&cmd->eh_entry, work_q);
> + goto out;
> }
> }
> out:
>