Re: [PATCH 2/5] scsi: introduce SHOST_BLOCKED state to support blocking IO

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux