On Tue, May 28, 2019 at 02:23:23AM +0800, Yao Liu wrote: > On Fri, May 24, 2019 at 09:08:58AM -0400, Josef Bacik wrote: > > On Fri, May 24, 2019 at 05:43:55PM +0800, Yao Liu wrote: > > > 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 <yotta.liu@xxxxxxxxx> > > > > 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, > > > > Josef > > > > But 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 Right this is the point. The daemon is dumb, if it gets a disconnected message it'll try to reconnect, so we don't want to send a disconnected message if we were specifically told to disconnect. We don't want to rely on userspace to try and manage this weird state machine. If you want userland to know its time to disconnect then have your implementation handle being told to disconnect and handle all the things. Thanks, Josef