aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernhard Kohl <bernhard.kohl@nsn.com>2010-08-31 14:08:27 +0200
committerKevin Wolf <kwolf@redhat.com>2010-09-13 14:31:44 +0200
commite632519ab82a5f9310427e7756dba880c86386d0 (patch)
tree831fbe082f0cb3d7b40ee4264711fa7bd2775288
parentd65741acf42daffa422a2c3e77465df49e550d49 (diff)
scsi-disk: fix the check of the DBD bit in the MODE SENSE command
The DBD bit does not work as expected. SCSI-Spec: http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.2.10 "A disable block descriptors (DBD) bit of zero indicates that the target may return zero or more block descriptors in the returned MODE SENSE data (see 8.3.3), at the target's discretion. A DBD bit of one specifies that the target shall not return any block descriptors in the returned MODE SENSE data." Signed-off-by: Bernhard Kohl <bernhard.kohl@nsn.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> (cherry picked from commit 333d50fe3d9a1ff0a6a1a44ef42a0d3a2a7f2abe)
-rw-r--r--hw/scsi-disk.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 70c7a08190..b64dd31463 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -654,7 +654,7 @@ static int scsi_disk_emulate_mode_sense(SCSIRequest *req, uint8_t *outbuf)
}
bdrv_get_geometry(s->bs, &nb_sectors);
- if ((~dbd) & nb_sectors) {
+ if (!dbd && nb_sectors) {
if (req->cmd.buf[0] == MODE_SENSE) {
outbuf[3] = 8; /* Block descriptor length */
} else { /* MODE_SENSE_10 */