qemu-block
[Top][All Lists]
Advanced

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

Re: [Qemu-block] [Qemu-devel] [PATCH 0/5] Auto-fragment large transactio


From: Stefan Hajnoczi
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH 0/5] Auto-fragment large transactions at the block layer
Date: Wed, 22 Jun 2016 12:41:59 +0100
User-agent: Mutt/1.6.1 (2016-04-27)

On Tue, Jun 21, 2016 at 04:05:22PM -0600, Eric Blake wrote:
> On 06/21/2016 04:23 AM, Stefan Hajnoczi wrote:
> > On Mon, Jun 20, 2016 at 05:39:24PM -0600, Eric Blake wrote:
> >> We have max_transfer documented in BlockLimits, but while we
> >> honor it during pwrite_zeroes, we were blindly ignoring it
> >> during pwritev and preadv, leading to multiple drivers having
> >> to implement fragmentation themselves.  This series moves
> >> fragmentation to the block layer, then fixes the NBD driver to
> >> use it; if you like this but it needs a v2, you can request that
> >> I further do other drivers (I know at least iscsi and qcow2 do
> >> some self-fragmenting and/or error reporting that can be
> >> simplified by deferring fragmentation to the block layer).
> >>
> 
> > I'm concerned that requests A & B which should be atomic can now be
> > interleaved.
> > 
> > For example, two writes that are overlapping and fragmented.
> > Applications expect to either see A or B on disk when both requests have
> > completed.  Fragmentation must serialize overlapping requests in order
> > to prevent interleaved results where the application sees some of A and
> > some of B when both requests have completed.
> > 
> > A similar scenario happens when A is a read and B is a write, too.  Read
> > A is supposed to see either "before B" or "after B".  With fragmentation
> > it can see "some of before B and some of after B".
> 
> This patch series doesn't change that, it just changes where the
> atomicity is broken.

I know but I needed to clarify what the right semantics are :).

Stefan

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]