Block layer patches:

- Add qemu-storage-daemon documentation
 - hw/block/nand: Decommission the NAND museum
 - vpc: Clean up some buffer abuse
 - nfs: fix int overflow in nfs_client_open_qdict
 - Several iotests fixes
 -----BEGIN PGP SIGNATURE-----
 
 iQJFBAABCAAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAl/cm4IRHGt3b2xmQHJl
 ZGhhdC5jb20ACgkQfwmycsiPL9Ynyg//Vj9UWW9BbdbaHNMFTcFmJkCqd2Qiugwt
 1u5TubQzniEVjiVtWd2y7m90XqT2Py6OolbUk4kJzyNZjlyEQukHkpSQDLZXcn+r
 PtO7j4/7xeZtBOATC89MP9YsofQwkxcI9i3esFjRZ2VuCwcWpvl2GeZ23So2WJAQ
 yuk/oWljnWq43vAf5WAJF+CrxsNjHqD5xALWlhT3K6gOQdrUpAjdoREiL9KuZSTW
 H2nXtlPsfq4099DjkbZmfoxdsc3PQh+8d6ILiEftqXlufvQBNHMwNS1PsCkM8M2h
 +9wF0KAcOf+sTih7H7rnphDxiW5bRUDrqSxxn5q1VTC7jkQ+8H9suM7w5D4Zx36Z
 MTeHY+95koNOIedSjS7r8N75RhT2mjOBYPT2Zg+CmDxtEGV9E9BvTUaerbZRGu1F
 7kVJC8nuqoxnmeMBX4I2HSYooYsvXgHBfPGRr/5xk2HXBk2Hfw4COcX8Pa7UGjVA
 0vR4mq9Y/tzGgt1KtEut9U9xiAa1ExcABTRD98C7oB0Xy8+3wtz7Gp4LYNhoS/So
 bBG9kcbXsG8f3khY/rW2oogUWdlbbbkb5W2R5jLsbwMabSxTGchQ3B63ZloPnZ54
 Xyicvc+URNk6z3O8KBmRzrfSHhahzmLXlzsQHpe4ljf5CM0AQTCIZ/201ybk6XWf
 uRil/jj/fDI=
 =yLZI
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- Add qemu-storage-daemon documentation
- hw/block/nand: Decommission the NAND museum
- vpc: Clean up some buffer abuse
- nfs: fix int overflow in nfs_client_open_qdict
- Several iotests fixes

# gpg: Signature made Fri 18 Dec 2020 12:07:30 GMT
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "kwolf@redhat.com"
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream:
  block/vpc: Use sizeof() instead of HEADER_SIZE for footer size
  block/vpc: Pass footer buffers as VHDFooter * instead of uint8_t *
  block/vpc: Pad VHDFooter, replace uint8_t[] buffers
  block/vpc: Use sizeof() instead of 1024 for dynamic header size
  block/vpc: Pad VHDDynDiskHeader, replace uint8_t[] buffers
  block/vpc: Make vpc_checksum() take void *
  block/vpc: Don't abuse the footer buffer for dynamic header
  block/vpc: Don't abuse the footer buffer as BAT sector buffer
  block/vpc: Make vpc_open() read the full dynamic header
  iotests:172: use _filter_qom_path
  iotests: make _filter_qom_path more strict
  MAINTAINERS: add Kevin Wolf as storage daemon maintainer
  docs: add qemu-storage-daemon(1) man page
  docs: generate qemu-storage-daemon-qmp-ref(7) man page
  block/nfs: fix int overflow in nfs_client_open_qdict
  hw/block/nand: Decommission the NAND museum
  iotests/210: Fix reference output

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-12-31 19:16:13 +00:00
commit c7e48f9165
17 changed files with 361 additions and 193 deletions

View File

@ -2165,6 +2165,15 @@ F: qobject/block-qdict.c
F: tests/check-block-qdict.c
T: git https://repo.or.cz/qemu/kevin.git block
Storage daemon
M: Kevin Wolf <kwolf@redhat.com>
L: qemu-block@nongnu.org
S: Supported
F: storage-daemon/
F: docs/interop/qemu-storage-daemon-qmp-ref.rst
F: docs/tools/qemu-storage-daemon.rst
T: git https://repo.or.cz/qemu/kevin.git block
Block I/O path
M: Stefan Hajnoczi <stefanha@redhat.com>
M: Fam Zheng <fam@euphon.net>

View File

@ -592,7 +592,7 @@ static int64_t nfs_client_open_qdict(NFSClient *client, QDict *options,
int flags, int open_flags, Error **errp)
{
BlockdevOptionsNfs *opts;
int ret;
int64_t ret;
opts = nfs_options_qdict_to_qapi(options, errp);
if (opts == NULL) {

View File

@ -39,8 +39,6 @@
/**************************************************************/
#define HEADER_SIZE 512
//#define CACHE
enum vhd_type {
@ -95,8 +93,11 @@ typedef struct vhd_footer {
QemuUUID uuid;
uint8_t in_saved_state;
uint8_t reserved[427];
} QEMU_PACKED VHDFooter;
QEMU_BUILD_BUG_ON(sizeof(VHDFooter) != 512);
typedef struct vhd_dyndisk_header {
char magic[8]; /* "cxsparse" */
@ -127,11 +128,14 @@ typedef struct vhd_dyndisk_header {
uint32_t reserved;
uint64_t data_offset;
} parent_locator[8];
uint8_t reserved2[256];
} QEMU_PACKED VHDDynDiskHeader;
QEMU_BUILD_BUG_ON(sizeof(VHDDynDiskHeader) != 1024);
typedef struct BDRVVPCState {
CoMutex lock;
uint8_t footer_buf[HEADER_SIZE];
VHDFooter footer;
uint64_t free_data_block_offset;
int max_table_entries;
uint32_t *pagetable;
@ -172,8 +176,9 @@ static QemuOptsList vpc_runtime_opts = {
static QemuOptsList vpc_create_opts;
static uint32_t vpc_checksum(uint8_t *buf, size_t size)
static uint32_t vpc_checksum(void *p, size_t size)
{
uint8_t *buf = p;
uint32_t res = 0;
int i;
@ -216,11 +221,10 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
BDRVVPCState *s = bs->opaque;
int i;
VHDFooter *footer;
VHDDynDiskHeader *dyndisk_header;
QemuOpts *opts = NULL;
Error *local_err = NULL;
bool use_chs;
uint8_t buf[HEADER_SIZE];
VHDDynDiskHeader dyndisk_header;
uint32_t checksum;
uint64_t computed_size;
uint64_t pagetable_size;
@ -247,28 +251,28 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
goto fail;
}
ret = bdrv_pread(bs->file, 0, s->footer_buf, HEADER_SIZE);
ret = bdrv_pread(bs->file, 0, &s->footer, sizeof(s->footer));
if (ret < 0) {
error_setg(errp, "Unable to read VHD header");
goto fail;
}
footer = (VHDFooter *) s->footer_buf;
footer = &s->footer;
if (strncmp(footer->creator, "conectix", 8)) {
int64_t offset = bdrv_getlength(bs->file->bs);
if (offset < 0) {
ret = offset;
error_setg(errp, "Invalid file size");
goto fail;
} else if (offset < HEADER_SIZE) {
} else if (offset < sizeof(*footer)) {
ret = -EINVAL;
error_setg(errp, "File too small for a VHD header");
goto fail;
}
/* If a fixed disk, the footer is found only at the end of the file */
ret = bdrv_pread(bs->file, offset-HEADER_SIZE, s->footer_buf,
HEADER_SIZE);
ret = bdrv_pread(bs->file, offset - sizeof(*footer),
footer, sizeof(*footer));
if (ret < 0) {
goto fail;
}
@ -282,7 +286,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
checksum = be32_to_cpu(footer->checksum);
footer->checksum = 0;
if (vpc_checksum(s->footer_buf, HEADER_SIZE) != checksum) {
if (vpc_checksum(footer, sizeof(*footer)) != checksum) {
error_setg(errp, "Incorrect header checksum");
ret = -EINVAL;
goto fail;
@ -340,22 +344,20 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
}
if (disk_type == VHD_DYNAMIC) {
ret = bdrv_pread(bs->file, be64_to_cpu(footer->data_offset), buf,
HEADER_SIZE);
ret = bdrv_pread(bs->file, be64_to_cpu(footer->data_offset),
&dyndisk_header, sizeof(dyndisk_header));
if (ret < 0) {
error_setg(errp, "Error reading dynamic VHD header");
goto fail;
}
dyndisk_header = (VHDDynDiskHeader *) buf;
if (strncmp(dyndisk_header->magic, "cxsparse", 8)) {
if (strncmp(dyndisk_header.magic, "cxsparse", 8)) {
error_setg(errp, "Invalid header magic");
ret = -EINVAL;
goto fail;
}
s->block_size = be32_to_cpu(dyndisk_header->block_size);
s->block_size = be32_to_cpu(dyndisk_header.block_size);
if (!is_power_of_2(s->block_size) || s->block_size < BDRV_SECTOR_SIZE) {
error_setg(errp, "Invalid block size %" PRIu32, s->block_size);
ret = -EINVAL;
@ -363,7 +365,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
}
s->bitmap_size = ((s->block_size / (8 * 512)) + 511) & ~511;
s->max_table_entries = be32_to_cpu(dyndisk_header->max_table_entries);
s->max_table_entries = be32_to_cpu(dyndisk_header.max_table_entries);
if ((bs->total_sectors * 512) / s->block_size > 0xffffffffU) {
error_setg(errp, "Too many blocks");
@ -395,7 +397,7 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
goto fail;
}
s->bat_offset = be64_to_cpu(dyndisk_header->table_offset);
s->bat_offset = be64_to_cpu(dyndisk_header.table_offset);
ret = bdrv_pread(bs->file, s->bat_offset, s->pagetable,
pagetable_size);
@ -534,7 +536,7 @@ static int rewrite_footer(BlockDriverState *bs)
BDRVVPCState *s = bs->opaque;
int64_t offset = s->free_data_block_offset;
ret = bdrv_pwrite_sync(bs->file, offset, s->footer_buf, HEADER_SIZE);
ret = bdrv_pwrite_sync(bs->file, offset, &s->footer, sizeof(s->footer));
if (ret < 0)
return ret;
@ -597,9 +599,8 @@ fail:
static int vpc_get_info(BlockDriverState *bs, BlockDriverInfo *bdi)
{
BDRVVPCState *s = (BDRVVPCState *)bs->opaque;
VHDFooter *footer = (VHDFooter *) s->footer_buf;
if (be32_to_cpu(footer->type) != VHD_FIXED) {
if (be32_to_cpu(s->footer.type) != VHD_FIXED) {
bdi->cluster_size = s->block_size;
}
@ -615,10 +616,9 @@ vpc_co_preadv(BlockDriverState *bs, uint64_t offset, uint64_t bytes,
int64_t image_offset;
int64_t n_bytes;
int64_t bytes_done = 0;
VHDFooter *footer = (VHDFooter *) s->footer_buf;
QEMUIOVector local_qiov;
if (be32_to_cpu(footer->type) == VHD_FIXED) {
if (be32_to_cpu(s->footer.type) == VHD_FIXED) {
return bdrv_co_preadv(bs->file, offset, bytes, qiov, 0);
}
@ -666,10 +666,9 @@ vpc_co_pwritev(BlockDriverState *bs, uint64_t offset, uint64_t bytes,
int64_t n_bytes;
int64_t bytes_done = 0;
int ret = 0;
VHDFooter *footer = (VHDFooter *) s->footer_buf;
QEMUIOVector local_qiov;
if (be32_to_cpu(footer->type) == VHD_FIXED) {
if (be32_to_cpu(s->footer.type) == VHD_FIXED) {
return bdrv_co_pwritev(bs->file, offset, bytes, qiov, 0);
}
@ -723,13 +722,12 @@ static int coroutine_fn vpc_co_block_status(BlockDriverState *bs,
BlockDriverState **file)
{
BDRVVPCState *s = bs->opaque;
VHDFooter *footer = (VHDFooter*) s->footer_buf;
int64_t image_offset;
bool allocated;
int ret;
int64_t n;
if (be32_to_cpu(footer->type) == VHD_FIXED) {
if (be32_to_cpu(s->footer.type) == VHD_FIXED) {
*pnum = bytes;
*map = offset;
*file = bs->file->bs;
@ -819,11 +817,11 @@ static int calculate_geometry(int64_t total_sectors, uint16_t *cyls,
return 0;
}
static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
static int create_dynamic_disk(BlockBackend *blk, VHDFooter *footer,
int64_t total_sectors)
{
VHDDynDiskHeader *dyndisk_header =
(VHDDynDiskHeader *) buf;
VHDDynDiskHeader dyndisk_header;
uint8_t bat_sector[512];
size_t block_size, num_bat_entries;
int i;
int ret;
@ -833,13 +831,13 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
block_size = 0x200000;
num_bat_entries = DIV_ROUND_UP(total_sectors, block_size / 512);
ret = blk_pwrite(blk, offset, buf, HEADER_SIZE, 0);
ret = blk_pwrite(blk, offset, footer, sizeof(*footer), 0);
if (ret < 0) {
goto fail;
}
offset = 1536 + ((num_bat_entries * 4 + 511) & ~511);
ret = blk_pwrite(blk, offset, buf, HEADER_SIZE, 0);
ret = blk_pwrite(blk, offset, footer, sizeof(*footer), 0);
if (ret < 0) {
goto fail;
}
@ -847,9 +845,9 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
/* Write the initial BAT */
offset = 3 * 512;
memset(buf, 0xFF, 512);
memset(bat_sector, 0xFF, 512);
for (i = 0; i < DIV_ROUND_UP(num_bat_entries * 4, 512); i++) {
ret = blk_pwrite(blk, offset, buf, 512, 0);
ret = blk_pwrite(blk, offset, bat_sector, 512, 0);
if (ret < 0) {
goto fail;
}
@ -857,26 +855,27 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
}
/* Prepare the Dynamic Disk Header */
memset(buf, 0, 1024);
memset(&dyndisk_header, 0, sizeof(dyndisk_header));
memcpy(dyndisk_header->magic, "cxsparse", 8);
memcpy(dyndisk_header.magic, "cxsparse", 8);
/*
* Note: The spec is actually wrong here for data_offset, it says
* 0xFFFFFFFF, but MS tools expect all 64 bits to be set.
*/
dyndisk_header->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
dyndisk_header->table_offset = cpu_to_be64(3 * 512);
dyndisk_header->version = cpu_to_be32(0x00010000);
dyndisk_header->block_size = cpu_to_be32(block_size);
dyndisk_header->max_table_entries = cpu_to_be32(num_bat_entries);
dyndisk_header.data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
dyndisk_header.table_offset = cpu_to_be64(3 * 512);
dyndisk_header.version = cpu_to_be32(0x00010000);
dyndisk_header.block_size = cpu_to_be32(block_size);
dyndisk_header.max_table_entries = cpu_to_be32(num_bat_entries);
dyndisk_header->checksum = cpu_to_be32(vpc_checksum(buf, 1024));
dyndisk_header.checksum = cpu_to_be32(
vpc_checksum(&dyndisk_header, sizeof(dyndisk_header)));
/* Write the header */
offset = 512;
ret = blk_pwrite(blk, offset, buf, 1024, 0);
ret = blk_pwrite(blk, offset, &dyndisk_header, sizeof(dyndisk_header), 0);
if (ret < 0) {
goto fail;
}
@ -886,20 +885,21 @@ static int create_dynamic_disk(BlockBackend *blk, uint8_t *buf,
return ret;
}
static int create_fixed_disk(BlockBackend *blk, uint8_t *buf,
static int create_fixed_disk(BlockBackend *blk, VHDFooter *footer,
int64_t total_size, Error **errp)
{
int ret;
/* Add footer to total size */
total_size += HEADER_SIZE;
total_size += sizeof(*footer);
ret = blk_truncate(blk, total_size, false, PREALLOC_MODE_OFF, 0, errp);
if (ret < 0) {
return ret;
}
ret = blk_pwrite(blk, total_size - HEADER_SIZE, buf, HEADER_SIZE, 0);
ret = blk_pwrite(blk, total_size - sizeof(*footer),
footer, sizeof(*footer), 0);
if (ret < 0) {
error_setg_errno(errp, -ret, "Unable to write VHD header");
return ret;
@ -971,8 +971,7 @@ static int coroutine_fn vpc_co_create(BlockdevCreateOptions *opts,
BlockBackend *blk = NULL;
BlockDriverState *bs = NULL;
uint8_t buf[1024];
VHDFooter *footer = (VHDFooter *) buf;
VHDFooter footer;
uint16_t cyls = 0;
uint8_t heads = 0;
uint8_t secs_per_cyl = 0;
@ -1035,48 +1034,48 @@ static int coroutine_fn vpc_co_create(BlockdevCreateOptions *opts,
}
/* Prepare the Hard Disk Footer */
memset(buf, 0, 1024);
memset(&footer, 0, sizeof(footer));
memcpy(footer->creator, "conectix", 8);
memcpy(footer.creator, "conectix", 8);
if (vpc_opts->force_size) {
memcpy(footer->creator_app, "qem2", 4);
memcpy(footer.creator_app, "qem2", 4);
} else {
memcpy(footer->creator_app, "qemu", 4);
memcpy(footer.creator_app, "qemu", 4);
}
memcpy(footer->creator_os, "Wi2k", 4);
memcpy(footer.creator_os, "Wi2k", 4);
footer->features = cpu_to_be32(0x02);
footer->version = cpu_to_be32(0x00010000);
footer.features = cpu_to_be32(0x02);
footer.version = cpu_to_be32(0x00010000);
if (disk_type == VHD_DYNAMIC) {
footer->data_offset = cpu_to_be64(HEADER_SIZE);
footer.data_offset = cpu_to_be64(sizeof(footer));
} else {
footer->data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
footer.data_offset = cpu_to_be64(0xFFFFFFFFFFFFFFFFULL);
}
footer->timestamp = cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE);
footer.timestamp = cpu_to_be32(time(NULL) - VHD_TIMESTAMP_BASE);
/* Version of Virtual PC 2007 */
footer->major = cpu_to_be16(0x0005);
footer->minor = cpu_to_be16(0x0003);
footer->orig_size = cpu_to_be64(total_size);
footer->current_size = cpu_to_be64(total_size);
footer->cyls = cpu_to_be16(cyls);
footer->heads = heads;
footer->secs_per_cyl = secs_per_cyl;
footer.major = cpu_to_be16(0x0005);
footer.minor = cpu_to_be16(0x0003);
footer.orig_size = cpu_to_be64(total_size);
footer.current_size = cpu_to_be64(total_size);
footer.cyls = cpu_to_be16(cyls);
footer.heads = heads;
footer.secs_per_cyl = secs_per_cyl;
footer->type = cpu_to_be32(disk_type);
footer.type = cpu_to_be32(disk_type);
qemu_uuid_generate(&uuid);
footer->uuid = uuid;
footer.uuid = uuid;
footer->checksum = cpu_to_be32(vpc_checksum(buf, HEADER_SIZE));
footer.checksum = cpu_to_be32(vpc_checksum(&footer, sizeof(footer)));
if (disk_type == VHD_DYNAMIC) {
ret = create_dynamic_disk(blk, buf, total_sectors);
ret = create_dynamic_disk(blk, &footer, total_sectors);
if (ret < 0) {
error_setg(errp, "Unable to create or write VHD header");
}
} else {
ret = create_fixed_disk(blk, buf, total_size, errp);
ret = create_fixed_disk(blk, &footer, total_size, errp);
}
out:
@ -1170,9 +1169,8 @@ fail:
static int vpc_has_zero_init(BlockDriverState *bs)
{
BDRVVPCState *s = bs->opaque;
VHDFooter *footer = (VHDFooter *) s->footer_buf;
if (be32_to_cpu(footer->type) == VHD_FIXED) {
if (be32_to_cpu(s->footer.type) == VHD_FIXED) {
return bdrv_has_zero_init(bs->file->bs);
} else {
return 1;

View File

@ -23,4 +23,6 @@ man_pages = [
[], 7),
('qemu-qmp-ref', 'qemu-qmp-ref', 'QEMU QMP Reference Manual',
[], 7),
('qemu-storage-daemon-qmp-ref', 'qemu-storage-daemon-qmp-ref',
'QEMU Storage Daemon QMP Reference Manual', [], 7),
]

View File

@ -20,6 +20,7 @@ Contents:
qemu-ga
qemu-ga-ref
qemu-qmp-ref
qemu-storage-daemon-qmp-ref
vhost-user
vhost-user-gpu
vhost-vdpa

View File

@ -0,0 +1,13 @@
QEMU Storage Daemon QMP Reference Manual
========================================
..
TODO: the old Texinfo manual used to note that this manual
is GPL-v2-or-later. We should make that reader-visible
both here and in our Sphinx manuals more generally.
..
TODO: display the QEMU version, both here and in our Sphinx manuals
more generally.
.. qapi-doc:: storage-daemon/qapi/qapi-schema.json

View File

@ -56,6 +56,7 @@ if build_docs
'qemu-ga.8': (have_tools ? 'man8' : ''),
'qemu-ga-ref.7': 'man7',
'qemu-qmp-ref.7': 'man7',
'qemu-storage-daemon-qmp-ref.7': (have_tools ? 'man7' : ''),
},
'tools': {
'qemu-img.1': (have_tools ? 'man1' : ''),

View File

@ -20,6 +20,8 @@ html_theme_options['description'] = \
man_pages = [
('qemu-img', 'qemu-img', u'QEMU disk image utility',
['Fabrice Bellard'], 1),
('qemu-storage-daemon', 'qemu-storage-daemon', u'QEMU storage daemon',
[], 1),
('qemu-nbd', 'qemu-nbd', u'QEMU Disk Network Block Device Server',
['Anthony Liguori <anthony@codemonkey.ws>'], 8),
('qemu-pr-helper', 'qemu-pr-helper', 'QEMU persistent reservation helper',

View File

@ -11,6 +11,7 @@ Contents:
:maxdepth: 2
qemu-img
qemu-storage-daemon
qemu-nbd
qemu-pr-helper
qemu-trace-stap

View File

@ -0,0 +1,148 @@
QEMU Storage Daemon
===================
Synopsis
--------
**qemu-storage-daemon** [options]
Description
-----------
qemu-storage-daemon provides disk image functionality from QEMU, qemu-img, and
qemu-nbd in a long-running process controlled via QMP commands without running
a virtual machine. It can export disk images, run block job operations, and
perform other disk-related operations. The daemon is controlled via a QMP
monitor and initial configuration from the command-line.
The daemon offers the following subset of QEMU features:
* Block nodes
* Block jobs
* Block exports
* Throttle groups
* Character devices
* Crypto and secrets
* QMP
* IOThreads
Commands can be sent over a QEMU Monitor Protocol (QMP) connection. See the
:manpage:`qemu-storage-daemon-qmp-ref(7)` manual page for a description of the
commands.
The daemon runs until it is stopped using the ``quit`` QMP command or
SIGINT/SIGHUP/SIGTERM.
**Warning:** Never modify images in use by a running virtual machine or any
other process; this may destroy the image. Also, be aware that querying an
image that is being modified by another process may encounter inconsistent
state.
Options
-------
.. program:: qemu-storage-daemon
Standard options:
.. option:: -h, --help
Display help and exit
.. option:: -V, --version
Display version information and exit
.. option:: -T, --trace [[enable=]PATTERN][,events=FILE][,file=FILE]
.. include:: ../qemu-option-trace.rst.inc
.. option:: --blockdev BLOCKDEVDEF
is a block node definition. See the :manpage:`qemu(1)` manual page for a
description of block node properties and the :manpage:`qemu-block-drivers(7)`
manual page for a description of driver-specific parameters.
.. option:: --chardev CHARDEVDEF
is a character device definition. See the :manpage:`qemu(1)` manual page for
a description of character device properties. A common character device
definition configures a UNIX domain socket::
--chardev socket,id=char1,path=/tmp/qmp.sock,server,nowait
.. option:: --export [type=]nbd,id=<id>,node-name=<node-name>[,name=<export-name>][,writable=on|off][,bitmap=<name>]
--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>]
is a block export definition. ``node-name`` is the block node that should be
exported. ``writable`` determines whether or not the export allows write
requests for modifying data (the default is off).
The ``nbd`` export type requires ``--nbd-server`` (see below). ``name`` is
the NBD export name. ``bitmap`` is the name of a dirty bitmap reachable from
the block node, so the NBD client can use NBD_OPT_SET_META_CONTEXT with the
metadata context name "qemu:dirty-bitmap:BITMAP" to inspect the bitmap.
The ``vhost-user-blk`` export type takes a vhost-user socket address on which
it accept incoming connections. Both
``addr.type=unix,addr.path=<socket-path>`` for UNIX domain sockets and
``addr.type=fd,addr.str=<fd>`` for file descriptor passing are supported.
``logical-block-size`` sets the logical block size in bytes (the default is
512). ``num-queues`` sets the number of virtqueues (the default is 1).
.. option:: --monitor MONITORDEF
is a QMP monitor definition. See the :manpage:`qemu(1)` manual page for
a description of QMP monitor properties. A common QMP monitor definition
configures a monitor on character device ``char1``::
--monitor chardev=char1
.. option:: --nbd-server addr.type=inet,addr.host=<host>,addr.port=<port>[,tls-creds=<id>][,tls-authz=<id>][,max-connections=<n>]
--nbd-server addr.type=unix,addr.path=<path>[,tls-creds=<id>][,tls-authz=<id>][,max-connections=<n>]
is a server for NBD exports. Both TCP and UNIX domain sockets are supported.
TLS encryption can be configured using ``--object`` tls-creds-* and authz-*
secrets (see below).
To configure an NBD server on UNIX domain socket path ``/tmp/nbd.sock``::
--nbd-server addr.type=unix,addr.path=/tmp/nbd.sock
.. option:: --object help
--object <type>,help
--object <type>[,<property>=<value>...]
is a QEMU user creatable object definition. List object types with ``help``.
List object properties with ``<type>,help``. See the :manpage:`qemu(1)`
manual page for a description of the object properties.
Examples
--------
Launch the daemon with QMP monitor socket ``qmp.sock`` so clients can execute
QMP commands::
$ qemu-storage-daemon \
--chardev socket,path=qmp.sock,server,nowait,id=char1 \
--monitor chardev=char1
Export raw image file ``disk.img`` over NBD UNIX domain socket ``nbd.sock``::
$ qemu-storage-daemon \
--blockdev driver=file,node-name=disk,filename=disk.img \
--nbd-server addr.type=unix,addr.path=nbd.sock \
--export type=nbd,id=export,node-name=disk,writable=on
Export a qcow2 image file ``disk.qcow2`` as a vhosts-user-blk device over UNIX
domain socket ``vhost-user-blk.sock``::
$ qemu-storage-daemon \
--blockdev driver=file,node-name=file,filename=disk.qcow2 \
--blockdev driver=qcow2,node-name=qcow2,file=file \
--export type=vhost-user-blk,id=export,addr.type=unix,addr.path=vhost-user-blk.sock,node-name=qcow2
See also
--------
:manpage:`qemu(1)`, :manpage:`qemu-block-drivers(7)`, :manpage:`qemu-storage-daemon-qmp-ref(7)`

View File

@ -137,7 +137,7 @@ static void mem_and(uint8_t *dest, const uint8_t *src, size_t n)
# define ADDR_SHIFT 16
# include "nand.c"
/* Information based on Linux drivers/mtd/nand/nand_ids.c */
/* Information based on Linux drivers/mtd/nand/raw/nand_ids.c */
static const struct {
int size;
int width;
@ -147,21 +147,11 @@ static const struct {
} nand_flash_ids[0x100] = {
[0 ... 0xff] = { 0 },
[0x6e] = { 1, 8, 8, 4, 0 },
[0x64] = { 2, 8, 8, 4, 0 },
[0x6b] = { 4, 8, 9, 4, 0 },
[0xe8] = { 1, 8, 8, 4, 0 },
[0xec] = { 1, 8, 8, 4, 0 },
[0xea] = { 2, 8, 8, 4, 0 },
[0xd5] = { 4, 8, 9, 4, 0 },
[0xe3] = { 4, 8, 9, 4, 0 },
[0xe5] = { 4, 8, 9, 4, 0 },
[0xd6] = { 8, 8, 9, 4, 0 },
[0x39] = { 8, 8, 9, 4, 0 },
[0xe6] = { 8, 8, 9, 4, 0 },
[0x49] = { 8, 16, 9, 4, NAND_BUSWIDTH_16 },
[0x59] = { 8, 16, 9, 4, NAND_BUSWIDTH_16 },
[0x33] = { 16, 8, 9, 5, 0 },
[0x73] = { 16, 8, 9, 5, 0 },

View File

@ -15,6 +15,9 @@
{ 'include': '../../qapi/pragma.json' }
##
# = Block devices
##
{ 'include': '../../qapi/block-core.json' }
{ 'include': '../../qapi/block-export.json' }
{ 'include': '../../qapi/char.json' }

View File

@ -73,7 +73,7 @@ check_floppy_qtree()
(QEMU_OPTIONS="" do_run_qemu "$@" |
_filter_testdir |_filter_generated_node_ids | _filter_hmp |
sed -ne '/^ dev: isa-fdc/,/^ dev:/{x;p};/^[a-z][^ ]* (NODE_NAME):* /,/^(qemu)$/{p}') 2>&1 |
_filter_win32 | _filter_qemu
_filter_win32 | _filter_qemu | _filter_qom_path
}
check_cache_mode()

View File

@ -63,12 +63,12 @@ Testing: -fda TEST_DIR/t.qcow2
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -114,16 +114,16 @@ Testing: -fdb TEST_DIR/t.qcow2
share-rw = false
drive-type = "288"
floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
floppy0: [not inserted]
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -169,17 +169,17 @@ Testing: -fda TEST_DIR/t.qcow2 -fdb TEST_DIR/t.qcow2.2
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
floppy1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -255,12 +255,12 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -306,16 +306,16 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2,index=1
share-rw = false
drive-type = "288"
floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
floppy0: [not inserted]
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -361,17 +361,17 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=floppy,file=TEST_DIR/t
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
floppy1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -411,12 +411,12 @@ Use -device floppy,unit=0,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -453,12 +453,12 @@ Use -device floppy,unit=1,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -508,17 +508,17 @@ Use -device floppy,unit=1,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -556,12 +556,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -596,12 +596,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,unit=1
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -647,17 +647,17 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qco
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[1]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -708,17 +708,17 @@ Use -device floppy,unit=1,drive=... instead.
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -766,17 +766,17 @@ Use -device floppy,unit=0,drive=... instead.
share-rw = false
drive-type = "144"
floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[16]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[23]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -838,17 +838,17 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -894,17 +894,17 @@ Testing: -fda TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -950,17 +950,17 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
share-rw = false
drive-type = "144"
floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1006,17 +1006,17 @@ Testing: -fdb TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.qcow2.2 -device fl
share-rw = false
drive-type = "144"
floppy1 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1071,17 +1071,17 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1127,17 +1127,17 @@ Testing: -drive if=floppy,file=TEST_DIR/t.qcow2 -drive if=none,file=TEST_DIR/t.q
share-rw = false
drive-type = "144"
floppy0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none0 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1191,17 +1191,17 @@ Use -device floppy,unit=0,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1249,17 +1249,17 @@ Use -device floppy,unit=0,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1307,17 +1307,17 @@ Use -device floppy,unit=1,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1365,17 +1365,17 @@ Use -device floppy,unit=1,drive=... instead.
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/unattached/device[15]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
none1 (NODE_NAME): TEST_DIR/t.qcow2.2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[22]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1410,12 +1410,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -global floppy.drive=none0 -device
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1603,12 +1603,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
share-rw = false
drive-type = "120"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1643,12 +1643,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,drive-t
share-rw = false
drive-type = "288"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1686,12 +1686,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,logical
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]
@ -1726,12 +1726,12 @@ Testing: -drive if=none,file=TEST_DIR/t.qcow2 -device floppy,drive=none0,physica
share-rw = false
drive-type = "144"
none0 (NODE_NAME): TEST_DIR/t.qcow2 (qcow2)
Attached to: /machine/peripheral-anon/device[0]
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
ide1-cd0: [not inserted]
Attached to: /machine/unattached/device[21]
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
sd0: [not inserted]

View File

@ -7,7 +7,7 @@ Testing: -device floppy
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
/machine/peripheral-anon/device[1]: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -23,7 +23,7 @@ Testing: -device ide-cd
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
/machine/peripheral-anon/device[1]: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -39,7 +39,7 @@ Testing: -device scsi-cd
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
/machine/peripheral-anon/device[1]: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -58,7 +58,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device ide-hd,d
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Cache mode: writeback
(qemu) quit
@ -74,7 +74,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device scsi-hd,
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Cache mode: writeback
(qemu) quit
@ -90,7 +90,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device virtio-b
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]/virtio-backend
Cache mode: writeback
(qemu) quit
@ -98,7 +98,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device virtio-b
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral/qdev_id/virtio-backend
Cache mode: writeback
(qemu) quit
@ -106,7 +106,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device floppy,d
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -124,7 +124,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device ide-cd,d
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -142,7 +142,7 @@ Testing: -blockdev driver=null-co,read-zeroes=on,node-name=null -device scsi-cd,
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
null: json:{"read-zeroes": true, "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -191,7 +191,7 @@ none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Cache mode: writeback
null: json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral/qdev_id/virtio-backend
Cache mode: writeback
(qemu) quit
@ -241,7 +241,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device ide
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Cache mode: writeback
(qemu) quit
@ -257,7 +257,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device scs
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Cache mode: writeback
(qemu) quit
@ -273,7 +273,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device vir
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]/virtio-backend
Cache mode: writeback
(qemu) quit
@ -281,7 +281,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device vir
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral/qdev_id/virtio-backend
Cache mode: writeback
(qemu) quit
@ -289,7 +289,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device flo
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -307,7 +307,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device ide
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -325,7 +325,7 @@ Testing: -drive if=none,driver=null-co,read-zeroes=on,node-name=null -device scs
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0 (null): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -353,7 +353,7 @@ Testing: -drive if=none -device floppy,drive=none0
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -369,7 +369,7 @@ Testing: -drive if=none -device ide-cd,drive=none0
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -385,7 +385,7 @@ Testing: -drive if=none -device scsi-cd,drive=none0
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
none0: [not inserted]
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -404,7 +404,7 @@ Testing: -drive if=floppy
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
floppy0: [not inserted]
Attached to: PATH
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -412,7 +412,7 @@ Testing: -drive if=floppy,driver=null-co,read-zeroes=on
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
floppy0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -421,7 +421,7 @@ Testing: -drive if=ide,driver=null-co,read-zeroes=on
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
ide0-hd0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/unattached/device[N]
Cache mode: writeback
(qemu) quit
@ -429,7 +429,7 @@ Testing: -drive if=ide,media=cdrom
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
ide0-cd0: [not inserted]
Attached to: PATH
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
(qemu) quit
@ -437,7 +437,7 @@ Testing: -drive if=ide,driver=null-co,read-zeroes=on,media=cdrom
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
ide0-cd0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (null-co, read-only)
Attached to: PATH
Attached to: /machine/unattached/device[N]
Removable device: not locked, tray closed
Cache mode: writeback
(qemu) quit
@ -446,7 +446,7 @@ Testing: -drive if=virtio,driver=null-co,read-zeroes=on
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
virtio0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co"} (null-co)
Attached to: PATH
Attached to: /machine/peripheral-anon/device[N]/virtio-backend
Cache mode: writeback
(qemu) quit
@ -454,7 +454,7 @@ Testing: -drive if=pflash,driver=null-co,read-zeroes=on,size=1M
QEMU X.Y.Z monitor - type 'help' for more information
(qemu) info block
pflash0 (NODE_NAME): json:{"read-zeroes": "on", "driver": "null-co", "size": "1M"} (null-co)
Attached to: PATH
Attached to: /machine/system.flash0
Cache mode: writeback
(qemu) quit

View File

@ -182,7 +182,7 @@ Job failed: The requested file size is too large
=== Resize image with invalid sizes ===
{"execute": "block_resize", "arguments": {"node-name": "node1", "size": 9223372036854775296}}
{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
{"error": {"class": "GenericError", "desc": "Required too big image size, it must be not greater than 9223372035781033984"}}
{"execute": "block_resize", "arguments": {"node-name": "node1", "size": 9223372036854775808}}
{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'size', expected: integer"}}
{"execute": "block_resize", "arguments": {"node-name": "node1", "size": 18446744073709551104}}

View File

@ -37,7 +37,7 @@ _filter_generated_node_ids()
_filter_qom_path()
{
$SED -e 's#\(Attached to: *\) /.*#\1 PATH#'
$SED -e '/Attached to:/s/\device[[0-9]\+\]/device[N]/g'
}
# replace occurrences of the actual TEST_DIR value with TEST_DIR