On Wed, 21 Jun 2006, Andreas Mohr wrote:

> > It's not a USB issue; it's a matter of lack of coordination between the sg 
> > and sr drivers.  Each is unaware of the actions of the other, even when 
> > they are speaking to the same device.
> 
> Right, I could have expressed it much better before, sorry.
> 
> Found the relevant code:
> sd.c sd_open()
> 
>         if (!sdkp->openers++ && sdev->removable) {
>                 if (scsi_block_when_processing_errors(sdev))
>                         scsi_set_medium_removal(sdev, SCSI_REMOVAL_PREVENT);
>         }

Um, this isn't the relevant code.  You're interested in sr.c, not sd.c.  
Furthermore, the actual ALLOW MEDIUM REMOVAL command is caused by code in 
drivers/cdrom/cdrom.c:cdrom_release().  This needs to be coordinated (the 
cdi->use_count variable) with the sg driver.

> And the obvious question would be whether the sdkp->openers++ thingy
> could somehow be extended to enclose all hardware device users so that
> e.g. sr.c wouldn't send ALLOW_MEDIUM_REMOVAL on a device already locked
> by e.g. the sd.c driver.
> Difficult question, though, since the group of drivers possible to use
> with a certain device is not a static set:
> it could be via
> - sr.c
> - sd.c
> - IDE (in the case of ATA devices mapped via ide-scsi)
> - ???
> 
> Is it possible to have such a per-*hardware*-device instance in the kernel
> to keep track of various things such as number of device openers?
> I'll do some investigation myself, too...

Look at include/scsi/scsi_device.h.  There's plenty of opportunity for 
adding an additional counter.

Alan Stern


All the advantages of Linux Managed Hosting--Without the Cost and Risk!
Fully trained technicians. The highest number of Red Hat certifications in
the hosting industry. Fanatical Support. Click to learn more
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to