[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 31/61] qcow2: Evaluate overlap check options
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PULL 31/61] qcow2: Evaluate overlap check options |
Date: |
Fri, 11 Oct 2013 17:05:21 +0200 |
From: Max Reitz <address@hidden>
Evaluate the runtime overlap check options and set
BDRVQcowState.overlap_check appropriately.
Signed-off-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/qcow2.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/block/qcow2.c b/block/qcow2.c
index eee7eaf..c1abaff 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -425,6 +425,8 @@ static int qcow2_open(BlockDriverState *bs, QDict *options,
int flags,
Error *local_err = NULL;
uint64_t ext_end;
uint64_t l1_vm_state_index;
+ const char *opt_overlap_check;
+ int overlap_check_template = 0;
ret = bdrv_pread(bs->file, 0, &header, sizeof(header));
if (ret < 0) {
@@ -688,7 +690,32 @@ static int qcow2_open(BlockDriverState *bs, QDict
*options, int flags,
s->discard_passthrough[QCOW2_DISCARD_OTHER] =
qemu_opt_get_bool(opts, QCOW2_OPT_DISCARD_OTHER, false);
- s->overlap_check = QCOW2_OL_CACHED;
+ opt_overlap_check = qemu_opt_get(opts, "overlap-check") ?: "cached";
+ if (!strcmp(opt_overlap_check, "none")) {
+ overlap_check_template = 0;
+ } else if (!strcmp(opt_overlap_check, "constant")) {
+ overlap_check_template = QCOW2_OL_CONSTANT;
+ } else if (!strcmp(opt_overlap_check, "cached")) {
+ overlap_check_template = QCOW2_OL_CACHED;
+ } else if (!strcmp(opt_overlap_check, "all")) {
+ overlap_check_template = QCOW2_OL_ALL;
+ } else {
+ error_setg(errp, "Unsupported value '%s' for qcow2 option "
+ "'overlap-check'. Allowed are either of the following: "
+ "none, constant, cached, all", opt_overlap_check);
+ qemu_opts_del(opts);
+ ret = -EINVAL;
+ goto fail;
+ }
+
+ s->overlap_check = 0;
+ for (i = 0; i < QCOW2_OL_MAX_BITNR; i++) {
+ /* overlap-check defines a template bitmask, but every flag may be
+ * overwritten through the associated boolean option */
+ s->overlap_check |=
+ qemu_opt_get_bool(opts, overlap_bool_option_names[i],
+ overlap_check_template & (1 << i)) << i;
+ }
qemu_opts_del(opts);
--
1.8.1.4
- [Qemu-devel] [PULL 21/61] qcow2: Add missing space in error message, (continued)
- [Qemu-devel] [PULL 21/61] qcow2: Add missing space in error message, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 20/61] block: qemu-iotests for vhdx, read sample dynamic image, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 22/61] qcow2: Remove wrong metadata overlap check, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 23/61] qcow2: Fix snapshot restoration in snapshot_create, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 24/61] qcow2: Use better type for numerical snapshot ID, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 25/61] block: Improve driver whitelist checks, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 26/61] qcow2: Use negated overflow check mask, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 27/61] qcow2: Make overlap check mask variable, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 28/61] qcow2: Add overlap-check options, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 29/61] qcow2: Array assigning options to OL check bits, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 31/61] qcow2: Evaluate overlap check options,
Kevin Wolf <=
- [Qemu-devel] [PULL 30/61] qcow2: Add more overlap check bitmask macros, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 32/61] block/raw_bsd: Employ error parameter, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 33/61] block/raw-win32: Employ error parameter, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 34/61] blkdebug: Employ error parameter, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 35/61] blkverify: Employ error parameter, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 36/61] qemu-iotests: move blank lines of output in case 059, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 37/61] block/raw-posix: Employ error parameter, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 38/61] tests: build the helper program by default, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 39/61] build: add command check-clean, Kevin Wolf, 2013/10/11
- [Qemu-devel] [PULL 42/61] qapi-types/visit.py: Pass whole expr dict for structs, Kevin Wolf, 2013/10/11