Re: [PATCH 2/3] nbd: notify userland even if nbd has already disconnected
From: Mike Christie <hidden>
Date: 2019-05-28 16:36:31
Also in:
lkml
On 05/27/2019 01:23 PM, Yao Liu wrote:
On Fri, May 24, 2019 at 09:08:58AM -0400, Josef Bacik wrote:quoted
On Fri, May 24, 2019 at 05:43:55PM +0800, Yao Liu wrote:quoted
Some nbd client implementations have a userland's daemon, so we should inform client daemon to clean up and exit. Signed-off-by: Yao Liu <redacted>Except the nbd_disconnected() check is for the case that the client told us specifically to disconnect, so we don't want to send the notification to re-connect because we've already been told we want to tear everything down. Nack to this as well. Thanks, JosefBut in userland, client daemon process and process which send disconnect command are not same process, so they are not clear to each other, so client daemon expect driver inform it to exit. In addition, client daemon will get nbd status with nbd_genl_status interface after it get notified and it should not re-connect if status connected == 0
When using the netlink interface you get the NBD_CMD_LINK_DEAD first then the configs_refs goes to zero right? nbd_disconnect_and_put -> sock_shutdown -> nbd_mark_nsock_dead then later we do the final nbd_config_put? Maybe it would be best to add a new netlink event to signal what has happened, because the above nl and stat algorithm seems like a pain. The NBD_CMD_LINK_DEAD will be sent, then userspace has to possibly poll the status to check if this was caused due to nbd_genl_disconnect instead of a downed link due to something like a command timeout, because the refcount may not be down when userspace gets the NL event. Or, I guess the admin/tool process could just send a msg to the daemon process to tell it to do the netlink disconnect request.