[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 45/56] blockjob: Lift speed sign conversion out
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [RFC PATCH 45/56] blockjob: Lift speed sign conversion out of commit_start() etc. |
Date: |
Mon, 7 Aug 2017 16:45:49 +0200 |
commit_start() takes int64_t speed. The underlying BlockJob
abstraction takes uint64_t. commit_start() converts from int64_t to
uint64_t, rejecting negative speed.
Lift this check and conversion out of commit_start() and
commit_active_start() into their caller qmp_block_commit(). I'm going
to lift it further until it falls off the top.
Signed-off-by: Markus Armbruster <address@hidden>
---
block/commit.c | 9 ++-------
block/mirror.c | 8 +-------
blockdev.c | 6 ++++++
include/block/block_int.h | 5 +++--
4 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/block/commit.c b/block/commit.c
index 86d780e..f61421f 100644
--- a/block/commit.c
+++ b/block/commit.c
@@ -282,7 +282,8 @@ static BlockDriver bdrv_commit_top = {
};
void commit_start(const char *job_id, BlockDriverState *bs,
- BlockDriverState *base, BlockDriverState *top, int64_t speed,
+ BlockDriverState *base, BlockDriverState *top,
+ uint64_t speed,
BlockdevOnError on_error, const char *backing_file_str,
const char *filter_node_name, Error **errp)
{
@@ -309,12 +310,6 @@ void commit_start(const char *job_id, BlockDriverState *bs,
return;
}
- if (speed < 0) {
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "speed",
- "a non-negative rate limit");
- return;
- }
-
s = block_job_create(job_id, &commit_job_driver, bs, 0, BLK_PERM_ALL,
speed, BLOCK_JOB_DEFAULT, NULL, NULL, errp);
if (!s) {
diff --git a/block/mirror.c b/block/mirror.c
index af0c989..f1adda5 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -1307,7 +1307,7 @@ void mirror_start(const char *job_id, BlockDriverState
*bs,
void commit_active_start(const char *job_id, BlockDriverState *bs,
BlockDriverState *base, int creation_flags,
- int64_t speed, BlockdevOnError on_error,
+ uint64_t speed, BlockdevOnError on_error,
const char *filter_node_name,
BlockCompletionFunc *cb, void *opaque,
bool auto_complete, Error **errp)
@@ -1317,12 +1317,6 @@ void commit_active_start(const char *job_id,
BlockDriverState *bs,
orig_base_flags = bdrv_get_flags(base);
- if (speed < 0) {
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "speed",
- "a non-negative rate limit");
- return;
- }
-
if (bdrv_reopen(base, bs->open_flags, errp)) {
return;
}
diff --git a/blockdev.c b/blockdev.c
index 13df88b..e679f5d 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3102,6 +3102,12 @@ void qmp_block_commit(bool has_job_id, const char
*job_id, const char *device,
return;
}
+ if (speed < 0) {
+ error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "speed",
+ "a non-negative rate limit");
+ goto out;
+ }
+
aio_context = bdrv_get_aio_context(bs);
aio_context_acquire(aio_context);
diff --git a/include/block/block_int.h b/include/block/block_int.h
index 3ff5536..75116e5 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -840,7 +840,8 @@ void stream_start(const char *job_id, BlockDriverState *bs,
*
*/
void commit_start(const char *job_id, BlockDriverState *bs,
- BlockDriverState *base, BlockDriverState *top, int64_t speed,
+ BlockDriverState *base, BlockDriverState *top,
+ uint64_t speed,
BlockdevOnError on_error, const char *backing_file_str,
const char *filter_node_name, Error **errp);
/**
@@ -864,7 +865,7 @@ void commit_start(const char *job_id, BlockDriverState *bs,
*/
void commit_active_start(const char *job_id, BlockDriverState *bs,
BlockDriverState *base, int creation_flags,
- int64_t speed, BlockdevOnError on_error,
+ uint64_t speed, BlockdevOnError on_error,
const char *filter_node_name,
BlockCompletionFunc *cb, void *opaque,
bool auto_complete, Error **errp);
--
2.7.5
- Re: [Qemu-devel] [RFC PATCH 12/56] pc-dimm: Make size and address unsigned in QAPI/QMP, (continued)
- [Qemu-devel] [RFC PATCH 26/56] block: Make BlockMeasureInfo sizes unsigned in QAPI, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 52/56] block/nfs: Reject negative readahead-size, page-cache-size, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 31/56] block: Make throttle byte rates and sizes unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 40/56] blockjob: Lift speed sign conversion out of backup_job_create(), Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 47/56] blockjob: Make BlockJobInfo and event offsets unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 44/56] blockjob: Lift speed sign conversion out of blockdev_mirror_common(), Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 30/56] block: Make write thresholds unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 45/56] blockjob: Lift speed sign conversion out of commit_start() etc.,
Markus Armbruster <=
- [Qemu-devel] [RFC PATCH 23/56] option: Fix type of qemu_opt_set_number() parameter @val, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 29/56] block: Make BlockDirtyInfo byte count unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 43/56] blockjob: Lift speed sign conversion out of mirror_start(), Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 50/56] block: Make BLOCK_IMAGE_CORRUPTED offset, size unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 56/56] crypto: Make QCryptoBlockInfoLUKS offsets unsigned in QAPI/QMP, Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 42/56] blockjob: Lift speed sign conversion out of stream_start(), Markus Armbruster, 2017/08/07
- [Qemu-devel] [RFC PATCH 28/56] block: Widen dirty bitmap granularity to uint64_t for safety, Markus Armbruster, 2017/08/07