27.08.2021 18:09, Eric Blake wrote:
According to the NBD spec, a server advertising
NBD_FLAG_CAN_MULTI_CONN promises that multiple client connections will
not see any cache inconsistencies: when properly separated by a single
flush, actions performed by one client will be visible to another
client, regardless of which client did the flush.  We satisfy these
conditions in qemu because our block layer serializes any overlapping
operations (see bdrv_find_conflicting_request and friends)

Not any. We serialize only write operations not aligned to request_alignment of 
bs (see bdrv_make_request_serialising() call in bdrv_co_pwritev_part). So, 
actually most of overlapping operations remain overlapping. And that's correct: 
it's not a Qemu work to resolve overlapping requests. We resolve them only when 
we are responsible for appearing of intersection: when we align requests up.

--
Best regards,
Vladimir

Reply via email to