vduse-blk: Add name option
Currently we use 'id' option as the name of VDUSE device. It's a bit confusing since we use one value for two different purposes: the ID to identfy the export within QEMU (must be distinct from any other exports in the same QEMU process, but can overlap with names used by other processes), and the VDUSE name to uniquely identify it on the host (must be distinct from other VDUSE devices on the same host, but can overlap with other export types like NBD in the same process). To make it clear, this patch adds a separate 'name' option to specify the VDUSE name for the vduse-blk export instead. Signed-off-by: Xie Yongji <xieyongji@bytedance.com> Message-Id: <20220614051532.92-7-xieyongji@bytedance.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
0862a087fd
commit
779d82e1d3
@ -300,7 +300,7 @@ static int vduse_blk_exp_create(BlockExport *exp, BlockExportOptions *opts,
|
|||||||
features |= 1ULL << VIRTIO_BLK_F_RO;
|
features |= 1ULL << VIRTIO_BLK_F_RO;
|
||||||
}
|
}
|
||||||
|
|
||||||
vblk_exp->dev = vduse_dev_create(exp->id, VIRTIO_ID_BLOCK, 0,
|
vblk_exp->dev = vduse_dev_create(vblk_opts->name, VIRTIO_ID_BLOCK, 0,
|
||||||
features, num_queues,
|
features, num_queues,
|
||||||
sizeof(struct virtio_blk_config),
|
sizeof(struct virtio_blk_config),
|
||||||
(char *)&config, &vduse_blk_ops,
|
(char *)&config, &vduse_blk_ops,
|
||||||
@ -312,7 +312,7 @@ static int vduse_blk_exp_create(BlockExport *exp, BlockExportOptions *opts,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vblk_exp->recon_file = g_strdup_printf("%s/vduse-blk-%s",
|
vblk_exp->recon_file = g_strdup_printf("%s/vduse-blk-%s",
|
||||||
g_get_tmp_dir(), exp->id);
|
g_get_tmp_dir(), vblk_opts->name);
|
||||||
if (vduse_set_reconnect_log_file(vblk_exp->dev, vblk_exp->recon_file)) {
|
if (vduse_set_reconnect_log_file(vblk_exp->dev, vblk_exp->recon_file)) {
|
||||||
error_setg(errp, "failed to set reconnect log file");
|
error_setg(errp, "failed to set reconnect log file");
|
||||||
ret = -EINVAL;
|
ret = -EINVAL;
|
||||||
|
@ -77,7 +77,7 @@ Standard options:
|
|||||||
--export [type=]vhost-user-blk,id=<id>,node-name=<node-name>,addr.type=unix,addr.path=<socket-path>[,writable=on|off][,logical-block-size=<block-size>][,num-queues=<num-queues>]
|
--export [type=]vhost-user-blk,id=<id>,node-name=<node-name>,addr.type=unix,addr.path=<socket-path>[,writable=on|off][,logical-block-size=<block-size>][,num-queues=<num-queues>]
|
||||||
--export [type=]vhost-user-blk,id=<id>,node-name=<node-name>,addr.type=fd,addr.str=<fd>[,writable=on|off][,logical-block-size=<block-size>][,num-queues=<num-queues>]
|
--export [type=]vhost-user-blk,id=<id>,node-name=<node-name>,addr.type=fd,addr.str=<fd>[,writable=on|off][,logical-block-size=<block-size>][,num-queues=<num-queues>]
|
||||||
--export [type=]fuse,id=<id>,node-name=<node-name>,mountpoint=<file>[,growable=on|off][,writable=on|off][,allow-other=on|off|auto]
|
--export [type=]fuse,id=<id>,node-name=<node-name>,mountpoint=<file>[,growable=on|off][,writable=on|off][,allow-other=on|off|auto]
|
||||||
--export [type=]vduse-blk,id=<id>,node-name=<node-name>[,writable=on|off][,num-queues=<num-queues>][,queue-size=<queue-size>][,logical-block-size=<block-size>][,serial=<serial-number>]
|
--export [type=]vduse-blk,id=<id>,node-name=<node-name>,name=<vduse-name>[,writable=on|off][,num-queues=<num-queues>][,queue-size=<queue-size>][,logical-block-size=<block-size>][,serial=<serial-number>]
|
||||||
|
|
||||||
is a block export definition. ``node-name`` is the block node that should be
|
is a block export definition. ``node-name`` is the block node that should be
|
||||||
exported. ``writable`` determines whether or not the export allows write
|
exported. ``writable`` determines whether or not the export allows write
|
||||||
@ -111,7 +111,8 @@ Standard options:
|
|||||||
``allow-other`` to auto (the default) will try enabling this option, and on
|
``allow-other`` to auto (the default) will try enabling this option, and on
|
||||||
error fall back to disabling it.
|
error fall back to disabling it.
|
||||||
|
|
||||||
The ``vduse-blk`` export type uses the ``id`` as the VDUSE device name.
|
The ``vduse-blk`` export type takes a ``name`` (must be unique across the host)
|
||||||
|
to create the VDUSE device.
|
||||||
``num-queues`` sets the number of virtqueues (the default is 1).
|
``num-queues`` sets the number of virtqueues (the default is 1).
|
||||||
``queue-size`` sets the virtqueue descriptor table size (the default is 256).
|
``queue-size`` sets the virtqueue descriptor table size (the default is 256).
|
||||||
|
|
||||||
|
@ -183,6 +183,7 @@
|
|||||||
#
|
#
|
||||||
# A vduse-blk block export.
|
# A vduse-blk block export.
|
||||||
#
|
#
|
||||||
|
# @name: the name of VDUSE device (must be unique across the host).
|
||||||
# @num-queues: the number of virtqueues. Defaults to 1.
|
# @num-queues: the number of virtqueues. Defaults to 1.
|
||||||
# @queue-size: the size of virtqueue. Defaults to 256.
|
# @queue-size: the size of virtqueue. Defaults to 256.
|
||||||
# @logical-block-size: Logical block size in bytes. Range [512, PAGE_SIZE]
|
# @logical-block-size: Logical block size in bytes. Range [512, PAGE_SIZE]
|
||||||
@ -192,7 +193,8 @@
|
|||||||
# Since: 7.1
|
# Since: 7.1
|
||||||
##
|
##
|
||||||
{ 'struct': 'BlockExportOptionsVduseBlk',
|
{ 'struct': 'BlockExportOptionsVduseBlk',
|
||||||
'data': { '*num-queues': 'uint16',
|
'data': { 'name': 'str',
|
||||||
|
'*num-queues': 'uint16',
|
||||||
'*queue-size': 'uint16',
|
'*queue-size': 'uint16',
|
||||||
'*logical-block-size': 'size',
|
'*logical-block-size': 'size',
|
||||||
'*serial': 'str' } }
|
'*serial': 'str' } }
|
||||||
@ -320,8 +322,7 @@
|
|||||||
# Describes a block export, i.e. how single node should be exported on an
|
# Describes a block export, i.e. how single node should be exported on an
|
||||||
# external interface.
|
# external interface.
|
||||||
#
|
#
|
||||||
# @id: A unique identifier for the block export (across the host for vduse-blk
|
# @id: A unique identifier for the block export (across all export types)
|
||||||
# export type or across all export types for other types)
|
|
||||||
#
|
#
|
||||||
# @node-name: The node name of the block node to be exported (since: 5.2)
|
# @node-name: The node name of the block node to be exported (since: 5.2)
|
||||||
#
|
#
|
||||||
|
@ -123,12 +123,12 @@ static void help(void)
|
|||||||
#endif /* CONFIG_VHOST_USER_BLK_SERVER */
|
#endif /* CONFIG_VHOST_USER_BLK_SERVER */
|
||||||
#ifdef CONFIG_VDUSE_BLK_EXPORT
|
#ifdef CONFIG_VDUSE_BLK_EXPORT
|
||||||
" --export [type=]vduse-blk,id=<id>,node-name=<node-name>\n"
|
" --export [type=]vduse-blk,id=<id>,node-name=<node-name>\n"
|
||||||
" [,writable=on|off][,num-queues=<num-queues>]\n"
|
" ,name=<vduse-name>[,writable=on|off]\n"
|
||||||
" [,queue-size=<queue-size>]\n"
|
" [,num-queues=<num-queues>][,queue-size=<queue-size>]\n"
|
||||||
" [,logical-block-size=<logical-block-size>]\n"
|
" [,logical-block-size=<logical-block-size>]\n"
|
||||||
" [,serial=<serial-number>]\n"
|
" [,serial=<serial-number>]\n"
|
||||||
" export the specified block node as a vduse-blk\n"
|
" export the specified block node as a\n"
|
||||||
" device using the id as the VDUSE device name\n"
|
" vduse-blk device\n"
|
||||||
"\n"
|
"\n"
|
||||||
#endif /* CONFIG_VDUSE_BLK_EXPORT */
|
#endif /* CONFIG_VDUSE_BLK_EXPORT */
|
||||||
" --monitor [chardev=]name[,mode=control][,pretty[=on|off]]\n"
|
" --monitor [chardev=]name[,mode=control][,pretty[=on|off]]\n"
|
||||||
|
Loading…
Reference in New Issue
Block a user