[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
signature.asc
Description: PGP signature
- [Qemu-block] [PATCH 3/5] raw_bsd: Don't advertise flags not supported by protocol layer, (continued)
- [Qemu-block] [PATCH 3/5] raw_bsd: Don't advertise flags not supported by protocol layer, Eric Blake, 2016/06/20
- [Qemu-block] [PATCH 5/5] nbd: Drop unused offset parameter, Eric Blake, 2016/06/20
- [Qemu-block] [PATCH 2/5] block: Fragment writes to max transfer length, Eric Blake, 2016/06/20
- [Qemu-block] [PATCH 4/5] nbd: Rely on block layer to break up large requests, Eric Blake, 2016/06/20
- [Qemu-block] [PATCH 6/5] iscsi: Rely on block layer to break up large requests, Eric Blake, 2016/06/20
- Re: [Qemu-block] [Qemu-devel] [PATCH 0/5] Auto-fragment large transactions at the block layer, Eric Blake, 2016/06/21
- Re: [Qemu-block] [Qemu-devel] [PATCH 0/5] Auto-fragment large transactions at the block layer, Stefan Hajnoczi, 2016/06/21
- Re: [Qemu-block] [Qemu-devel] [PATCH 0/5] Auto-fragment large transactions at the block layer, Fam Zheng, 2016/06/22