mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
blockdev-nbd: Boxed argument type for nbd-server-add
Move the arguments of nbd-server-add to a new struct BlockExportNbd and convert the command to 'boxed': true. This makes it easier to share code with the storage daemon. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20200224143008.13362-11-kwolf@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
eed8b69178
commit
c62d24e906
3 changed files with 47 additions and 27 deletions
|
@ -148,10 +148,7 @@ void qmp_nbd_server_start(SocketAddressLegacy *addr,
|
|||
qapi_free_SocketAddress(addr_flat);
|
||||
}
|
||||
|
||||
void qmp_nbd_server_add(const char *device, bool has_name, const char *name,
|
||||
bool has_description, const char *description,
|
||||
bool has_writable, bool writable,
|
||||
bool has_bitmap, const char *bitmap, Error **errp)
|
||||
void qmp_nbd_server_add(BlockExportNbd *arg, Error **errp)
|
||||
{
|
||||
BlockDriverState *bs = NULL;
|
||||
BlockBackend *on_eject_blk;
|
||||
|
@ -164,28 +161,28 @@ void qmp_nbd_server_add(const char *device, bool has_name, const char *name,
|
|||
return;
|
||||
}
|
||||
|
||||
if (!has_name) {
|
||||
name = device;
|
||||
if (!arg->has_name) {
|
||||
arg->name = arg->device;
|
||||
}
|
||||
|
||||
if (strlen(name) > NBD_MAX_STRING_SIZE) {
|
||||
error_setg(errp, "export name '%s' too long", name);
|
||||
if (strlen(arg->name) > NBD_MAX_STRING_SIZE) {
|
||||
error_setg(errp, "export name '%s' too long", arg->name);
|
||||
return;
|
||||
}
|
||||
|
||||
if (has_description && strlen(description) > NBD_MAX_STRING_SIZE) {
|
||||
error_setg(errp, "description '%s' too long", description);
|
||||
if (arg->description && strlen(arg->description) > NBD_MAX_STRING_SIZE) {
|
||||
error_setg(errp, "description '%s' too long", arg->description);
|
||||
return;
|
||||
}
|
||||
|
||||
if (nbd_export_find(name)) {
|
||||
error_setg(errp, "NBD server already has export named '%s'", name);
|
||||
if (nbd_export_find(arg->name)) {
|
||||
error_setg(errp, "NBD server already has export named '%s'", arg->name);
|
||||
return;
|
||||
}
|
||||
|
||||
on_eject_blk = blk_by_name(device);
|
||||
on_eject_blk = blk_by_name(arg->device);
|
||||
|
||||
bs = bdrv_lookup_bs(device, device, errp);
|
||||
bs = bdrv_lookup_bs(arg->device, arg->device, errp);
|
||||
if (!bs) {
|
||||
return;
|
||||
}
|
||||
|
@ -199,15 +196,15 @@ void qmp_nbd_server_add(const char *device, bool has_name, const char *name,
|
|||
goto out;
|
||||
}
|
||||
|
||||
if (!has_writable) {
|
||||
writable = false;
|
||||
if (!arg->has_writable) {
|
||||
arg->writable = false;
|
||||
}
|
||||
if (bdrv_is_read_only(bs)) {
|
||||
writable = false;
|
||||
arg->writable = false;
|
||||
}
|
||||
|
||||
exp = nbd_export_new(bs, 0, len, name, description, bitmap,
|
||||
!writable, !writable,
|
||||
exp = nbd_export_new(bs, 0, len, arg->name, arg->description, arg->bitmap,
|
||||
!arg->writable, !arg->writable,
|
||||
NULL, false, on_eject_blk, errp);
|
||||
if (!exp) {
|
||||
goto out;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue