All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>,
	kvm-devel <kvm@vger.kernel.org>,
	qemu-devel <qemu-devel@nongnu.org>,
	Hannes Reinecke <hare@suse.de>, Christoph Hellwig <hch@lst.de>,
	Paul Brook <paul@codesourcery.com>
Subject: Re: [Qemu-devel] Re: [PATCH 1/2] [scsi-bus]: Add PR-OUT and PR-IN case for SCSIRequest xfer and xfer_mode setup
Date: Wed, 16 Jun 2010 15:23:17 +0200	[thread overview]
Message-ID: <4C18D045.8040804@redhat.com> (raw)
In-Reply-To: <1276693799.12514.226.camel@haakon2.linux-iscsi.org>

Am 16.06.2010 15:09, schrieb Nicholas A. Bellinger:
> On Wed, 2010-06-16 at 06:03 -0700, Nicholas A. Bellinger wrote:
>> On Wed, 2010-06-16 at 14:13 +0200, Kevin Wolf wrote:
>>> Am 04.06.2010 16:06, schrieb Kevin Wolf:
>>>> Am 31.05.2010 03:43, schrieb Nicholas A. Bellinger:
>>>>> From: Nicholas Bellinger <nab@linux-iscsi.org>
>>>>>
>>>>> This patch updates hw/scsi-bus.c to add PERSISTENT_RESERVE_OUT and PERSISTENT_RESERVE_IN
>>>>> case in scsi_req_length() to extra the incoming buffer length into SCSIRequest->cmd.xfer,
>>>>> and adds a second PERSISTENT_RESERVE_OUT case in scsi_req_xfer_mode() in order to properly
>>>>> set SCSI_XFER_TO_DEV for WRITE data.
>>>>>
>>>>> Tested with Linux KVM guests and Megasas 8708EM2 HBA emulation and TCM_Loop target ports.
>>>>>
>>>>> Signed-off-by: Nicholas A. Bellinger <nab@linux-iscsi.org>
>>>>> ---
>>>>>  hw/scsi-bus.c |    5 +++++
>>>>>  1 files changed, 5 insertions(+), 0 deletions(-)
>>>>>
>>>>> diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
>>>>> index b8e4b71..75ec74e 100644
>>>>> --- a/hw/scsi-bus.c
>>>>> +++ b/hw/scsi-bus.c
>>>>> @@ -325,6 +325,10 @@ static int scsi_req_length(SCSIRequest *req, uint8_t *cmd)
>>>>>      case INQUIRY:
>>>>>          req->cmd.xfer = cmd[4] | (cmd[3] << 8);
>>>>>          break;
>>>>> +    case PERSISTENT_RESERVE_OUT:
>>>>> +    case PERSISTENT_RESERVE_IN:
>>>>> +        req->cmd.xfer = cmd[8] | (cmd[7] << 8);
>>>>
>>>> Maybe I'm missing something, but isn't exactly the same value set in the
>>>> switch block above? (for cmd[0] >> 5 == 2)
>>>
>>> Nicholas? This isn't applied yet because I'm waiting for your answer.
>>>
>>> Is there a reason why it makes sense to do it explicitly here instead
>>> using the generic code a few lines above? I think the same applied to
>>> patch 2/2.
>>
>> Hi Kevin,
>>
>> I just tested this again and you are correct, the reassignment of
>> req->cmd.xfer for PR and Maintence CDBs is unnecessary in
>> scsi_req_length().  I will go ahead and drop part this from my tree.
>>
>> Please let me know if you would like me to resend the patch series.
>>
> 
> Actually, I should mention that I have only tested this with TYPE_DISK
> so far.  I think we do still need the Maintenance CDBs length
> reassignment for MMC and TYPE_ROM from the second patch:
> 
> diff --git a/hw/scsi-bus.c b/hw/scsi-bus.c
> index 75ec74e..7d80405 100644
> --- a/hw/scsi-bus.c
> +++ b/hw/scsi-bus.c
> @@ -329,6 +329,17 @@ static int scsi_req_length(SCSIRequest *req, uint8_t *cmd)
>      case PERSISTENT_RESERVE_IN:
>          req->cmd.xfer = cmd[8] | (cmd[7] << 8);
>          break;
> +    case MAINTENANCE_OUT:
> +    case MAINTENANCE_IN:
> +        if (req->dev->type != TYPE_ROM) {
> +            /* Used for MI_REPORT_TARGET_PGS, MO_SET_TARGET_PGS et al. */
> +            req->cmd.xfer = cmd[9] | (cmd[8] << 8) |
> +                            (cmd[7] << 16) | (cmd[6] << 24);
> +        } else {
> +            /* GPCMD_REPORT_KEY and GPCMD_SEND_KEY from multi media commands */
> +            req->cmd.xfer = cmd[9] | (cmd[8] << 8);
> +        }
> +        break;
>      }
> 
> Do you have a problem with leaving this reassignment in for TYPE_ROM..?

In a place where it's different from what was set above, I'm not against
it. I just wanted to reduce some code duplication.

Kevin

      reply	other threads:[~2010-06-16 13:23 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-31  1:43 [PATCH 1/2] [scsi-bus]: Add PR-OUT and PR-IN case for SCSIRequest xfer and xfer_mode setup Nicholas A. Bellinger
2010-05-31  1:43 ` [Qemu-devel] " Nicholas A. Bellinger
2010-06-04 14:06 ` Kevin Wolf
2010-06-04 14:06   ` [Qemu-devel] " Kevin Wolf
2010-06-16 12:13   ` Kevin Wolf
2010-06-16 13:03     ` Nicholas A. Bellinger
2010-06-16 13:08       ` Kevin Wolf
2010-06-16 13:09       ` Nicholas A. Bellinger
2010-06-16 13:23         ` Kevin Wolf [this message]

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=4C18D045.8040804@redhat.com \
    --to=kwolf@redhat.com \
    --cc=hare@suse.de \
    --cc=hch@lst.de \
    --cc=kraxel@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=nab@linux-iscsi.org \
    --cc=paul@codesourcery.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.