Currently cache setting of a block device cannot be changed without restarting a running VM. Following patchset is for enabling dynamic change of host 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 V4: 1. Defined a new qerror class for incorrect command syntax. 2. Changed some of the error_report() calls to qerror_report() calls 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 qerrors for file reopen, data sync and command syntax 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 | 75 +++++++++++++++++++++++++++++++++++++++++++++ qemu/block.h | 2 + qemu/blockdev.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ qemu/blockdev.h | 1 qemu/hmp-commands.hx | 14 +++++++++++ qemu/qemu-config.c | 17 ++++++++++ qemu/qemu-option.c | 25 ++++++++++++++++++++ qemu/qemu-option.h | 2 + qemu/qemu-options.hx | 2 - qemu/qerror.c | 12 ++++++++++ qemu/qerror.h | 8 ++++++ qemu/qmp-commands.hx | 30 +++++++++++++++++++++++ 12 files changed, 257 insertions(+), 2 deletions(-) ~