[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [v1 Patch 3/10]Qemu: Cmd "block_set_hostcache" for dyna
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [v1 Patch 3/10]Qemu: Cmd "block_set_hostcache" for dynamic cache change |
Date: |
Fri, 15 Jun 2012 15:56:54 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20120430 Thunderbird/12.0.1 |
On 06/15/2012 02:47 PM, Supriya Kannery wrote:
> New command "block_set_hostcache" added for dynamically changing
> host pagecache setting of a block device.
>
> Usage:
> block_set_hostcache <device> <option>
> <device> = block device
> <option> = on/off
>
> Example:
> (qemu) block_set_hostcache ide0-hd0 off
>
> Signed-off-by: Supriya Kannery <address@hidden>
>
> ---
> block.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> block.h | 2 ++
> blockdev.c | 26 ++++++++++++++++++++++++++
> blockdev.h | 2 ++
> hmp-commands.hx | 14 ++++++++++++++
> qmp-commands.hx | 27 +++++++++++++++++++++++++++
> 6 files changed, 125 insertions(+)
Doesn't this also need to touch qapi-schema.json?
[/me reads full patch]
Oh, you did - but your diffstat is stale. It might be worth figuring
out what in your workflow leads to stale diffstats.
>
> Index: qemu/block.c
> ===================================================================
> --- qemu.orig/block.c
> +++ qemu/block.c
> @@ -858,6 +858,35 @@ unlink_and_fail:
> return ret;
> }
>
> +int bdrv_reopen(BlockDriverState *bs, int bdrv_flags)
> +{
> + BlockDriver *drv = bs->drv;
> + int ret = 0, open_flags;
> +
> + /* Quiesce IO for the given block device */
> + qemu_aio_flush();
> + ret = bdrv_flush(bs);
> + if (ret != 0) {
> + qerror_report(QERR_DATA_SYNC_FAILED, bs->device_name);
> + return ret;
> + }
> + open_flags = bs->open_flags;
> + bdrv_close(bs);
> +
> + ret = bdrv_open(bs, bs->filename, bdrv_flags, drv);
Yuck. This is bad, and why 'transaction' was invented. Any time you
close() before open() you risk completely losing the file...
> + if (ret < 0) {
> + /* Reopen failed. Try to open with original flags */
> + qerror_report(QERR_OPEN_FILE_FAILED, bs->filename);
> + ret = bdrv_open(bs, bs->filename, open_flags, drv);
> + if (ret < 0) {
> + /* Reopen failed with orig and modified flags */
> + abort();
and an abort() is not a nice reaction to that.
I think we should rebase the series to do the safe reopen prior to
adding this command (at least, just judging by the title of 4/10), to
avoid intermediate bad code.
> @@ -808,7 +808,6 @@ ETEXI
> .mhandler.cmd = hmp_migrate,
> },
>
> -
> STEXI
Spurious whitespace change.
> +
> +SQMP
> +block_set_hostcache
QMP commands favor '-' over '_'; this should be 'block-set-hostcache'.
> Index: qemu/qapi-schema.json
> ===================================================================
> --- qemu.orig/qapi-schema.json
> +++ qemu/qapi-schema.json
> @@ -1598,6 +1598,22 @@
> { 'command': 'block_set_io_throttle',
> 'data': { 'device': 'str', 'bps': 'int', 'bps_rd': 'int', 'bps_wr': 'int',
> 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 'int' } }
> +##
> +# @block_set_hostcache:
> +#
> +# Change host pagecache setting of a block device
> +#
> +# @device: name of the block device
> +#
> +# @option: hostcache setting (true/false)
> +#
> +# Returns: Nothing on success
> +# If @device is not a valid block device, DeviceNotFound
What happens if the device is valid, but the setting cannot be changed
(perhaps because reopen has not been implemented for that driver)?
--
Eric Blake address@hidden +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [v1 Patch 0/10]Qemu: Dynamic host pagecache change and image file reopen, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 1/10]Qemu: Enhance "info block" to display host cache setting, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 3/10]Qemu: Cmd "block_set_hostcache" for dynamic cache change, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 4/10]Qemu: Framework for reopening image files safely, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 2/10]Qemu: Error classes for hostcache setting and data sync failures, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 6/10]Qemu: raw-win32 image file reopen, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 5/10]Qemu: raw-posix image file reopen, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 7/10]Qemu: vmdk image file reopen, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 8/10]Qemu: qcow2 image file reopen, Supriya Kannery, 2012/06/15
- [Qemu-devel] [v1 Patch 9/10]Qemu: qcow image file reopen, Supriya Kannery, 2012/06/15