Re: [Nbd] [PATCH v2 4/5]nbd: make nbd device wait for its users.
- To: Wouter Verhelst <w@...112...>
- Cc: email@example.com, linux-kernel@...25...
- Subject: Re: [Nbd] [PATCH v2 4/5]nbd: make nbd device wait for its users.
- From: Pranay Srivastava <pranjas@...17...>
- Date: Wed, 15 Jun 2016 14:48:21 +0530
- Message-id: <CA+aCy1HbUjB_P=4Vj_-_ftnpAqpf4depAWQC9U8PdiS8zWF11A@...18...>
- In-reply-to: <20160615070022.GA3787@...3...>
- References: <3898019.JRqDjBPssX@...2153...> <2280543.pBfpMHAWFW@...2153...> <CA+aCy1GFV4oXDDSvQ_p_qDvWj9y71KTnfxytQZqbCrmh4f625w@...18...> <11733279.HlKjcK63G4@...2153...> <20160615070022.GA3787@...3...>
On Wed, Jun 15, 2016 at 12:30 PM, Wouter Verhelst <w@...112...> wrote:
> On Wed, Jun 15, 2016 at 08:30:45AM +0200, Markus Pargmann wrote:
>> Thanks for the explanations. I think my understanding was off by one ;)..
>> I didn't realize that the DO_IT thread from the userspace has the block
>> device open as well.
> Obviously, otherwise it couldn't do an ioctl() to it :-)
>> I thought a bit about this, does it make sense to delay the essential
>> cleanup steps until really all open file handles were closed? So that
>> even if the DO_IT thread exits, the block device is still there. Only if
>> the file is closed everything is cleaned up. Maybe this makes the code
>> simpler and we can directly use krefs without any strange constructs.
>> What do you think?
>> This would also allow the client to setup a new socket as long as it
>> does not close the nbd file handle.
> That sounds like the behaviour that I described earlier about possible
> retries for userspace...
>> Could this behavior be potentially problematic for any client
> I don't think it could, but I'm not sure I understand all the details.
> What would happen if:
> - nbd is connected from pid X, pid Y does NBD_DISCONNECT, pid X hangs
> and doesn't exit?
In that case pid X would have an error on recv if I'am correct. Then if no other
users[like mounts or other user space applications] are present for this device
then pidx would exit.
> - nbd is connected from pid X, server disconnects while pid Y is trying
> to access the device, pid X tries to reconnect but it takes a while?
Not sure what issue you see in the above case but if I understand correctly,
This should again fall in error case [Correct?] as a result of a timeout may be
if any requests were in progress. I don't think reconnect will be
without any error
thrown up user space, not so sure if both sides [server and client]
were sitting idle.
if no timeout was there then things should go OK after a successful reconnect.
Multiple processes can still access the device.
>> Does it solve our other issue with setting up a new sockets for an
>> existing nbd blockdevice?
> It could, depending.
This should be OK.
> < ron> I mean, the main *practical* problem with C++, is there's like a dozen
> people in the world who think they really understand all of its rules,
> and pretty much all of them are just lying to themselves too.
> -- #debian-devel, OFTC, 2016-02-12