From: John Snow <jsnow@redhat.com>
To: Zhu Lingshan <lszhu@suse.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>, Peter Lieven <pl@kamp.de>,
qemu-block@nongnu.org, ronnie sahlberg <ronniesahlberg@gmail.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH] send readcapacity10 when readcapacity16 failed
Date: Wed, 6 Jan 2016 12:57:01 -0500 [thread overview]
Message-ID: <568D556D.2090408@redhat.com> (raw)
In-Reply-To: <CAN05THRbm2pA8i-RBKGYupx9p0usvDT_Pk7UDFGvKFrt75vnbA@mail.gmail.com>
On 01/05/2016 02:57 PM, ronnie sahlberg wrote:
> MMC devices:
> READ CAPACITY 10 support is mandatory.
> No support for READ CAPACITY 16
>
> SBC devices:
> READ CAPACITY 10 is mandatory
> READ CAPACITY 16 support is only required when you have thin
> provisioning or protection information (or if the device is >2^32 blocks)
> Almost all, but apparently not all, SBC devices support both.
>
>
> For SBC devices you probably want to start with RC16 and only fallback
> to RC10 if you get INVALID_OPCODE.
> You start with RC16 since this is the way to discover if you have thin
> provisioning or special protection information.
>
> For MMC devices you could try the "try RC16 first and fallback to RC10"
> but as probably almost no MMC devices support RC16 it makes little sense
> to do so.
>
>
Ronnie: Thanks for the explanation!
Zhu: In light of this, can the patch be reworked slightly to explicitly
check *why* READCAPACITY16 failed and only attempt the READCAPACITY10 as
a fallback if it receives INVALID_OPCODE?
If it fails for any other reason it's probably best to report the error
and let QEMU decide what to do about it.
I suppose caching a flag that lets us know to go straight to
READ_CAPACITY10 is not worthwhile because this command is not likely to
be issued very often.
Thanks,
--js
>
> On Tue, Jan 5, 2016 at 11:42 AM, John Snow <jsnow@redhat.com
> <mailto:jsnow@redhat.com>> wrote:
>
>
>
> On 12/28/2015 10:32 PM, Zhu Lingshan wrote:
> > When play with Dell MD3000 target, for sure it
> > is a TYPE_DISK, but readcapacity16 would fail.
> > Then we find that readcapacity10 succeeded. It
> > looks like the target just support readcapacity10
> > even through it is a TYPE_DISK or have some
> > TYPE_ROM characteristics.
> >
> > This patch can give a chance to send
> > readcapacity16 when readcapacity10 failed.
> > This patch is not harmful to original pathes
> >
> > Signed-off-by: Zhu Lingshan <lszhu@suse.com <mailto:lszhu@suse.com>>
> > ---
> > block/iscsi.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/block/iscsi.c b/block/iscsi.c
> > index bd1f1bf..c8d167f 100644
> > --- a/block/iscsi.c
> > +++ b/block/iscsi.c
> > @@ -1243,8 +1243,9 @@ static void iscsi_readcapacity_sync(IscsiLun
> *iscsilun, Error **errp)
> > iscsilun->lbprz = !!rc16->lbprz;
> > iscsilun->use_16_for_rw = (rc16->returned_lba
> > 0xffffffff);
> > }
> > + break;
> > }
> > - break;
> > + //fall through to try readcapacity10 instead
> > case TYPE_ROM:
> > task = iscsi_readcapacity10_sync(iscsilun->iscsi,
> iscsilun->lun, 0, 0);
> > if (task != NULL && task->status == SCSI_STATUS_GOOD) {
> >
>
> For the uninitiated, why does readcapacity16 fail?
>
> My gut feeling is that this is a hack, because:
>
> - Either readcapacity16 should work, or
> - We shouldn't be choosing 10/16 based on the target type to begin with
>
> but I don't know much about iSCSI, so maybe You, Paolo or Peter could
> fill me in.
>
> --js
>
>
next prev parent reply other threads:[~2016-01-06 17:57 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-29 3:32 [Qemu-devel] [PATCH] send readcapacity10 when readcapacity16 failed Zhu Lingshan
2016-01-05 19:42 ` [Qemu-devel] [Qemu-block] " John Snow
2016-01-05 19:57 ` ronnie sahlberg
2016-01-06 17:57 ` John Snow [this message]
2016-01-07 10:07 ` Paolo Bonzini
2016-01-11 8:49 ` Peter Lieven
2016-01-11 9:46 ` Paolo Bonzini
2016-01-07 10:08 ` [Qemu-devel] " Paolo Bonzini
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=568D556D.2090408@redhat.com \
--to=jsnow@redhat.com \
--cc=lszhu@suse.com \
--cc=pbonzini@redhat.com \
--cc=pl@kamp.de \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=ronniesahlberg@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).