On 2020-01-18 23:14, Ming Lei wrote: > +static inline bool scsi_bypass_device_busy(struct scsi_device *sdev) > +{ > + struct Scsi_Host *shost = sdev->host; > + > + if (!shost->hostt->no_device_queue_for_ssd) > + return false; > + > + return blk_queue_nonrot(sdev->request_queue); > +} In other words, sdev->device_busy is maintained for all SCSI devices except for those SSDs controlled by a SCSI LLD driver that has no_device_queue_for_ssd set in its host template. I'd like to see different behavior, namely that sdev->device_busy is not maintained for any SSD except if that SSD really needs the sdev->device_busy counter. The blacklist mechanism may be more appropriate to mark such SSDs than the SCSI host template. What I also noticed is that most scsi_bypass_device_busy() calls have an exclamation mark (!) in front of these calls. I think that inverting the return value and renaming this function into e.g. scsi_maintain_device_busy() would result in code that is easier to read. Thanks, Bart.