Following patchset is for enabling dynamic change of host pagecache setting of block devices through qemu monitor.
This patchset introduces a. monitor command 'block_set_hostcache' using which host pagecache setting for a block device can be changed dynamically. b. a new option for setting host cache from qemu commandline option -drive "hostcache=on/off". c. BDRVReopenState, a generic structure which can be extended by each of the block drivers to reopen respective image files. Extension of this structure for drivers raw-posix is done here. Note: 'hostcache and 'cache' options when used together, cache=xx will override hostcache=yy. v9: 1. Rebased patchset to use qapi interfaces 2. Approach of extending BDRVReopenState changed to use container_of() v8: 1. Mandate implementation of all three reopen related functions by block drivers. 2. If 'cache=xx' and 'hostcache=yy' specified in cmdline, 'cache=' overrides 'hostcache='. v7: 1. Added structure BDRVReopenState to support safe reopening of image files. 2. Implemented reopen functions for raw-posix driver v6: 1. "block_set_hostcache" to replace "block_set" command v5: 1. Defined qerror class for incorrect command syntax. 2. Changed error_report() calls to qerror_report() v4: Added 'hostcache' option to '-drive' commandline option. v3: 1. Command "block_set" for changing various block params 2. Enhanced info-block to display hostcache setting 3. Added qmp interfaces for setting and querying hostcache v2: 1. Support of dynamic cache change only for hostcache. 2. Monitor command "hostcache_get" added to display cache setting 3. Backed off the changes for display of cache setting in "info block" v1: Dynamic cache change through monitor New block command added: "block_set_hostcache" -- Sets hostcache parameter for block device while guest is running. Usage: block_set_hostcache <device> <option> <device> = block device <option> = on/off New 'hostcache' option added to -drive: -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]\n" .... " [,readonly=on|off][,hostcache=on|off]\n" qemu/block.c | 111 +++++++++++++++++++++++++++++++++++++++++++++---- qemu/block.h | 5 + qemu/block/raw-posix.c | 72 ++++++++++++++++++++++++++++++++ qemu/block/raw.c | 23 +++++++++- qemu/block_int.h | 13 +++++ qemu/blockdev.c | 33 ++++++++++++++ qemu/blockdev.h | 2 qemu/hmp-commands.hx | 14 ++++++ qemu/hmp.c | 2 qemu/qapi-schema.json | 4 + qemu/qapi-types.h | 1 qemu/qemu-common.h | 1 qemu/qemu-config.c | 4 + qemu/qemu-options.hx | 2 qemu/qerror.c | 8 +++ qemu/qerror.h | 6 ++ qemu/qmp-commands.hx | 27 ++++++++++++ 20 files changed, 315 insertions(+), 13 deletions(-) ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ "txt" 13L, 574C