mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
vduse-blk: Implement vduse-blk export
This implements a VDUSE block backends based on the libvduse library. We can use it to export the BDSs for both VM and container (host) usage. The new command-line syntax is: $ qemu-storage-daemon \ --blockdev file,node-name=drive0,filename=test.img \ --export vduse-blk,node-name=drive0,id=vduse-export0,writable=on After the qemu-storage-daemon started, we need to use the "vdpa" command to attach the device to vDPA bus: $ vdpa dev add name vduse-export0 mgmtdev vduse Also the device must be removed via the "vdpa" command before we stop the qemu-storage-daemon. Signed-off-by: Xie Yongji <xieyongji@bytedance.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20220523084611.91-7-xieyongji@bytedance.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
a6caeee811
commit
2a2359b844
9 changed files with 407 additions and 4 deletions
|
@ -178,6 +178,23 @@
|
|||
'*allow-other': 'FuseExportAllowOther' },
|
||||
'if': 'CONFIG_FUSE' }
|
||||
|
||||
##
|
||||
# @BlockExportOptionsVduseBlk:
|
||||
#
|
||||
# A vduse-blk block export.
|
||||
#
|
||||
# @num-queues: the number of virtqueues. Defaults to 1.
|
||||
# @queue-size: the size of virtqueue. Defaults to 256.
|
||||
# @logical-block-size: Logical block size in bytes. Range [512, PAGE_SIZE]
|
||||
# and must be power of 2. Defaults to 512 bytes.
|
||||
#
|
||||
# Since: 7.1
|
||||
##
|
||||
{ 'struct': 'BlockExportOptionsVduseBlk',
|
||||
'data': { '*num-queues': 'uint16',
|
||||
'*queue-size': 'uint16',
|
||||
'*logical-block-size': 'size'} }
|
||||
|
||||
##
|
||||
# @NbdServerAddOptions:
|
||||
#
|
||||
|
@ -284,6 +301,7 @@
|
|||
# @nbd: NBD export
|
||||
# @vhost-user-blk: vhost-user-blk export (since 5.2)
|
||||
# @fuse: FUSE export (since: 6.0)
|
||||
# @vduse-blk: vduse-blk export (since 7.1)
|
||||
#
|
||||
# Since: 4.2
|
||||
##
|
||||
|
@ -291,7 +309,8 @@
|
|||
'data': [ 'nbd',
|
||||
{ 'name': 'vhost-user-blk',
|
||||
'if': 'CONFIG_VHOST_USER_BLK_SERVER' },
|
||||
{ 'name': 'fuse', 'if': 'CONFIG_FUSE' } ] }
|
||||
{ 'name': 'fuse', 'if': 'CONFIG_FUSE' },
|
||||
{ 'name': 'vduse-blk', 'if': 'CONFIG_VDUSE_BLK_EXPORT' } ] }
|
||||
|
||||
##
|
||||
# @BlockExportOptions:
|
||||
|
@ -299,7 +318,8 @@
|
|||
# Describes a block export, i.e. how single node should be exported on an
|
||||
# external interface.
|
||||
#
|
||||
# @id: A unique identifier for the block export (across all export types)
|
||||
# @id: A unique identifier for the block export (across the host for vduse-blk
|
||||
# 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)
|
||||
#
|
||||
|
@ -335,7 +355,9 @@
|
|||
'vhost-user-blk': { 'type': 'BlockExportOptionsVhostUserBlk',
|
||||
'if': 'CONFIG_VHOST_USER_BLK_SERVER' },
|
||||
'fuse': { 'type': 'BlockExportOptionsFuse',
|
||||
'if': 'CONFIG_FUSE' }
|
||||
'if': 'CONFIG_FUSE' },
|
||||
'vduse-blk': { 'type': 'BlockExportOptionsVduseBlk',
|
||||
'if': 'CONFIG_VDUSE_BLK_EXPORT' }
|
||||
} }
|
||||
|
||||
##
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue