The 'change' QMP and HMP command allows replacing the medium in drives which support this, e.g. floppy disk drives. For some drives, the medium carries information about whether it can be written to or not (again, floppy drives). Therefore, it should be possible to change the read-only state of block devices when changing the loaded medium.
Following a suggestion from Eric, this series first introduces a 'blockdev-change-medium' QMP command which is intended to replace the 'change' command for block devices. Then, an optional additional 'read-only' parameter is added which allows chaning the read-only state in three ways: - 'retain': Just keep the status as it was before; this is the current behavior and thus this will be the default. - 'ro': Force read-only access - 'rw': Force writable access Finally, that 'read-only' parameter is added to the HMP 'change' command. This series does not add a 'blockdev-change-medium' QMP command because 'change' being overloaded for VNC and block devices is not too bad for HMP (while it is for QMP). v2: - basically completely rewritten - Dropped 'auto' [Kevin and Markus] - Introduced blockdev-change-medium [Eric] - Patch 1 introduces the new QMP command 'blockdev-change-medium'; there are (at least) two questionable design choices which I want to explain here: - The name is rather long; furthermore, the name 'change-blockdev' was already suggested by the existing code. I used such a long name because (1) there are no *-blockdev commands, but there are blockdev-* commands, so "blockdev" should be the prefix, not the suffix, and (2) "blockdev-change" could mean anything, so I wanted to be as clear as possible. - The 'format' argument is optional; this is because by making it mandatory, it would have been difficult for the 'change' QMP and HMP commands to retain their 'format' argument optional as well (which we have to do thanks to compatibility) - Patches 2 to 4 should be thoroughly explained by their commit title Max Reitz (4): qmp: Introduce blockdev-change-medium hmp: Use blockdev-change-medium for change command blockdev: Add read-only option to blockdev-change-medium hmp: Add read-only option to change command blockdev.c | 31 +++++++++++++++++++++++---- hmp-commands.hx | 20 +++++++++++++++--- hmp.c | 46 +++++++++++++++++++++++++++++----------- include/sysemu/blockdev.h | 2 -- qapi/block-core.json | 43 ++++++++++++++++++++++++++++++++++++++ qmp-commands.hx | 53 +++++++++++++++++++++++++++++++++++++++++++++++ qmp.c | 3 ++- 7 files changed, 176 insertions(+), 22 deletions(-) -- 1.9.3