[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/4] scsi-disk: fix the block descriptor returne
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 4/4] scsi-disk: fix the block descriptor returned by the MODE SENSE command |
Date: |
Mon, 16 Aug 2010 19:34:32 +0200 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100720 Fedora/3.0.6-1.fc12 Thunderbird/3.0.6 |
Am 02.08.2010 17:31, schrieb Bernhard Kohl:
> The block descriptor contains the number of blocks, not the highest LBA.
> Real hard disks return 0 if the number of blocks exceed the maximum 0xFFFFFF.
>
> SCSI-Spec:
> http://ldkelley.com/SCSI2/SCSI2/SCSI2-08.html#8.3.3
> The number of blocks field specifies the number of logical blocks on the
> medium
> to which the density code and block length fields apply. A value of zero
> indicates that all of the remaining logical blocks of the logical unit shall
> have the medium characteristics specified.
>
> Signed-off-by: Bernhard Kohl <address@hidden>
> ---
> hw/scsi-disk.c | 3 +--
> 1 files changed, 1 insertions(+), 2 deletions(-)
>
> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
> index 26f7345..519513c 100644
> --- a/hw/scsi-disk.c
> +++ b/hw/scsi-disk.c
> @@ -642,9 +642,8 @@ static int scsi_disk_emulate_mode_sense(SCSIRequest *req,
> uint8_t *outbuf)
> else /* MODE_SENSE_10 */
> outbuf[7] = 8; /* Block descriptor length */
> nb_sectors /= s->cluster_size;
> - nb_sectors--;
> if (nb_sectors > 0xffffff)
> - nb_sectors = 0xffffff;
> + nb_sectors = 0;
> p[0] = 0; /* media density code */
> p[1] = (nb_sectors >> 16) & 0xff;
> p[2] = (nb_sectors >> 8) & 0xff;
The patch itself looks okay. However, it made me wonder what this line
wants to tell us:
if ((~dbd) & nb_sectors) {
Is it just me or doesn't this make any sense at all? dbd is a single
bit, 0x8 if set or 0x0 otherwise. nb_sectors is the number of sectors.
Can this operation have any meaningful result? I suppose it was meant to
be something like:
if (!dbd && nb_sectors) {
Can you please check this and add a patch 5/4 if necessary?
Kevin
- [Qemu-devel] [PATCH 0/4] scsi-disk: improve the emulation of the MODE SENSE command, Bernhard Kohl, 2010/08/02
- [Qemu-devel] [PATCH 1/4] scsi-disk: fix the mode data length field returned by the MODE SENSE command, Bernhard Kohl, 2010/08/02
- [Qemu-devel] [PATCH 2/4] scsi-disk: fix the mode data header returned by the MODE SENSE(10) command, Bernhard Kohl, 2010/08/02
- [Qemu-devel] [PATCH 3/4] scsi-disk: fix changeable values returned by the MODE SENSE command, Bernhard Kohl, 2010/08/02
- [Qemu-devel] [PATCH 4/4] scsi-disk: fix the block descriptor returned by the MODE SENSE command, Bernhard Kohl, 2010/08/02
- Re: [Qemu-devel] [PATCH 4/4] scsi-disk: fix the block descriptor returned by the MODE SENSE command,
Kevin Wolf <=
- Re: [Qemu-devel] [PATCH 0/4] scsi-disk: improve the emulation of the MODE SENSE command, Kevin Wolf, 2010/08/16