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
