Commit 9e193c5a authored by Kevin Wolf's avatar Kevin Wolf
Browse files

block/qapi: Add cache information to query-block



Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
Reviewed-by: default avatarEric Blake <eblake@redhat.com>
parent 729962f6
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -40,6 +40,13 @@ BlockDeviceInfo *bdrv_block_device_info(BlockDriverState *bs)
    info->encrypted              = bs->encrypted;
    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]) {
        info->has_node_name = true;
        info->node_name = g_strdup(bs->node_name);
+8 −0
Original line number Diff line number Diff line
@@ -294,6 +294,7 @@ void hmp_info_block(Monitor *mon, const QDict *qdict)
{
    BlockInfoList *block_list, *info;
    ImageInfo *image_info;
    BlockDeviceInfo *inserted;
    const char *device = qdict_get_try_str(qdict, "device");
    bool verbose = qdict_get_try_bool(qdict, "verbose", 0);

@@ -335,6 +336,13 @@ void hmp_info_block(Monitor *mon, const QDict *qdict)
            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) {
            monitor_printf(mon,
                           "    Backing file:     %s "
+19 −1
Original line number Diff line number Diff line
@@ -182,6 +182,22 @@
           '*total-clusters': 'int', '*allocated-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:
#
@@ -239,6 +255,8 @@
#
# @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
#
##
@@ -253,7 +271,7 @@
            '*bps_max': 'int', '*bps_rd_max': 'int',
            '*bps_wr_max': 'int', '*iops_max': 'int',
            '*iops_rd_max': 'int', '*iops_wr_max': 'int',
            '*iops_size': 'int' } }
            '*iops_size': 'int', 'cache': 'BlockdevCacheInfo' } }

##
# @BlockDeviceIoStatus:
+1 −0
Original line number Diff line number Diff line
@@ -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) iininfinfoinfo info binfo blinfo bloinfo blocinfo block
ide0-hd0: TEST_DIR/t.qcow2 (qcow2)
    Cache mode:       writeback
    Backing file:     TEST_DIR/t.qcow2.orig (chain depth: 1)
(qemu) qququiquit

+25 −0
Original line number Diff line number Diff line
@@ -46,6 +46,11 @@ Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk -device virti
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
@@ -216,6 +221,11 @@ Testing: -drive file=TEST_DIR/t.qcow2,format=qcow2,if=none,id=disk
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
@@ -416,6 +426,11 @@ Testing:
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
@@ -595,6 +610,11 @@ Testing:
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },
@@ -700,6 +720,11 @@ Testing:
                "encrypted": false,
                "bps": 0,
                "bps_rd": 0,
                "cache": {
                    "no-flush": false,
                    "direct": false,
                    "writeback": true
                },
                "file": "TEST_DIR/t.qcow2",
                "encryption_key_missing": false
            },