On Thu, Apr 5, 2012 at 10:03 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 5 Apr 2012, Aaron Lu wrote: > >> Hi, >> >> On Thu, Apr 05, 2012 at 02:00:57PM +0800, Lin Ming wrote: >> > > >> > > Another thing to consider is, user might want to eject the tray by >> > > software like the >> > > eject /dev/sr0 command or some UI mouse clicks against the cdrom icon. I'm still >> > > thinking how to do this correctly. >> > >> > Assume eject /dev/sr0 is implemented as: >> > >> > int fd = open("/dev/sr0", ...) >> > ioctl(fd, CDROMEJECT) >> > >> >> Indeed, it is implemented as this :-) >> >> > We may need to resume ODD in the ioctl handler(scsi_cmd_ioctl). >> > >> >> I prefer we do this in sr_block_ioctl. >> Suppose the ODD is now runtime suspended and received an ioctl: >> if the ioctl's cmd is CDROMEJECT, resume it. >> For other cases, return an error code like EPERM. >> When done, according to the result of ioctl: if success, leave it resumed; >> if failed, put it back to sleep. > > Alternatively, you may want to do the runtime resume in sr_open and > sr_block_open and the suspend in the corresponding release routines. > It's up to you. GNOME opens cdrom every seconds to check status. So we won't get the desired power savings if we do the runtime resume in sr_block_open. See my previous mail. > > Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html