lkml.org 
[lkml]   [2004]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[RFC] list of SCSI commands
Hi,
I think the filtering mechanism needs to be refined before we can do
useful patches. I think it will be necessary to base filtering on
scsi_type from struct sg_scsi_id (in sg.h and scsi.h). Otherwise it will
be impossible to get functionality and safety for all devices.

I have compiled a long list of various SCSI commands and tried to
categorize them. This list is focused on mmc devices (CD-RW, DVD+R).
Many commands that are only relevant for discs are not included.

=UNCLEAR=
MODE SELECT should be safe for mmc devices (sometimes even required).
However, it often is *not* safe for other devices. This is a case,
were filtering needs to honor device types.
0x15 MODE_SELECT
0x55 MODE_SELECT_10
0x01 REZERO_UNIT

Here is a conflict between different device types. MOVE_MEDIUM for
changers; PLAY_AUDIO_12 for mmc. Are both cases safe for read?
0xA5 MOVE_MEDIUM

If I understand correctly, those commands can be used to initate
transfers between two devices. If so, read/write access to a single
device could be used to read/write all devices on the same bus.
0x18 COPY
0x39 COMPARE

I haven't found further information on the following commands. Some are
probably vendor specific. Annotations are from cdrecord.
-> 0x0D /* qic02 Sysgen SC4000 */
-> 0x59 /* Read master cue */
-> 0xB3 GPMCD_SET_LIMITS_12
-> 0xC1
-> 0xC2 SC_SET_SUBCODE
-> 0xC3
-> 0xC4 SC_READ_PMA
-> 0xC5
-> 0xC6
-> 0xC7 SC_READ_DISK_INFO
-> 0xCE
-> 0xCF
-> 0xD4 /* Read audio command */
-> 0xD8 /* read audio command */
-> 0xDF
-> 0xE0 SC_BUFFER_INQUIRY
-> 0xE1 SC_WRITE_PMA
-> 0xE2
-> 0xE3 SC_FREEZE
-> 0xE4 SC_CLEAR_SUBCODE
-> 0xE5
-> 0xE6 SC_NEXT_WR_ADDRESS
-> 0xE7
-> 0xE9
-> 0xEB
-> 0xEC SC_OPC_EXECUTE
-> 0xED
-> 0xEE /* Read session info */
-> 0xEF SC_READ_PEAK_BUF_CAP
-> 0xF0
-> 0xF1
-> 0xF2
-> 0xF3
-> 0xF5
-> 0xF6
-> 0xF8
=READ=
0x00 TEST_UNIT_READY
0x03 REQUEST_SENSE
0x08 READ_6
0x0B SEEK_6
0x12 INQUIRY
0x1A MODE_SENSE
0x23 GPCMD_READ_FORMAT_CAPACITIES
0x25 GPCMD_READ_CDVD_CAPACITY
0x28 READ_10
0x2B SEEK_10
0x2F GPCMD_VERIFY_10
0x3C READ_BUFFER
0x42 GPCMD_READ_SUBCHANNEL
0x43 GPCMD_READ_TOC_PMA_ATIP
0x44 GPCMD_READ_HEADER //not found in spec, _sounds_ safe
0x45 GPCMD_PLAY_AUDIO_10
0x46 GPCMD_GET_CONFIGURATION
0x47 GPCMD_PLAY_AUDIO_MSF
0x4A GPCMD_GET_EVENT_STATUS_NOTIFICATION
0x4B GPCMD_PAUSE_RESUME
0x4E GPCMD_STOP_PLAY_SCAN
0x51 GPCMD_READ_DISC_INFO
0x52 GPCMD_READ_TRACK_RZONE_INFO
0x5A MODE_SENSE_10
-> 0x5C GPCMD_READ_BUFFER_CAPACITY
0x88 READ_16
0xA3 GPCMD_SEND_KEY
0xA4 GPCMD_REPORT_KEY
0xA6 GPCMD_LOAD_UNLOAD
0xA7 GPCMD_SET_READ_AHEAD
0xA8 READ_12
0xAC GPCMD_GET_PERFORMANCE
0xAD GPCMD_READ_DVD_STRUCTURE
0xB6 GPCMD_SET_STREAMING
0xB9 GPCMD_READ_CD_MSF
0xBA GPCMD_SCAN
0xBB GPCMD_SET_SPEED
0xBD GPCMD_MECHANISM_STATUS
0xBE GPCMD_READ_CD
=WRITE=
0x04 FORMAT_UNIT // is this safe for disks?
0x0A WRITE_6
0x2A WRITE_10
0x2E GPCMD_WRITE_AND_VERIFY_10
0x35 GPCMD_FLUSH_CACHE
0xAA WRITE_12
0x8a WRITE_16
0xA1 GPCMD_BLANK
0x53 GPCMD_RESERVE_RZONE_TRACK
0x54 GPCMD_SEND_OPC
0x58 GPCMD_REPAIR_RZONE_TRACK
0x5B GPCMD_CLOSE_TRACK
0x1E GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL
-> 0x5D GPCMD_SEND_CUE
-> 0x2C GPCMD_ERASE
-> 0xBF GPCMD_SEND_DVD_STRUCTURE
=RAWIO=
Some modes of WRITE_BUFFER are safe even for read, others
overwrite firmware. Misdesign.
0x3B WRITE_BUFFER

0x07 REASSIGN_BLOCKS
0x16 RESERVE
0x17 RELEASE
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:05    [from the cache]
©2003-2011 Jasper Spaans. Advertise on this site