Re: [Nbd] [RESEND][PATCH 0/5] nbd improvements

From: Alex Bligh
Date: Thu Sep 15 2016 - 08:39:22 EST



> On 15 Sep 2016, at 13:36, Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
>
> On Thu, Sep 15, 2016 at 01:33:20PM +0100, Alex Bligh wrote:
>> At an implementation level that is going to be a little difficult
>> for some NBD servers, e.g. ones that fork() a different process per
>> connection. There is in general no IPC to speak of between server
>> instances. Such servers would thus be unsafe with more than one
>> connection if FLUSH is in use.
>>
>> I believe such servers include the reference server where there is
>> process per connection (albeit possibly with several threads).
>>
>> Even single process servers (including mine - gonbdserver) would
>> require logic to pair up multiple connections to the same
>> device.
>
> Why? If you only send the completion after your I/O syscall returned
> your are fine if fsync comes from a difference process, no matter
> if you're using direct or buffered I/O underneath.

That's probably right in the case of file-based back ends that
are running on a Linux OS. But gonbdserver for instance supports
(e.g.) Ceph based backends, where each connection might be talking
to a completely separate ceph node, and there may be no cache
consistency between connections.

--
Alex Bligh