Currently cache setting of a block device cannot be changed without restarting a running VM. Following patchset is for enabling dynamic change of cache setting for block devices through qemu monitor. Code changes are based on patches from Christoph Hellwig and Prerna Saxena.
This patchset introduces monitor command 'block_set_hostcache' using which host pagecache setting for a block device can be changed dynamically. This patchset also introduces 'hostcache', a new option for setting host cache from qemu command line. Note: 'Hostcache and 'cache' options cannot be used simultaneously from commandline. 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" 1/4 Enhance "info block" to display hostcache setting 2/4 New qerrors for file reopen and data sync 3/4 Command "block_set_hostcache" for changing hostcache setting 4/4 'hostcache' option added to -drive in qemu commandline qemu/block.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ qemu/block.h | 2 + qemu/blockdev.c | 39 ++++++++++++++++++++++++ qemu/blockdev.h | 2 + qemu/hmp-commands.hx | 14 +++++++++++++ qemu/qemu-config.c | 4 +++ qemu/qemu-options.hx | 2 - qemu/qerror.c | 8 +++++++ qemu/qerror.h | 6 +++++ qemu/qmp-commands.hx | 29 +++++++++++++++++++++++++ 10 files changed, 176 insertions(+), 5 deletions(-) ~