All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Bernhard Kohl <bernhard.kohl@nsn.com>
Cc: qemu-devel@nongnu.org
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	[thread overview]
Message-ID: <4C6976A8.3070206@redhat.com> (raw)
In-Reply-To: <1280763089-11829-5-git-send-email-bernhard.kohl@nsn.com>

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 <bernhard.kohl@nsn.com>
> ---
>  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

  reply	other threads:[~2010-08-16 17:34 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-02 15:31 [Qemu-devel] [PATCH 0/4] scsi-disk: improve the emulation of the MODE SENSE command Bernhard Kohl
2010-08-02 15:31 ` [Qemu-devel] [PATCH 1/4] scsi-disk: fix the mode data length field returned by " Bernhard Kohl
2010-08-02 15:31 ` [Qemu-devel] [PATCH 2/4] scsi-disk: fix the mode data header returned by the MODE SENSE(10) command Bernhard Kohl
2010-08-16 17:02   ` Kevin Wolf
2010-08-27 15:24     ` Bernhard Kohl
2010-08-02 15:31 ` [Qemu-devel] [PATCH 3/4] scsi-disk: fix changeable values returned by the MODE SENSE command Bernhard Kohl
2010-08-16 17:12   ` Kevin Wolf
2010-08-27 15:25     ` Bernhard Kohl
2010-08-02 15:31 ` [Qemu-devel] [PATCH 4/4] scsi-disk: fix the block descriptor " Bernhard Kohl
2010-08-16 17:34   ` Kevin Wolf [this message]
2010-08-27 15:26     ` Bernhard Kohl
2010-08-16 17:39 ` [Qemu-devel] [PATCH 0/4] scsi-disk: improve the emulation of " Kevin Wolf
2010-08-17 13:03   ` Bernhard Kohl

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4C6976A8.3070206@redhat.com \
    --to=kwolf@redhat.com \
    --cc=bernhard.kohl@nsn.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.