• J
    ide: Implement VPD response for ATAPI · 9a502563
    John Snow 提交于
    SCSI devices have multiple kinds of queries they need to respond
    to, as defined in the "cmd inquiry" section in MMC-6 and SPC-3.
    
    Relevent sections:
    MMC-6 revision 2g:
          Non-VPD response data and pointer to SPC-3;
          Section 6.8 "Inquiry Command"
    SPC-3 revision 23:
          Inquiry command and error handling:
          Section 6.4 "INQUIRY command"
          VPD data pages format:
          Section 7.6 "Vital product data parameters"
    
    We implement these Vital Product Data queries for SCSI, but not for
    ATAPI through IDE. The result is that if you are looking for the WWN
    identifier via tools such as sg3_utils, you will be unable to query
    our CD/DVD rom device to obtain it.
    
    This patch adds the minimum number of mandatory responses as defined
    by SPC-3, which include the "supported pages" response (page 0x00)
    and the "Device Identification" response (page 0x83). It also correctly
    responds when it receives a request for an illegal page to improve
    error output from related tools.
    
    The Device ID page contains an arbitrary list of identification
    strings of various formats; the ID strings included in this patch
    were chosen to mimic those provided by the libata driver when
    emulating this SCSI query (model, serial, and wwn when present.)
    
    Example:
    
    # libata emulated response
    [root@localhost ~]# sg_inq --id /dev/sda
    VPD INQUIRY: Device Identification page
      Designation descriptor number 1, descriptor length: 24
        designator_type: vendor specific [0x0],  code_set: ASCII
        associated with the addressed logical unit
          vendor specific: QM00001
      Designation descriptor number 2, descriptor length: 72
        designator_type: T10 vendor identification,  code_set: ASCII
        associated with the addressed logical unit
          vendor id: ATA
          vendor specific: QEMU HARDDISK                           QM00001
    
    # QEMU generated ATAPI response, with WWN
    [root@localhost ~]# sg_inq --id /dev/sr0
    VPD INQUIRY: Device Identification page
      Designation descriptor number 1, descriptor length: 24
        designator_type: vendor specific [0x0],  code_set: ASCII
        associated with the addressed logical unit
          vendor specific: QM00005
      Designation descriptor number 2, descriptor length: 72
        designator_type: T10 vendor identification,  code_set: ASCII
        associated with the addressed logical unit
          vendor id: ATA
          vendor specific: QEMU DVD-ROM                            QM00005
      Designation descriptor number 3, descriptor length: 12
        designator_type: NAA,  code_set: Binary
        associated with the addressed logical unit
          NAA 5, IEEE Company_id: 0xc50
          Vendor Specific Identifier: 0x15ea71bb
          [0x5000c50015ea71bb]
    
    See also: hw/scsi/scsi-disk.c, scsi_disk_emulate_inquiry()
    Signed-off-by: NJohn Snow <jsnow@redhat.com>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    9a502563
atapi.c 37.4 KB