1
The following changes since commit 64175afc695c0672876fbbfc31b299c86d562cb4:
1
The following changes since commit 8cb41fda78c7ebde0dd248c6afe1d336efb0de50:
2
2
3
arm_gicv3: Fix ICC_BPR1 reset value when EL3 not implemented (2017-06-07 17:21:44 +0100)
3
Merge remote-tracking branch 'remotes/philmd/tags/machine-20211101' into staging (2021-11-02 05:53:45 -0400)
4
4
5
are available in the git repository at:
5
are available in the Git repository at:
6
6
7
git://github.com/codyprime/qemu-kvm-jtc.git tags/block-pull-request
7
https://github.com/XanClic/qemu.git tags/pull-block-2021-11-02
8
8
9
for you to fetch changes up to 56faeb9bb6872b3f926b3b3e0452a70beea10af2:
9
for you to fetch changes up to 7da9623cc078229caf07c290e16401ccdb9408d2:
10
10
11
block/gluster.c: Handle qdict_array_entries() failure (2017-06-09 08:41:29 -0400)
11
block/vpc: Add a sanity check that fixed-size images have the right type (2021-11-02 12:47:51 +0100)
12
12
13
----------------------------------------------------------------
13
----------------------------------------------------------------
14
Gluster patch
14
Emanuele Giuseppe Esposito (1):
15
----------------------------------------------------------------
15
pylint: fix errors and warnings generated by tests/qemu-iotests/297
16
16
17
Peter Maydell (1):
17
Eric Blake (1):
18
block/gluster.c: Handle qdict_array_entries() failure
18
qemu-img: Consistent docs for convert -F
19
19
20
block/gluster.c | 3 +--
20
Thomas Huth (1):
21
1 file changed, 1 insertion(+), 2 deletions(-)
21
block/vpc: Add a sanity check that fixed-size images have the right
22
type
23
24
Thomas Weißschuh (1):
25
vmdk: allow specification of tools version
26
27
docs/tools/qemu-img.rst | 2 +-
28
qapi/block-core.json | 3 +++
29
block/vmdk.c | 24 ++++++++++++++++++++----
30
block/vpc.c | 3 ++-
31
qemu-img-cmds.hx | 2 +-
32
tests/qemu-iotests/129 | 18 +++++++++---------
33
tests/qemu-iotests/310 | 16 ++++++++--------
34
tests/qemu-iotests/check | 11 ++++++-----
35
tests/qemu-iotests/iotests.py | 7 ++++---
36
tests/qemu-iotests/tests/image-fleecing | 4 ++--
37
10 files changed, 56 insertions(+), 34 deletions(-)
22
38
23
--
39
--
24
2.9.3
40
2.31.1
25
41
26
42
diff view generated by jsdifflib
New patch
1
From: Eric Blake <eblake@redhat.com>
1
2
3
Use consistent capitalization, and fix a missed line (we duplicate the
4
qemu-img synopses in too many places).
5
6
Fixes: 1899bf4737 (qemu-img: Add -F shorthand to convert)
7
Signed-off-by: Eric Blake <eblake@redhat.com>
8
Message-Id: <20210921142812.2631605-1-eblake@redhat.com>
9
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
10
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
11
---
12
docs/tools/qemu-img.rst | 2 +-
13
qemu-img-cmds.hx | 2 +-
14
2 files changed, 2 insertions(+), 2 deletions(-)
15
16
diff --git a/docs/tools/qemu-img.rst b/docs/tools/qemu-img.rst
17
index XXXXXXX..XXXXXXX 100644
18
--- a/docs/tools/qemu-img.rst
19
+++ b/docs/tools/qemu-img.rst
20
@@ -XXX,XX +XXX,XX @@ Command description:
21
4
22
Error on reading data
23
24
-.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps [--skip-broken-bitmaps]] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE [-F backing_fmt]] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME
25
+.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps [--skip-broken-bitmaps]] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE [-F BACKING_FMT]] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME
26
27
Convert the disk image *FILENAME* or a snapshot *SNAPSHOT_PARAM*
28
to disk image *OUTPUT_FILENAME* using format *OUTPUT_FMT*. It can
29
diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx
30
index XXXXXXX..XXXXXXX 100644
31
--- a/qemu-img-cmds.hx
32
+++ b/qemu-img-cmds.hx
33
@@ -XXX,XX +XXX,XX @@ ERST
34
DEF("convert", img_convert,
35
"convert [--object objectdef] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps] [-U] [-C] [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-B backing_file [-F backing_fmt]] [-o options] [-l snapshot_param] [-S sparse_size] [-r rate_limit] [-m num_coroutines] [-W] [--salvage] filename [filename2 [...]] output_filename")
36
SRST
37
-.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] [--salvage] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME
38
+.. option:: convert [--object OBJECTDEF] [--image-opts] [--target-image-opts] [--target-is-zero] [--bitmaps] [-U] [-C] [-c] [-p] [-q] [-n] [-f FMT] [-t CACHE] [-T SRC_CACHE] [-O OUTPUT_FMT] [-B BACKING_FILE [-F BACKING_FMT]] [-o OPTIONS] [-l SNAPSHOT_PARAM] [-S SPARSE_SIZE] [-r RATE_LIMIT] [-m NUM_COROUTINES] [-W] [--salvage] FILENAME [FILENAME2 [...]] OUTPUT_FILENAME
39
ERST
40
41
DEF("create", img_create,
42
--
43
2.31.1
44
45
diff view generated by jsdifflib
New patch
1
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
1
2
3
Test 297 in tests/qemu-iotests currently fails: pylint has
4
learned new things to check, or we simply missed them.
5
6
All fixes in this patch are related to additional spaces used
7
or wrong indentation. No functional change intended.
8
9
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
10
Message-Id: <20211008062821.1010967-2-eesposit@redhat.com>
11
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
12
---
13
tests/qemu-iotests/129 | 18 +++++++++---------
14
tests/qemu-iotests/310 | 16 ++++++++--------
15
tests/qemu-iotests/check | 11 ++++++-----
16
tests/qemu-iotests/iotests.py | 7 ++++---
17
tests/qemu-iotests/tests/image-fleecing | 4 ++--
18
5 files changed, 29 insertions(+), 27 deletions(-)
19
20
diff --git a/tests/qemu-iotests/129 b/tests/qemu-iotests/129
21
index XXXXXXX..XXXXXXX 100755
22
--- a/tests/qemu-iotests/129
23
+++ b/tests/qemu-iotests/129
24
@@ -XXX,XX +XXX,XX @@ class TestStopWithBlockJob(iotests.QMPTestCase):
25
self.do_test_stop("drive-backup", device="drive0",
26
target=self.target_img, format=iotests.imgfmt,
27
sync="full",
28
- x_perf={ 'max-chunk': 65536,
29
- 'max-workers': 8 })
30
+ x_perf={'max-chunk': 65536,
31
+ 'max-workers': 8})
32
33
def test_block_commit(self):
34
# Add overlay above the source node so that we actually use a
35
@@ -XXX,XX +XXX,XX @@ class TestStopWithBlockJob(iotests.QMPTestCase):
36
'1G')
37
38
result = self.vm.qmp('blockdev-add', **{
39
- 'node-name': 'overlay',
40
- 'driver': iotests.imgfmt,
41
- 'file': {
42
- 'driver': 'file',
43
- 'filename': self.overlay_img
44
- }
45
- })
46
+ 'node-name': 'overlay',
47
+ 'driver': iotests.imgfmt,
48
+ 'file': {
49
+ 'driver': 'file',
50
+ 'filename': self.overlay_img
51
+ }
52
+ })
53
self.assert_qmp(result, 'return', {})
54
55
result = self.vm.qmp('blockdev-snapshot',
56
diff --git a/tests/qemu-iotests/310 b/tests/qemu-iotests/310
57
index XXXXXXX..XXXXXXX 100755
58
--- a/tests/qemu-iotests/310
59
+++ b/tests/qemu-iotests/310
60
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base.img') as base_img_path, \
61
assert qemu_io_silent(base_img_path, '-c', 'write -P 1 3M 1M') == 0
62
assert qemu_img('create', '-f', iotests.imgfmt, '-b', base_img_path,
63
'-F', iotests.imgfmt, mid_img_path) == 0
64
- assert qemu_io_silent(mid_img_path, '-c', 'write -P 3 2M 1M') == 0
65
- assert qemu_io_silent(mid_img_path, '-c', 'write -P 3 4M 1M') == 0
66
+ assert qemu_io_silent(mid_img_path, '-c', 'write -P 3 2M 1M') == 0
67
+ assert qemu_io_silent(mid_img_path, '-c', 'write -P 3 4M 1M') == 0
68
assert qemu_img('create', '-f', iotests.imgfmt, '-b', mid_img_path,
69
'-F', iotests.imgfmt, top_img_path) == 0
70
- assert qemu_io_silent(top_img_path, '-c', 'write -P 2 1M 1M') == 0
71
+ assert qemu_io_silent(top_img_path, '-c', 'write -P 2 1M 1M') == 0
72
73
# 0 1 2 3 4
74
# top 2
75
@@ -XXX,XX +XXX,XX @@ with iotests.FilePath('base.img') as base_img_path, \
76
assert qemu_img('rebase', '-u', '-b', '', '-f', iotests.imgfmt,
77
top_img_path) == 0
78
79
- assert qemu_io_silent(top_img_path, '-c', 'read -P 0 0 1M') == 0
80
- assert qemu_io_silent(top_img_path, '-c', 'read -P 2 1M 1M') == 0
81
- assert qemu_io_silent(top_img_path, '-c', 'read -P 3 2M 1M') == 0
82
- assert qemu_io_silent(top_img_path, '-c', 'read -P 0 3M 1M') == 0
83
- assert qemu_io_silent(top_img_path, '-c', 'read -P 3 4M 1M') == 0
84
+ assert qemu_io_silent(top_img_path, '-c', 'read -P 0 0 1M') == 0
85
+ assert qemu_io_silent(top_img_path, '-c', 'read -P 2 1M 1M') == 0
86
+ assert qemu_io_silent(top_img_path, '-c', 'read -P 3 2M 1M') == 0
87
+ assert qemu_io_silent(top_img_path, '-c', 'read -P 0 3M 1M') == 0
88
+ assert qemu_io_silent(top_img_path, '-c', 'read -P 3 4M 1M') == 0
89
90
log('Done')
91
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
92
index XXXXXXX..XXXXXXX 100755
93
--- a/tests/qemu-iotests/check
94
+++ b/tests/qemu-iotests/check
95
@@ -XXX,XX +XXX,XX @@ def make_argparser() -> argparse.ArgumentParser:
96
97
p.add_argument('-d', dest='debug', action='store_true', help='debug')
98
p.add_argument('-p', dest='print', action='store_true',
99
- help='redirects qemu\'s stdout and stderr to the test output')
100
+ help='redirects qemu\'s stdout and stderr to '
101
+ 'the test output')
102
p.add_argument('-gdb', action='store_true',
103
- help="start gdbserver with $GDB_OPTIONS options \
104
- ('localhost:12345' if $GDB_OPTIONS is empty)")
105
+ help="start gdbserver with $GDB_OPTIONS options "
106
+ "('localhost:12345' if $GDB_OPTIONS is empty)")
107
p.add_argument('-valgrind', action='store_true',
108
- help='use valgrind, sets VALGRIND_QEMU environment '
109
- 'variable')
110
+ help='use valgrind, sets VALGRIND_QEMU environment '
111
+ 'variable')
112
113
p.add_argument('-misalign', action='store_true',
114
help='misalign memory allocations')
115
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
116
index XXXXXXX..XXXXXXX 100644
117
--- a/tests/qemu-iotests/iotests.py
118
+++ b/tests/qemu-iotests/iotests.py
119
@@ -XXX,XX +XXX,XX @@ def _post_shutdown(self) -> None:
120
super()._post_shutdown()
121
if not qemu_valgrind or not self._popen:
122
return
123
- valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind"
124
+ valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind"
125
if self.exitcode() == 99:
126
with open(valgrind_filename, encoding='utf-8') as f:
127
print(f.read())
128
@@ -XXX,XX +XXX,XX @@ def write(self, arg=None):
129
130
class ReproducibleTestRunner(unittest.TextTestRunner):
131
def __init__(self, stream: Optional[TextIO] = None,
132
- resultclass: Type[unittest.TestResult] = ReproducibleTestResult,
133
- **kwargs: Any) -> None:
134
+ resultclass: Type[unittest.TestResult] =
135
+ ReproducibleTestResult,
136
+ **kwargs: Any) -> None:
137
rstream = ReproducibleStreamWrapper(stream or sys.stdout)
138
super().__init__(stream=rstream, # type: ignore
139
descriptions=True,
140
diff --git a/tests/qemu-iotests/tests/image-fleecing b/tests/qemu-iotests/tests/image-fleecing
141
index XXXXXXX..XXXXXXX 100755
142
--- a/tests/qemu-iotests/tests/image-fleecing
143
+++ b/tests/qemu-iotests/tests/image-fleecing
144
@@ -XXX,XX +XXX,XX @@ def do_test(use_cbw, base_img_path, fleece_img_path, nbd_sock_path, vm):
145
146
nbd_uri = 'nbd+unix:///%s?socket=%s' % (tmp_node, nbd_sock_path)
147
log(vm.qmp('nbd-server-start',
148
- {'addr': { 'type': 'unix',
149
- 'data': { 'path': nbd_sock_path } } }))
150
+ {'addr': {'type': 'unix',
151
+ 'data': {'path': nbd_sock_path}}}))
152
153
log(vm.qmp('nbd-server-add', device=tmp_node))
154
155
--
156
2.31.1
157
158
diff view generated by jsdifflib
New patch
1
From: Thomas Weißschuh <thomas.weissschuh.ext@zeiss.com>
1
2
3
VMDK files support an attribute that represents the version of the guest
4
tools that are installed on the disk.
5
This attribute is used by vSphere before a machine has been started to
6
determine if the VM has the guest tools installed.
7
This is important when configuring "Operating system customizations" in
8
vSphere, as it checks for the presence of the guest tools before
9
allowing those customizations.
10
Thus when the VM has not yet booted normally it would be impossible to
11
customize it, therefore preventing a customized first-boot.
12
13
The attribute should not hurt on disks that do not have the guest tools
14
installed and indeed the VMware tools also unconditionally add this
15
attribute.
16
(Defaulting to the value "2147483647", as is done in this patch)
17
18
Signed-off-by: Thomas Weißschuh <thomas.weissschuh.ext@zeiss.com>
19
Message-Id: <20210913130419.13241-1-thomas.weissschuh.ext@zeiss.com>
20
[hreitz: Added missing '#' in block-core.json]
21
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
22
---
23
qapi/block-core.json | 3 +++
24
block/vmdk.c | 24 ++++++++++++++++++++----
25
2 files changed, 23 insertions(+), 4 deletions(-)
26
27
diff --git a/qapi/block-core.json b/qapi/block-core.json
28
index XXXXXXX..XXXXXXX 100644
29
--- a/qapi/block-core.json
30
+++ b/qapi/block-core.json
31
@@ -XXX,XX +XXX,XX @@
32
# @adapter-type: The adapter type used to fill in the descriptor. Default: ide.
33
# @hwversion: Hardware version. The meaningful options are "4" or "6".
34
# Default: "4".
35
+# @toolsversion: VMware guest tools version.
36
+# Default: "2147483647" (Since 6.2)
37
# @zeroed-grain: Whether to enable zeroed-grain feature for sparse subformats.
38
# Default: false.
39
#
40
@@ -XXX,XX +XXX,XX @@
41
'*backing-file': 'str',
42
'*adapter-type': 'BlockdevVmdkAdapterType',
43
'*hwversion': 'str',
44
+ '*toolsversion': 'str',
45
'*zeroed-grain': 'bool' } }
46
47
48
diff --git a/block/vmdk.c b/block/vmdk.c
49
index XXXXXXX..XXXXXXX 100644
50
--- a/block/vmdk.c
51
+++ b/block/vmdk.c
52
@@ -XXX,XX +XXX,XX @@
53
#define VMDK_ZEROED (-3)
54
55
#define BLOCK_OPT_ZEROED_GRAIN "zeroed_grain"
56
+#define BLOCK_OPT_TOOLSVERSION "toolsversion"
57
58
typedef struct {
59
uint32_t version;
60
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
61
BlockdevVmdkAdapterType adapter_type,
62
const char *backing_file,
63
const char *hw_version,
64
+ const char *toolsversion,
65
bool compat6,
66
bool zeroed_grain,
67
vmdk_create_extent_fn extent_fn,
68
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
69
"ddb.geometry.cylinders = \"%" PRId64 "\"\n"
70
"ddb.geometry.heads = \"%" PRIu32 "\"\n"
71
"ddb.geometry.sectors = \"63\"\n"
72
- "ddb.adapterType = \"%s\"\n";
73
+ "ddb.adapterType = \"%s\"\n"
74
+ "ddb.toolsVersion = \"%s\"\n";
75
76
ext_desc_lines = g_string_new(NULL);
77
78
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
79
if (!hw_version) {
80
hw_version = "4";
81
}
82
+ if (!toolsversion) {
83
+ toolsversion = "2147483647";
84
+ }
85
86
if (adapter_type != BLOCKDEV_VMDK_ADAPTER_TYPE_IDE) {
87
/* that's the number of heads with which vmware operates when
88
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_do_create(int64_t size,
89
size /
90
(int64_t)(63 * number_heads * BDRV_SECTOR_SIZE),
91
number_heads,
92
- BlockdevVmdkAdapterType_str(adapter_type));
93
+ BlockdevVmdkAdapterType_str(adapter_type),
94
+ toolsversion);
95
desc_len = strlen(desc);
96
/* the descriptor offset = 0x200 */
97
if (!split && !flat) {
98
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
99
BlockdevVmdkAdapterType adapter_type_enum;
100
char *backing_file = NULL;
101
char *hw_version = NULL;
102
+ char *toolsversion = NULL;
103
char *fmt = NULL;
104
BlockdevVmdkSubformat subformat;
105
int ret = 0;
106
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
107
adapter_type = qemu_opt_get_del(opts, BLOCK_OPT_ADAPTER_TYPE);
108
backing_file = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FILE);
109
hw_version = qemu_opt_get_del(opts, BLOCK_OPT_HWVERSION);
110
+ toolsversion = qemu_opt_get_del(opts, BLOCK_OPT_TOOLSVERSION);
111
compat6 = qemu_opt_get_bool_del(opts, BLOCK_OPT_COMPAT6, false);
112
if (strcmp(hw_version, "undefined") == 0) {
113
g_free(hw_version);
114
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
115
.opts = opts,
116
};
117
ret = vmdk_co_do_create(total_size, subformat, adapter_type_enum,
118
- backing_file, hw_version, compat6, zeroed_grain,
119
- vmdk_co_create_opts_cb, &data, errp);
120
+ backing_file, hw_version, toolsversion, compat6,
121
+ zeroed_grain, vmdk_co_create_opts_cb, &data, errp);
122
123
exit:
124
g_free(backing_fmt);
125
g_free(adapter_type);
126
g_free(backing_file);
127
g_free(hw_version);
128
+ g_free(toolsversion);
129
g_free(fmt);
130
g_free(desc);
131
g_free(path);
132
@@ -XXX,XX +XXX,XX @@ static int coroutine_fn vmdk_co_create(BlockdevCreateOptions *create_options,
133
opts->adapter_type,
134
opts->backing_file,
135
opts->hwversion,
136
+ opts->toolsversion,
137
false,
138
opts->zeroed_grain,
139
vmdk_co_create_cb,
140
@@ -XXX,XX +XXX,XX @@ static QemuOptsList vmdk_create_opts = {
141
.help = "VMDK hardware version",
142
.def_value_str = "undefined"
143
},
144
+ {
145
+ .name = BLOCK_OPT_TOOLSVERSION,
146
+ .type = QEMU_OPT_STRING,
147
+ .help = "VMware guest tools version",
148
+ },
149
{
150
.name = BLOCK_OPT_SUBFMT,
151
.type = QEMU_OPT_STRING,
152
--
153
2.31.1
154
155
diff view generated by jsdifflib
1
From: Peter Maydell <peter.maydell@linaro.org>
1
From: Thomas Huth <thuth@redhat.com>
2
2
3
In qemu_gluster_parse_json(), the call to qdict_array_entries()
3
The code in vpc.c uses BDRVVPCState->footer.type in various places
4
could return a negative error code, which we were ignoring
4
to decide whether the image is a fixed-size (VHD_FIXED) or a dynamic
5
because we assigned the result to an unsigned variable.
5
(VHD_DYNAMIC) image. However, we never check that this field really
6
Fix this by using the 'int' type instead, which matches the
6
contains VHD_FIXED if we detected a fixed size image in vpc_open(),
7
return type of qdict_array_entries() and also the type
7
so a wrong value here could cause quite some trouble during runtime.
8
we use for the loop enumeration variable 'i'.
9
8
10
(Spotted by Coverity, CID 1360960.)
9
Suggested-by: Kevin Wolf <kwolf@redhat.com>
10
Signed-off-by: Thomas Huth <thuth@redhat.com>
11
Message-Id: <20211012082702.792259-1-thuth@redhat.com>
12
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
13
---
14
block/vpc.c | 3 ++-
15
1 file changed, 2 insertions(+), 1 deletion(-)
11
16
12
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
17
diff --git a/block/vpc.c b/block/vpc.c
13
Reviewed-by: Eric Blake <eblake@redhat.com>
14
Reviewed-by: Jeff Cody <jcody@redhat.com>
15
Message-id: 1496682098-1540-1-git-send-email-peter.maydell@linaro.org
16
Signed-off-by: Jeff Cody <jcody@redhat.com>
17
---
18
block/gluster.c | 3 +--
19
1 file changed, 1 insertion(+), 2 deletions(-)
20
21
diff --git a/block/gluster.c b/block/gluster.c
22
index XXXXXXX..XXXXXXX 100644
18
index XXXXXXX..XXXXXXX 100644
23
--- a/block/gluster.c
19
--- a/block/vpc.c
24
+++ b/block/gluster.c
20
+++ b/block/vpc.c
25
@@ -XXX,XX +XXX,XX @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
21
@@ -XXX,XX +XXX,XX @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
26
Error *local_err = NULL;
22
if (ret < 0) {
27
char *str = NULL;
23
goto fail;
28
const char *ptr;
24
}
29
- size_t num_servers;
25
- if (strncmp(footer->creator, "conectix", 8)) {
30
- int i, type;
26
+ if (strncmp(footer->creator, "conectix", 8) ||
31
+ int i, type, num_servers;
27
+ be32_to_cpu(footer->type) != VHD_FIXED) {
32
28
error_setg(errp, "invalid VPC image");
33
/* create opts info from runtime_json_opts list */
29
ret = -EINVAL;
34
opts = qemu_opts_create(&runtime_json_opts, NULL, 0, &error_abort);
30
goto fail;
35
--
31
--
36
2.9.3
32
2.31.1
37
33
38
34
diff view generated by jsdifflib