Loading block/qapi.c +7 −0 Original line number Diff line number Diff line Loading @@ -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); Loading hmp.c +8 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 " Loading qapi/block-core.json +19 −1 Original line number Diff line number Diff line Loading @@ -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: # Loading Loading @@ -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 # ## Loading @@ -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: Loading tests/qemu-iotests/051.out +1 −0 Original line number Diff line number Diff line Loading @@ -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) 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) Cache mode: writeback Backing file: TEST_DIR/t.qcow2.orig (chain depth: 1) (qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K Loading tests/qemu-iotests/067.out +25 −0 Original line number Diff line number Diff line Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading
block/qapi.c +7 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
hmp.c +8 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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 " Loading
qapi/block-core.json +19 −1 Original line number Diff line number Diff line Loading @@ -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: # Loading Loading @@ -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 # ## Loading @@ -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: Loading
tests/qemu-iotests/051.out +1 −0 Original line number Diff line number Diff line Loading @@ -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) 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) Cache mode: writeback Backing file: TEST_DIR/t.qcow2.orig (chain depth: 1) (qemu) q[K[Dqu[K[D[Dqui[K[D[D[Dquit[K Loading
tests/qemu-iotests/067.out +25 −0 Original line number Diff line number Diff line Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading Loading @@ -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 }, Loading