The problem here is that cdrom_open_write fails because the drive in
question doesn't meet it's criteria, and we fall of the end of the
if-then-else mess.
Specifically, when we get to the top of that if-then-else,
cdi->ops->capability==0x3fffff, and cdi->mask=0x1e0010. That is,
CDROM_CAN will match any (combination) of:
CDC_CD_R, CDC_CD_RW, CDC_DVD, CDC_DVD_R, CDC_RAM
but not any of:
CDC_DVD_RAM, CDC_MO_DRIVE, CDC_MRW, CDC_MRW_W,
The following diff eliminates the problem, but is admittedly wrong in
oh so many ways...
lamont
--- drivers/cdrom/cdrom.c.save 2004-09-13 18:24:44.166754353 -0600
+++ drivers/cdrom/cdrom.c 2004-09-13 20:17:09.671937749 -0600
@@ -862,6 +862,8 @@
ret = cdrom_ram_open_write(cdi);
else if (CDROM_CAN(CDC_MO_DRIVE))
ret = mo_open_write(cdi);
+ else if (CDROM_CAN(CDC_RAM))
+ ret=0;
The problem here is that cdrom_open_write fails because the drive in
question doesn't meet it's criteria, and we fall of the end of the
if-then-else mess.
Specifically, when we get to the top of that if-then-else, >capability= =0x3fffff, and cdi->mask=0x1e0010. That is,
cdi->ops-
CDROM_CAN will match any (combination) of:
CDC_CD_R, CDC_CD_RW, CDC_DVD, CDC_DVD_R, CDC_RAM
but not any of:
CDC_DVD_RAM, CDC_MO_DRIVE, CDC_MRW, CDC_MRW_W,
The following diff eliminates the problem, but is admittedly wrong in
oh so many ways...
lamont
--- drivers/ cdrom/cdrom. c.save 2004-09-13 18:24:44.166754353 -0600 cdrom/cdrom. c 2004-09-13 20:17:09.671937749 -0600 open_write( cdi); CAN(CDC_ MO_DRIVE) ) CAN(CDC_ RAM))
+++ drivers/
@@ -862,6 +862,8 @@
ret = cdrom_ram_
else if (CDROM_
ret = mo_open_write(cdi);
+ else if (CDROM_
+ ret=0;
return ret;
}