mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-10-15 15:32:51 +00:00
block/qapi: Add cache information to query-block
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
729962f6db
commit
9e193c5a65
|
@ -40,6 +40,13 @@ BlockDeviceInfo *bdrv_block_device_info(BlockDriverState *bs)
|
||||||
info->encrypted = bs->encrypted;
|
info->encrypted = bs->encrypted;
|
||||||
info->encryption_key_missing = bdrv_key_required(bs);
|
info->encryption_key_missing = bdrv_key_required(bs);
|
||||||
|
|
||||||
|
info->cache = g_new(BlockdevCacheInfo, 1);
|
||||||
|
*info->cache = (BlockdevCacheInfo) {
|
||||||
|
.writeback = bdrv_enable_write_cache(bs),
|
||||||
|
.direct = !!(bs->open_flags & BDRV_O_NOCACHE),
|
||||||
|
.no_flush = !!(bs->open_flags & BDRV_O_NO_FLUSH),
|
||||||
|
};
|
||||||
|
|
||||||
if (bs->node_name[0]) {
|
if (bs->node_name[0]) {
|
||||||
info->has_node_name = true;
|
info->has_node_name = true;
|
||||||
info->node_name = g_strdup(bs->node_name);
|
info->node_name = g_strdup(bs->node_name);
|
||||||
|
|
8
hmp.c
8
hmp.c
|
@ -294,6 +294,7 @@ void hmp_info_block(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
BlockInfoList *block_list, *info;
|
BlockInfoList *block_list, *info;
|
||||||
ImageInfo *image_info;
|
ImageInfo *image_info;
|
||||||
|
BlockDeviceInfo *inserted;
|
||||||
const char *device = qdict_get_try_str(qdict, "device");
|
const char *device = qdict_get_try_str(qdict, "device");
|
||||||
bool verbose = qdict_get_try_bool(qdict, "verbose", 0);
|
bool verbose = qdict_get_try_bool(qdict, "verbose", 0);
|
||||||
|
|
||||||
|
@ -335,6 +336,13 @@ void hmp_info_block(Monitor *mon, const QDict *qdict)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inserted = info->value->inserted;
|
||||||
|
|
||||||
|
monitor_printf(mon, " Cache mode: %s%s%s\n",
|
||||||
|
inserted->cache->writeback ? "writeback" : "writethrough",
|
||||||
|
inserted->cache->direct ? ", direct" : "",
|
||||||
|
inserted->cache->no_flush ? ", ignore flushes" : "");
|
||||||
|
|
||||||
if (info->value->inserted->has_backing_file) {
|
if (info->value->inserted->has_backing_file) {
|
||||||
monitor_printf(mon,
|
monitor_printf(mon,
|
||||||
" Backing file: %s "
|
" Backing file: %s "
|
||||||
|
|
|
@ -182,6 +182,22 @@
|
||||||
'*total-clusters': 'int', '*allocated-clusters': 'int',
|
'*total-clusters': 'int', '*allocated-clusters': 'int',
|
||||||
'*fragmented-clusters': 'int', '*compressed-clusters': 'int' } }
|
'*fragmented-clusters': 'int', '*compressed-clusters': 'int' } }
|
||||||
|
|
||||||
|
##
|
||||||
|
# @BlockdevCacheInfo
|
||||||
|
#
|
||||||
|
# Cache mode information for a block device
|
||||||
|
#
|
||||||
|
# @writeback: true if writeback mode is enabled
|
||||||
|
# @direct: true if the host page cache is bypassed (O_DIRECT)
|
||||||
|
# @no-flush: true if flush requests are ignored for the device
|
||||||
|
#
|
||||||
|
# Since: 2.3
|
||||||
|
##
|
||||||
|
{ 'type': 'BlockdevCacheInfo',
|
||||||
|
'data': { 'writeback': 'bool',
|
||||||
|
'direct': 'bool',
|
||||||
|
'no-flush': 'bool' } }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @BlockDeviceInfo:
|
# @BlockDeviceInfo:
|
||||||
#
|
#
|
||||||
|
@ -239,6 +255,8 @@
|
||||||
#
|
#
|
||||||
# @iops_size: #optional an I/O size in bytes (Since 1.7)
|
# @iops_size: #optional an I/O size in bytes (Since 1.7)
|
||||||
#
|
#
|
||||||
|
# @cache: the cache mode used for the block device (since: 2.3)
|
||||||
|
#
|
||||||
# Since: 0.14.0
|
# Since: 0.14.0
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
|
@ -253,7 +271,7 @@
|
||||||
'*bps_max': 'int', '*bps_rd_max': 'int',
|
'*bps_max': 'int', '*bps_rd_max': 'int',
|
||||||
'*bps_wr_max': 'int', '*iops_max': 'int',
|
'*bps_wr_max': 'int', '*iops_max': 'int',
|
||||||
'*iops_rd_max': 'int', '*iops_wr_max': 'int',
|
'*iops_rd_max': 'int', '*iops_wr_max': 'int',
|
||||||
'*iops_size': 'int' } }
|
'*iops_size': 'int', 'cache': 'BlockdevCacheInfo' } }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @BlockDeviceIoStatus:
|
# @BlockDeviceIoStatus:
|
||||||
|
|
|
@ -50,6 +50,7 @@ Testing: -drive file=TEST_DIR/t.qcow2,driver=qcow2,backing.file.filename=TEST_DI
|
||||||
QEMU X.Y.Z monitor - type 'help' for more information
|
QEMU X.Y.Z monitor - type 'help' for more information
|
||||||
(qemu) i[K[Din[K[D[Dinf[K[D[D[Dinfo[K[D[D[D[Dinfo [K[D[D[D[D[Dinfo b[K[D[D[D[D[D[Dinfo bl[K[D[D[D[D[D[D[Dinfo blo[K[D[D[D[D[D[D[D[Dinfo bloc[K[D[D[D[D[D[D[D[D[Dinfo block[K
|
(qemu) i[K[Din[K[D[Dinf[K[D[D[Dinfo[K[D[D[D[Dinfo [K[D[D[D[D[Dinfo b[K[D[D[D[D[D[Dinfo bl[K[D[D[D[D[D[D[Dinfo blo[K[D[D[D[D[D[D[D[Dinfo bloc[K[D[D[D[D[D[D[D[D[Dinfo block[K
|
||||||
ide0-hd0: TEST_DIR/t.qcow2 (qcow2)
|
ide0-hd0: TEST_DIR/t.qcow2 (qcow2)
|
||||||
|
Cache mode: writeback
|
||||||
Backing file: TEST_DIR/t.qcow2.orig (chain depth: 1)
|
Backing file: TEST_DIR/t.qcow2.orig (chain depth: 1)
|
||||||
(qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
|
(qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,11 @@ Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk -device virti
|
||||||
"encrypted": false,
|
"encrypted": false,
|
||||||
"bps": 0,
|
"bps": 0,
|
||||||
"bps_rd": 0,
|
"bps_rd": 0,
|
||||||
|
"cache": {
|
||||||
|
"no-flush": false,
|
||||||
|
"direct": false,
|
||||||
|
"writeback": true
|
||||||
|
},
|
||||||
"file": "TEST_DIR/t.qcow2",
|
"file": "TEST_DIR/t.qcow2",
|
||||||
"encryption_key_missing": false
|
"encryption_key_missing": false
|
||||||
},
|
},
|
||||||
|
@ -216,6 +221,11 @@ Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk
|
||||||
"encrypted": false,
|
"encrypted": false,
|
||||||
"bps": 0,
|
"bps": 0,
|
||||||
"bps_rd": 0,
|
"bps_rd": 0,
|
||||||
|
"cache": {
|
||||||
|
"no-flush": false,
|
||||||
|
"direct": false,
|
||||||
|
"writeback": true
|
||||||
|
},
|
||||||
"file": "TEST_DIR/t.qcow2",
|
"file": "TEST_DIR/t.qcow2",
|
||||||
"encryption_key_missing": false
|
"encryption_key_missing": false
|
||||||
},
|
},
|
||||||
|
@ -416,6 +426,11 @@ Testing:
|
||||||
"encrypted": false,
|
"encrypted": false,
|
||||||
"bps": 0,
|
"bps": 0,
|
||||||
"bps_rd": 0,
|
"bps_rd": 0,
|
||||||
|
"cache": {
|
||||||
|
"no-flush": false,
|
||||||
|
"direct": false,
|
||||||
|
"writeback": true
|
||||||
|
},
|
||||||
"file": "TEST_DIR/t.qcow2",
|
"file": "TEST_DIR/t.qcow2",
|
||||||
"encryption_key_missing": false
|
"encryption_key_missing": false
|
||||||
},
|
},
|
||||||
|
@ -595,6 +610,11 @@ Testing:
|
||||||
"encrypted": false,
|
"encrypted": false,
|
||||||
"bps": 0,
|
"bps": 0,
|
||||||
"bps_rd": 0,
|
"bps_rd": 0,
|
||||||
|
"cache": {
|
||||||
|
"no-flush": false,
|
||||||
|
"direct": false,
|
||||||
|
"writeback": true
|
||||||
|
},
|
||||||
"file": "TEST_DIR/t.qcow2",
|
"file": "TEST_DIR/t.qcow2",
|
||||||
"encryption_key_missing": false
|
"encryption_key_missing": false
|
||||||
},
|
},
|
||||||
|
@ -700,6 +720,11 @@ Testing:
|
||||||
"encrypted": false,
|
"encrypted": false,
|
||||||
"bps": 0,
|
"bps": 0,
|
||||||
"bps_rd": 0,
|
"bps_rd": 0,
|
||||||
|
"cache": {
|
||||||
|
"no-flush": false,
|
||||||
|
"direct": false,
|
||||||
|
"writeback": true
|
||||||
|
},
|
||||||
"file": "TEST_DIR/t.qcow2",
|
"file": "TEST_DIR/t.qcow2",
|
||||||
"encryption_key_missing": false
|
"encryption_key_missing": false
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue