Messages in this thread | | | Date | Mon, 27 Mar 2023 14:34:27 -0700 | Subject | Re: [PATCH 2/5] scsi: introduce SHOST_BLOCKED state to support blocking IO | From | Bart Van Assche <> |
| |
On 3/24/23 18:17, Ye Bin wrote: > diff --git a/drivers/scsi/hosts.c b/drivers/scsi/hosts.c > index 9b6fbbe15d92..3b497fd4d329 100644 > --- a/drivers/scsi/hosts.c > +++ b/drivers/scsi/hosts.c > @@ -90,6 +90,7 @@ int scsi_host_set_state(struct Scsi_Host *shost, enum scsi_host_state state) > switch (oldstate) { > case SHOST_CREATED: > case SHOST_RECOVERY: > + case SHOST_BLOCKED: > break; > default: > goto illegal; > @@ -99,6 +100,7 @@ int scsi_host_set_state(struct Scsi_Host *shost, enum scsi_host_state state) > case SHOST_RECOVERY: > switch (oldstate) { > case SHOST_RUNNING: > + case SHOST_BLOCKED: > break; > default: > goto illegal; > @@ -109,6 +111,7 @@ int scsi_host_set_state(struct Scsi_Host *shost, enum scsi_host_state state) > switch (oldstate) { > case SHOST_CREATED: > case SHOST_RUNNING: > + case SHOST_BLOCKED: > case SHOST_CANCEL_RECOVERY: > break; > default: > @@ -144,6 +147,14 @@ int scsi_host_set_state(struct Scsi_Host *shost, enum scsi_host_state state) > goto illegal; > } > break; > + case SHOST_BLOCKED: > + switch (oldstate) { > + case SHOST_RUNNING: > + break; > + default: > + goto illegal; > + } > + break; > }
If a host is blocked, error recovery happens and completes, the host will be unblocked. I don't think that is acceptable.
The "blocked" property is orthogonal to the host state so a new boolean member variable should be introduced in struct Scsi_Host instead of introducing a new SCSI host state.
Thanks,
Bart.
| |