Comment 27 for bug 7825

Revision history for this message
LaMont Jones (lamont) wrote :

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;

        return ret;
 }