On Thu, 2018-01-18 at 17:22 +0100, Jack Wang wrote: > From: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxxx> > > The check_events interface was added for check if device changes, > mainly for device is removable eg. CDROM > > In sd_open, it checks if device is removable then check_disk_change. > > when the device is not removable, we can simple succeeds the call > without send TUR. > > Signed-off-by: Jack Wang <jinpu.wang@xxxxxxxxxxxxxxxx> > --- > drivers/scsi/sd.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c > index ab75ebd..773ce81 100644 > --- a/drivers/scsi/sd.c > +++ b/drivers/scsi/sd.c > @@ -1576,6 +1576,10 @@ static unsigned int sd_check_events(struct > gendisk *disk, unsigned int clearing) > sdp = sdkp->device; > SCSI_LOG_HLQUEUE(3, sd_printk(KERN_INFO, sdkp, > "sd_check_events\n")); > > + if (!sdp->removable) { > + retval = 0; > + goto out; > + } This looks like very much the wrong place to fix whatever problem you're seeing is. We could simply avoid setting up the events work function in genhd.c:device_add_disk(), which would be way more efficient. However, I think some devices do require being probed occasionally with a TUR because its the only way SCSI gets AENs (not that we make much use of them). So first of all, what's the actual problem? James