CDEJECT for SCSI disks/ide-floppy in drivers/block/scsi_ioctl.c
At least in 2.5.70 there is common drivers/block/scsi_ioctl.c that defines CDEJECT and is used by both SCSI and IDE ioctls. This fails for SCSI disks and should fail for ide-floppy as well (unverified for the lack of hardware). Both lock tray on open and that prevents media from being ejected (even if command appears to succeed).
This happens to sometimes work for CD-ROMs because they do not lock media when opened with O_NONBLOCK. It is not clear if this is a feature - device opened with O_NONBLOCK is still busy so it should be locked as well.
CDEJECT implementation should unlock tray first; is moving it into drivers/block/scsi_ioctl.c a long term goal? Would it make sense to add CDROM_LOCKDOOR ioctl to this file as well?
Hmm ... just realized it fails for ide-floppy that has specia case for Click! drive. But then, it is impossible to add generic unlock command to scsi_iotcl.c as well.
Thank you
-andrey