[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-stable] [PATCH] block-commit: speed is an optiona
From: |
Fam Zheng |
Subject: |
Re: [Qemu-devel] [Qemu-stable] [PATCH] block-commit: speed is an optional parameter |
Date: |
Fri, 11 Apr 2014 09:09:07 +0800 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On Thu, 04/10 19:36, Max Reitz wrote:
> As speed is an optional parameter for the QMP block-commit command, it
> should be set to 0 if not given (as it is undefined if has_speed is
> false), that is, the speed should not be limited.
>
> Signed-off-by: Max Reitz <address@hidden>
> Reviewed-by: Eric Blake <address@hidden>
> ---
> This patch was previously part of the "qemu-img: Implement commit like
> QMP" series, but as this is a general bugfix, it has been separated.
> ---
Reviewed-by: Fam Zheng <address@hidden>
The (generated) caller qmp_marshal_input_block_commit() actually leaves speed
uninitialized, so we're not safe without this patch:
int qmp_marshal_input_block_commit(Monitor *mon, const QDict *qdict, QObject
**ret)
{
Error *local_err = NULL;
Error **errp = &local_err;
QDict *args = (QDict *)qdict;
QmpInputVisitor *mi;
QapiDeallocVisitor *md;
Visitor *v;
char * device = NULL;
bool has_base = false;
char * base = NULL;
char * top = NULL;
bool has_speed = false;
int64_t speed;
I'm wondering what the reason is to initialize pointers (like base and device)
while leaving int64_t values uninitilized in the code generator?
Fam
> blockdev.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/blockdev.c b/blockdev.c
> index c3422a1..5dd01ea 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -1876,6 +1876,10 @@ void qmp_block_commit(const char *device,
> */
> BlockdevOnError on_error = BLOCKDEV_ON_ERROR_REPORT;
>
> + if (!has_speed) {
> + speed = 0;
> + }
> +
> /* drain all i/o before commits */
> bdrv_drain_all();
>
> --
> 1.9.1
>
>