[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 0/2] xen-block: fix sector size confusion



> -----Original Message-----
> From: Andrew Cooper
> Sent: 28 March 2019 11:46
> To: Anthony Perard <anthony.perard@xxxxxxxxxx>; Paul Durrant 
> <Paul.Durrant@xxxxxxxxxx>
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; qemu-block@xxxxxxxxxx; 
> qemu-devel@xxxxxxxxxx; Kevin Wolf
> <kwolf@xxxxxxxxxx>; Stefano Stabellini <sstabellini@xxxxxxxxxx>; Max Reitz 
> <mreitz@xxxxxxxxxx>; Stefan
> Hajnoczi <stefanha@xxxxxxxxxx>
> Subject: Re: [Xen-devel] [PATCH v2 0/2] xen-block: fix sector size confusion
> 
> On 28/03/2019 11:40, Anthony PERARD wrote:
> > On Wed, Mar 27, 2019 at 08:32:28PM +0000, Paul Durrant wrote:
> >>> -----Original Message-----
> >>> From: Andrew Cooper
> >>> Sent: 27 March 2019 18:20
> >>> To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>; 
> >>> xen-devel@xxxxxxxxxxxxxxxxxxxx; qemu-block@xxxxxxxxxx;
> >>> qemu-devel@xxxxxxxxxx
> >>> Cc: Kevin Wolf <kwolf@xxxxxxxxxx>; Stefano Stabellini 
> >>> <sstabellini@xxxxxxxxxx>; Max Reitz
> >>> <mreitz@xxxxxxxxxx>; Stefan Hajnoczi <stefanha@xxxxxxxxxx>; Anthony Perard
> <anthony.perard@xxxxxxxxxx>
> >>> Subject: Re: [Xen-devel] [PATCH v2 0/2] xen-block: fix sector size 
> >>> confusion
> >>>
> >>> On 27/03/2019 17:32, Paul Durrant wrote:
> >>>> The Xen blkif protocol is confusing but discussion with the maintainer
> >>>> has clarified that sector based quantities in requests and the 'sectors'
> >>>> value advertized in xenstore should always be in terms of 512-byte
> >>>> units and not the advertised logical 'sector-size' value.
> >>>>
> >>>> This series fixes xen-block to adhere to the spec.
> >>> I thought we agreed that hardcoding things to 512 bytes was the wrong
> >>> thing to do.
> >> To some extent we decided it was the *only* thing to do.
> >>
> >>> I was expecting something like:
> >>>
> >>> 1) Clarify the spec with the intended meaning, (which is what some
> >>> implementations actually use already) and wont cripple 4k datapaths.
> >>> 2) Introduce a compatibility key for "I don't rely on sector-size being
> >>> 512", which fixed implementations should advertise.
> >>> 3) Specify that because of bugs in the spec which got out into the wild,
> >>> drivers which don't find the key being advertised by the other end
> >>> should emulate sector-size=512 for compatibility with broken
> >>> implementations.
> >> Yes, that's how we are going to fix things.
> >>
> >>> Whatever the eventual way out, the first thing which needs to happen is
> >>> an update to the spec, before actions are taken to alter existing
> >>> implementations.
> >> Well the implementation is currently wrong w.r.t. the spec and these 
> >> patches fix that. As long as
> sector-size remains at 512 then no existing frontend should break, so I guess 
> you could argue that
> patch #2 should also make sure that sector-size is also 512... but that is 
> not yet in the spec.
> >> I guess I'm ok to defer patch #2 until a revised spec. is agreed, but the 
> >> ship has already sailed
> as far as patch #1 goes.
> >>
> >> Anthony, thoughts?
> > So QEMU used to always set "sector-size" to 512, and used that for
> > request. The new implementation (not released yet) doesn't do that
> > anymore, and may set "sector-size" to a different value and used that
> > for requests.
> >
> > patch #1 is one way to fix the requests (and avoid regression) and
> > more clearly spell out the weird thing about the spec.
> >
> > I also think patch #2 is too soon and should point to a commit in
> > xen.git instead of a thread on xen-devel.
> >
> > In the meantime, we should probably set "sector-size" to 512, like QEMU
> > used to do anyway, with a comment about the fact that different
> > implementations uses sector-size differently and a value of 512 would
> > work fine.
> 
> Hmm - I hadn't realised this is an unreleased issue in qemu.
> 
> So, Qemu used to unconditionally set sector-size=512, and your work to
> qdev-ify everything introduced a change which has identified a
> spec/protocol issue?

Basically, yes. I had not realized at the time how bad the spec. is. I was 
referring to prevailing implementations, which seemed to use sector-size as the 
multiple and, in the Windows case, appear to cope with a logical sector size 
other than 512.
Given what I know now, fixing sector-size to be 512 seems like the only way to 
avoid regressions.

> 
> If so, then I think it is fine for this series to state (much more
> clearly than it does) that it is returning qemu's behaviour to match the
> currently released version, because we've discovered an issue in the
> spec/protocol, and that we will subsequently work address the issue in
> the spec and provide a forwards path which doesn't involve nailing our
> feet to the floor.

Ok, I'll expand the commit comment and state that the spec. will be revised to 
allow greater logical block sizes.

  Paul

> 
> ~Andrew
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.