diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2011-11-14 14:31:49 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-11-18 14:04:01 +0100 |
commit | 06b863577e960413466560d44e2e38eaaca1257e (patch) | |
tree | ac7a9301b88a0434487ecc9d71d1080513ef6b1f /qemu-xattr.h | |
parent | 00a01ad47ae471a88cb64ccac6ed648c5c70d5f3 (diff) |
scsi: fix parsing of allocation length field
- several MMC commands were parsed wrong by QEMU because their allocation
length/parameter list length is placed in a non-standard position in
the CDB (i.e. it is different from most commands with the same value in
bits 5-7).
- SEND VOLUME TAG length was multiplied by 40 which is not in SMC. The
parameter list length is between 32 and 40 bytes. Same for MEDIUM SCAN
(spec found at http://ldkelley.com/SCSI2/SCSI2-16.html but not in any of
the PDFs I have here).
- READ_POSITION (SSC) conflicts with PRE_FETCH (SBC). READ_POSITION's
transfer length is not hardcoded to 20 in SSC; for PRE_FETCH cmd->xfer
should be 0. Both fixed.
- FORMAT MEDIUM (the SSC name for FORMAT UNIT) was missing. The FORMAT
UNIT command is still somewhat broken for block devices because its
parameter list length is not in the CDB. However it works for CD/DVD
drives, which mandate the length of the payload.
- fixed wrong sign-extensions for 32-bit fields (for the LBA field,
this affects disks >1 TB).
- several other SBC or SSC commands were missing or parsed wrong.
- some commands were not in the list of "write" commands.
Reported-by: Thomas Schmitt <scdbackup@gmx.net>
Tested-by: Thomas Schmitt <scdbackup@gmx.net> (MMC bits only)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'qemu-xattr.h')
0 files changed, 0 insertions, 0 deletions