summaryrefslogtreecommitdiffstats
path: root/block/export
diff options
context:
space:
mode:
authorKevin Wolf2020-09-24 17:26:58 +0200
committerKevin Wolf2020-10-02 15:46:40 +0200
commitdbc9e94a23dfdebe3bd610165d25ca080e705455 (patch)
tree817d74f1893288ad42040702d84f98dcacef20dd /block/export
parentqemu-nbd: Use blk_exp_add() to create the export (diff)
downloadqemu-dbc9e94a23dfdebe3bd610165d25ca080e705455.tar.gz
qemu-dbc9e94a23dfdebe3bd610165d25ca080e705455.tar.xz
qemu-dbc9e94a23dfdebe3bd610165d25ca080e705455.zip
nbd/server: Simplify export shutdown
Closing export is somewhat convoluted because nbd_export_close() and nbd_export_put() call each other and the ways they actually end up being nested is not necessarily obvious. However, it is not really necessary to call nbd_export_close() from nbd_export_put() when putting the last reference because it only does three things: 1. Close all clients. We're going to refcount 0 and all clients hold a reference, so we know there is no active client any more. 2. Close the user reference (represented by exp->name being non-NULL). The same argument applies: If the export were still named, we would still have a reference. 3. Freeing exp->description. This is really cleanup work to be done when the export is finally freed. There is no reason to already clear it while clients are still in the process of shutting down. So after moving the cleanup of exp->description, the code can be simplified so that only nbd_export_close() calls nbd_export_put(), but never the other way around. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20200924152717.287415-13-kwolf@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/export')
0 files changed, 0 insertions, 0 deletions