[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [v2 Patch 0/9]block: Image file reopen and dynamic host pag
From: |
Supriya Kannery |
Subject: |
[Qemu-devel] [v2 Patch 0/9]block: Image file reopen and dynamic host pagecache change |
Date: |
Tue, 31 Jul 2012 03:04:09 +0530 |
For changing host pagecache setting of a running VM, it is
important to have a safe way of reopening its image file.
V1 introduced:
* a generic way to reopen image files safely.
In this approach, before reopening an image, for each
block driver, its state will be stashed. Incase preparation,
(bdrv_reopen_prepare) for reopening returns success, the stashed
state will be cleared (bdrv_reopen_commit) and reopened state will
be used further. Incase preparation of reopening returns failure,
the state of the driver will be rolled back (bdrv_reopen_abort)
to the stashed state. This approach is implemented for raw-posix,
raw-win32, vmdk, qcow, qcow2 and qed block drivers.
* qmp and hmp command 'block_set_hostcache' using which host
pagecache setting for a block device can be changed
when the VM is running.
* BDRVReopenState, a generic structure which can be
extended by each of the block drivers to reopen
respective image files.
V2:
* Changed ordering of patches such that code changes related to
generic framework for safely reopening images gets applied first.
* For block drivers not having bdrv_reopen_xx functions
implemented, return "feature not supported" error.
Testing:
=======
[Thanks! to Yoganananth Subramanian for helping out with testing]
Steps:
1) boot up guest image of different formats qed, raw, qcow2, vmdk
2) run iozone in these guests
command: iozone -a
3) view cache setting of image file through qemu monitor
command: info block
"hostcache =" 0/1 should be displayed
4) Toggle hostcache value using block_set_hostcache
command: block_set_hostcache virtio0 on
5) Disable and enable hostcache at randon intervals while iozone is
running inside guest.
command: block_set_hostcache virtio0 on/off
6) Info block should reflect toggled hostcache value
and iozone should complete without any issue
Results:
Verified above steps for raw-posix, qcow2, qed and vmdk images.
raw-posix, qed and vmdk images (split files) worked fine. With
qcow2 image getting an error of double free after iozone running
for a while.
To Do:
======
* Debug the issue with qcow2 image and resolve asap.
* Enhance code around dup3 in raw-posix to fall back to
dup2/dup when dup3 is not supported by OS.
* Do some more extensive testing, especially with qcow2 and
qed drivers.
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
qemu/block.c | 79 ++++++++++++++++++++++
qemu/block.h | 5 +
qemu/block/qcow.c | 108 ++++++++++++++++++++++++++++++
qemu/block/qcow2.c | 175 +++++++++++++++++++++++++++++++++++++++++++++++++
qemu/block/qed.c | 103 ++++++++++++++++++++++++++++
qemu/block/raw-posix.c | 121 +++++++++++++++++++++++++++++++++
qemu/block/raw-win32.c | 96 ++++++++++++++++++++++++++
qemu/block/raw.c | 20 +++++
qemu/block/vmdk.c | 103 ++++++++++++++++++++++++++++
qemu/block_int.h | 12 +++
qemu/blockdev.c | 19 +++++
qemu/hmp-commands.hx | 15 ++++
qemu/hmp.c | 11 ++
qemu/hmp.h | 1
qemu/qapi-schema.json | 21 ++++-
qemu/qemu-common.h | 1
qemu/qmp-commands.hx | 24 ++++++
17 files changed, 912 insertions(+), 2 deletions(-)
- [Qemu-devel] [v2 Patch 0/9]block: Image file reopen and dynamic host pagecache change,
Supriya Kannery <=
- [Qemu-devel] [v2 Patch 1/9]block: Framework for reopening image files safely, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 4/9]block: vmdk image file reopen, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 3/9]block: raw-win32 image file reopen, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 2/9]block: raw-posix image file reopen, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 5/9]block: qcow2 image file reopen, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 9/9]block: Enhance "info block" to display host cache setting, Supriya Kannery, 2012/07/30
- [Qemu-devel] [v2 Patch 7/9]block: qed image file reopen, Supriya Kannery, 2012/07/30