mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-24 12:09:58 +00:00
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:
commit
c7e48f9165
@ -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>
|
||||
|
@ -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) {
|
||||
|
146
block/vpc.c
146
block/vpc.c
@ -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;
|
||||
|
@ -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),
|
||||
]
|
||||
|
@ -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
|
||||
|
13
docs/interop/qemu-storage-daemon-qmp-ref.rst
Normal file
13
docs/interop/qemu-storage-daemon-qmp-ref.rst
Normal 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
|
@ -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' : ''),
|
||||
|
@ -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',
|
||||
|
@ -11,6 +11,7 @@ Contents:
|
||||
:maxdepth: 2
|
||||
|
||||
qemu-img
|
||||
qemu-storage-daemon
|
||||
qemu-nbd
|
||||
qemu-pr-helper
|
||||
qemu-trace-stap
|
||||
|
148
docs/tools/qemu-storage-daemon.rst
Normal file
148
docs/tools/qemu-storage-daemon.rst
Normal 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)`
|
@ -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 },
|
||||
|
@ -15,6 +15,9 @@
|
||||
|
||||
{ 'include': '../../qapi/pragma.json' }
|
||||
|
||||
##
|
||||
# = Block devices
|
||||
##
|
||||
{ 'include': '../../qapi/block-core.json' }
|
||||
{ 'include': '../../qapi/block-export.json' }
|
||||
{ 'include': '../../qapi/char.json' }
|
||||
|
@ -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()
|
||||
|
@ -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]
|
||||
|
@ -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
|
||||
|
||||
|
@ -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}}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user