I'm attempting to reset a CDROM using the CDROMRESET
ioctl. The reset command only seems to reset the
device if the device is not mounted. If the device is
mounted, the reset command seems to have no effect.
With the device unmounted, sending the reset command
causes the drive to become active and I see the
activity light light up. With the device mounted, the
activity light does nothing. I also can't open the
CD-ROM drive using the eject button after resetting a
mounted CD.
It seems the reset command should work even if the OS
thinks the device is mounted for error recovery.
Here is my test program:
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/cdrom.h>
int main(int argc, char* argv[])
{
int fd, result;
fd = open("/dev/hda", O_RDONLY|O_NONBLOCK);
if (fd < 0)
{
perror("open");
return fd;
}
result = ioctl(fd, CDROMRESET, 1);
if (result < 0)
perror("ioctl");
close(fd);
return 0;
}
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - Buy the things you want at great prices.
http://auctions.yahoo.com/
On Wed, Feb 07 2001, Paul Powell wrote:
> I'm attempting to reset a CDROM using the CDROMRESET
> ioctl. The reset command only seems to reset the
> device if the device is not mounted. If the device is
> mounted, the reset command seems to have no effect.
>
> With the device unmounted, sending the reset command
> causes the drive to become active and I see the
> activity light light up. With the device mounted, the
> activity light does nothing. I also can't open the
> CD-ROM drive using the eject button after resetting a
> mounted CD.
>
> It seems the reset command should work even if the OS
> thinks the device is mounted for error recovery.
There's no special code to send different reset depending
on whether the drive is mounted or not. If you drive
reacts differently to a reset if it's locked, then tough
luck.
> result = ioctl(fd, CDROMRESET, 1);
^^
There are no valid parameters for a reset.
--
Jens Axboe