Skip to contentSkip to conversation

strange ide-cd MODE_SENSE response [2.6.8.1]

DISCUSSION Douglas Gilbert 1 participant 1 message Aug 17, 2004 SCSI

lore
Share & tools
lore
#0 lore raw

In lk 2.6.8.1 (and 2.6.7) if a MODE_SENSE (6 byte variant) is sent to an "ide-cd" device (e.g. /dev/hdc) then it responds with a "CONDITION MET" SCSI status and no sense buffer.

According to MMC, MODE_SENSE (6) is not supported. In this case a polite SCSI device should set a SCSI status of "CHECK CONDITION" with a sense key of ILLEGAL_REQUEST and appropriate ASC/ASCQ values (i.e. operation code not supported).

The relevant code in ide-cd.c seems to be:

        /*
         * it's silly to pretend we understand 6-byte sense commands, just
         * reject with ILLEGAL_REQUEST and the caller should take the
         * appropriate action
         */
        if (c[0] == MODE_SENSE || c[0] == MODE_SELECT) {
                rq->errors = ILLEGAL_REQUEST;
                return BLKPREP_KILL;
        }

I couldn't see how that BLKPREP_KILL was processed.

Why have such code? I have a Yamaha SCSI cd writer that correctly supports MODE_SENSE (6) and MODE_SENSE (10). Support for MODE_SENSE (10) is mandatory in the MMC standard but it would be surprising if it said a MMC device could _not_ support MODE_SENSE (6).

The failure can be seen with the sg3_utils package and commands like this:
sg_modes -6 /dev/hdc
sginfo -C -6 /dev/hdc

Doug Gilbert