summary refs log tree commit diff stats
path: root/include
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2019-01-11 13:47:19 -0600
committerEric Blake <eblake@redhat.com>2019-01-14 10:09:46 -0600
commit678ba275c77b5b12f3bc9bb369a1b824fc9f679f (patch)
tree9421848ee26b56cfb7a30eaff385d7f621152dd4 /include
parent7dc570b3806e5b0a4c9219061556ed5a4a0de80c (diff)
downloadfocaccia-qemu-678ba275c77b5b12f3bc9bb369a1b824fc9f679f.tar.gz
focaccia-qemu-678ba275c77b5b12f3bc9bb369a1b824fc9f679f.zip
nbd: Merge nbd_export_bitmap into nbd_export_new
We only have one caller that wants to export a bitmap name,
which it does right after creation of the export. But there is
still a brief window of time where an NBD client could see the
export but not the dirty bitmap, which a robust client would
have to interpret as meaning the entire image should be treated
as dirty.  Better is to eliminate the window entirely, by
inlining nbd_export_bitmap() into nbd_export_new(), and refusing
to create the bitmap in the first place if the requested bitmap
can't be located.

We also no longer need logic for setting a different bitmap
name compared to the bitmap being exported.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20190111194720.15671-8-eblake@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/block/nbd.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/include/block/nbd.h b/include/block/nbd.h
index 2f9a2aeb73..1971b55789 100644
--- a/include/block/nbd.h
+++ b/include/block/nbd.h
@@ -296,9 +296,9 @@ typedef struct NBDClient NBDClient;
 
 NBDExport *nbd_export_new(BlockDriverState *bs, off_t dev_offset, off_t size,
                           const char *name, const char *description,
-                          uint16_t nbdflags, void (*close)(NBDExport *),
-                          bool writethrough, BlockBackend *on_eject_blk,
-                          Error **errp);
+                          const char *bitmap, uint16_t nbdflags,
+                          void (*close)(NBDExport *), bool writethrough,
+                          BlockBackend *on_eject_blk, Error **errp);
 void nbd_export_close(NBDExport *exp);
 void nbd_export_remove(NBDExport *exp, NbdServerRemoveMode mode, Error **errp);
 void nbd_export_get(NBDExport *exp);
@@ -319,9 +319,6 @@ void nbd_client_put(NBDClient *client);
 void nbd_server_start(SocketAddress *addr, const char *tls_creds,
                       Error **errp);
 
-void nbd_export_bitmap(NBDExport *exp, const char *bitmap,
-                       const char *bitmap_export_name, Error **errp);
-
 /* nbd_read
  * Reads @size bytes from @ioc. Returns 0 on success.
  */