: scsi_error: interruptible scsi_block_when_processing_errors()
The existing scsi_block_when_processing_errors() function in scsi_error.c does a non-interruptible wait on the host_wait work queue. That call is made from many places in the scsi subsystem ULDs (e.g. the sg driver).
In many cases (e.g. sg_open()) there is a direct path back to the user space. So why hang open(sg_device) calls (that don't use O_NONBLOCK) in an non-interruptible call for what might be a long time.
Apart from signal indications, such a non-interruptible version of scsi_block_when_processing_errors() could return useful (possibly negated) errno_s, for example indicating the device in question had been detached or timed out (possibly because the HBA was being reset).
Thoughts?
Doug Gilbert