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' using which various parameters for block devices can be changed dynamically. Dynamic changing of host cache setting is implemented for now. This patchset also introduces 'hostcache', a new option for setting host cache from qemu command line. 'Hostcache and 'cache' options cannot be used simultaneously from commandline. Changes from patchset V3: 1. Added 'hostcache' option to '-drive' commandline option. New block command added: "block_set" -- Sets block device parameters while guest is running. Usage: block_set <device> <param> <value> <device> = block device <param> = parameter (say, "hostcache") <value> = 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 error classes for file reopen and device insertion 3/4 Command "block_set" for dynamic params change for block device 4/4 'hostcache' option added to -drive in qemu commandline qemu/block.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++---- qemu/block.h | 2 + qemu/blockdev.c | 43 +++++++++++++++++++++++++++++++++++++++++++++++ qemu/blockdev.h | 1 qemu/hmp-commands.hx | 15 ++++++++++++++ qemu/qemu-config.c | 4 +++ qemu/qemu-options.hx | 2 - qemu/qemu.pod | 5 ++++ qemu/qerror.c | 8 +++++++ qemu/qerror.h | 6 +++++ qemu/qmp-commands.hx | 30 +++++++++++++++++++++++++++ 11 files changed, 184 insertions(+), 5 deletions(-)