1
The following changes since commit 3521ade3510eb5cefb2e27a101667f25dad89935:
1
The following changes since commit 8cb41fda78c7ebde0dd248c6afe1d336efb0de50:
2
2
3
Merge remote-tracking branch 'remotes/thuth-gitlab/tags/pull-request-2021-07-29' into staging (2021-07-29 13:17:20 +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
https://gitlab.com/stefanha/qemu.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 cc8eecd7f105a1dff5876adeb238a14696061a4a:
9
for you to fetch changes up to 7da9623cc078229caf07c290e16401ccdb9408d2:
10
10
11
MAINTAINERS: Added myself as a reviewer for the NVMe Block Driver (2021-07-29 17:17:34 +0100)
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
Pull request
14
Emanuele Giuseppe Esposito (1):
15
pylint: fix errors and warnings generated by tests/qemu-iotests/297
15
16
16
The main fix here is for io_uring. Spurious -EAGAIN errors can happen and the
17
Eric Blake (1):
17
request needs to be resubmitted.
18
qemu-img: Consistent docs for convert -F
18
19
19
The MAINTAINERS changes carry no risk and we might as well include them in QEMU
20
Thomas Huth (1):
20
6.1.
21
block/vpc: Add a sanity check that fixed-size images have the right
22
type
21
23
22
----------------------------------------------------------------
24
Thomas Weißschuh (1):
25
vmdk: allow specification of tools version
23
26
24
Fabian Ebner (1):
27
docs/tools/qemu-img.rst | 2 +-
25
block/io_uring: resubmit when result is -EAGAIN
28
qapi/block-core.json | 3 +++
26
29
block/vmdk.c | 24 ++++++++++++++++++++----
27
Philippe Mathieu-Daudé (1):
30
block/vpc.c | 3 ++-
28
MAINTAINERS: Added myself as a reviewer for the NVMe Block Driver
31
qemu-img-cmds.hx | 2 +-
29
32
tests/qemu-iotests/129 | 18 +++++++++---------
30
Stefano Garzarella (1):
33
tests/qemu-iotests/310 | 16 ++++++++--------
31
MAINTAINERS: add Stefano Garzarella as io_uring reviewer
34
tests/qemu-iotests/check | 11 ++++++-----
32
35
tests/qemu-iotests/iotests.py | 7 ++++---
33
MAINTAINERS | 2 ++
36
tests/qemu-iotests/tests/image-fleecing | 4 ++--
34
block/io_uring.c | 16 +++++++++++++++-
37
10 files changed, 56 insertions(+), 34 deletions(-)
35
2 files changed, 17 insertions(+), 1 deletion(-)
36
38
37
--
39
--
38
2.31.1
40
2.31.1
39
41
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
1
From: Philippe Mathieu-Daudé <philmd@redhat.com>
1
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
2
2
3
I'm interested in following the activity around the NVMe bdrv.
3
Test 297 in tests/qemu-iotests currently fails: pylint has
4
learned new things to check, or we simply missed them.
4
5
5
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
6
All fixes in this patch are related to additional spaces used
6
Message-id: 20210728183340.2018313-1-philmd@redhat.com
7
or wrong indentation. No functional change intended.
7
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
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>
8
---
12
---
9
MAINTAINERS | 1 +
13
tests/qemu-iotests/129 | 18 +++++++++---------
10
1 file changed, 1 insertion(+)
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(-)
11
19
12
diff --git a/MAINTAINERS b/MAINTAINERS
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
13
index XXXXXXX..XXXXXXX 100644
116
index XXXXXXX..XXXXXXX 100644
14
--- a/MAINTAINERS
117
--- a/tests/qemu-iotests/iotests.py
15
+++ b/MAINTAINERS
118
+++ b/tests/qemu-iotests/iotests.py
16
@@ -XXX,XX +XXX,XX @@ F: block/null.c
119
@@ -XXX,XX +XXX,XX @@ def _post_shutdown(self) -> None:
17
NVMe Block Driver
120
super()._post_shutdown()
18
M: Stefan Hajnoczi <stefanha@redhat.com>
121
if not qemu_valgrind or not self._popen:
19
R: Fam Zheng <fam@euphon.net>
122
return
20
+R: Philippe Mathieu-Daudé <philmd@redhat.com>
123
- valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind"
21
L: qemu-block@nongnu.org
124
+ valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind"
22
S: Supported
125
if self.exitcode() == 99:
23
F: block/nvme*
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
24
--
155
--
25
2.31.1
156
2.31.1
26
157
158
diff view generated by jsdifflib
1
From: Fabian Ebner <f.ebner@proxmox.com>
1
From: Thomas Weißschuh <thomas.weissschuh.ext@zeiss.com>
2
2
3
Linux SCSI can throw spurious -EAGAIN in some corner cases in its
3
VMDK files support an attribute that represents the version of the guest
4
completion path, which will end up being the result in the completed
4
tools that are installed on the disk.
5
io_uring request.
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.
6
12
7
Resubmitting such requests should allow block jobs to complete, even
13
The attribute should not hurt on disks that do not have the guest tools
8
if such spurious errors are encountered.
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)
9
17
10
Co-authored-by: Stefan Hajnoczi <stefanha@gmail.com>
18
Signed-off-by: Thomas Weißschuh <thomas.weissschuh.ext@zeiss.com>
11
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
19
Message-Id: <20210913130419.13241-1-thomas.weissschuh.ext@zeiss.com>
12
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
20
[hreitz: Added missing '#' in block-core.json]
13
Message-id: 20210729091029.65369-1-f.ebner@proxmox.com
21
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
14
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
15
---
22
---
16
block/io_uring.c | 16 +++++++++++++++-
23
qapi/block-core.json | 3 +++
17
1 file changed, 15 insertions(+), 1 deletion(-)
24
block/vmdk.c | 24 ++++++++++++++++++++----
25
2 files changed, 23 insertions(+), 4 deletions(-)
18
26
19
diff --git a/block/io_uring.c b/block/io_uring.c
27
diff --git a/qapi/block-core.json b/qapi/block-core.json
20
index XXXXXXX..XXXXXXX 100644
28
index XXXXXXX..XXXXXXX 100644
21
--- a/block/io_uring.c
29
--- a/qapi/block-core.json
22
+++ b/block/io_uring.c
30
+++ b/qapi/block-core.json
23
@@ -XXX,XX +XXX,XX @@ static void luring_process_completions(LuringState *s)
31
@@ -XXX,XX +XXX,XX @@
24
total_bytes = ret + luringcb->total_read;
32
# @adapter-type: The adapter type used to fill in the descriptor. Default: ide.
25
33
# @hwversion: Hardware version. The meaningful options are "4" or "6".
26
if (ret < 0) {
34
# Default: "4".
27
- if (ret == -EINTR) {
35
+# @toolsversion: VMware guest tools version.
28
+ /*
36
+# Default: "2147483647" (Since 6.2)
29
+ * Only writev/readv/fsync requests on regular files or host block
37
# @zeroed-grain: Whether to enable zeroed-grain feature for sparse subformats.
30
+ * devices are submitted. Therefore -EAGAIN is not expected but it's
38
# Default: false.
31
+ * known to happen sometimes with Linux SCSI. Submit again and hope
39
#
32
+ * the request completes successfully.
40
@@ -XXX,XX +XXX,XX @@
33
+ *
41
'*backing-file': 'str',
34
+ * For more information, see:
42
'*adapter-type': 'BlockdevVmdkAdapterType',
35
+ * https://lore.kernel.org/io-uring/20210727165811.284510-3-axboe@kernel.dk/T/#u
43
'*hwversion': 'str',
36
+ *
44
+ '*toolsversion': 'str',
37
+ * If the code is changed to submit other types of requests in the
45
'*zeroed-grain': 'bool' } }
38
+ * future, then this workaround may need to be extended to deal with
46
39
+ * genuine -EAGAIN results that should not be resubmitted
47
40
+ * immediately.
48
diff --git a/block/vmdk.c b/block/vmdk.c
41
+ */
49
index XXXXXXX..XXXXXXX 100644
42
+ if (ret == -EINTR || ret == -EAGAIN) {
50
--- a/block/vmdk.c
43
luring_resubmit(s, luringcb);
51
+++ b/block/vmdk.c
44
continue;
52
@@ -XXX,XX +XXX,XX @@
45
}
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,
46
--
152
--
47
2.31.1
153
2.31.1
48
154
155
diff view generated by jsdifflib
1
From: Stefano Garzarella <sgarzare@redhat.com>
1
From: Thomas Huth <thuth@redhat.com>
2
2
3
I've been working with io_uring for a while so I'd like to help
3
The code in vpc.c uses BDRVVPCState->footer.type in various places
4
with reviews.
4
to decide whether the image is a fixed-size (VHD_FIXED) or a dynamic
5
(VHD_DYNAMIC) image. However, we never check that this field really
6
contains VHD_FIXED if we detected a fixed size image in vpc_open(),
7
so a wrong value here could cause quite some trouble during runtime.
5
8
6
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
9
Suggested-by: Kevin Wolf <kwolf@redhat.com>
7
Message-Id: <20210728131515.131045-1-sgarzare@redhat.com>
10
Signed-off-by: Thomas Huth <thuth@redhat.com>
8
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
11
Message-Id: <20211012082702.792259-1-thuth@redhat.com>
12
Signed-off-by: Hanna Reitz <hreitz@redhat.com>
9
---
13
---
10
MAINTAINERS | 1 +
14
block/vpc.c | 3 ++-
11
1 file changed, 1 insertion(+)
15
1 file changed, 2 insertions(+), 1 deletion(-)
12
16
13
diff --git a/MAINTAINERS b/MAINTAINERS
17
diff --git a/block/vpc.c b/block/vpc.c
14
index XXXXXXX..XXXXXXX 100644
18
index XXXXXXX..XXXXXXX 100644
15
--- a/MAINTAINERS
19
--- a/block/vpc.c
16
+++ b/MAINTAINERS
20
+++ b/block/vpc.c
17
@@ -XXX,XX +XXX,XX @@ Linux io_uring
21
@@ -XXX,XX +XXX,XX @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
18
M: Aarushi Mehta <mehta.aaru20@gmail.com>
22
if (ret < 0) {
19
M: Julia Suvorova <jusual@redhat.com>
23
goto fail;
20
M: Stefan Hajnoczi <stefanha@redhat.com>
24
}
21
+R: Stefano Garzarella <sgarzare@redhat.com>
25
- if (strncmp(footer->creator, "conectix", 8)) {
22
L: qemu-block@nongnu.org
26
+ if (strncmp(footer->creator, "conectix", 8) ||
23
S: Maintained
27
+ be32_to_cpu(footer->type) != VHD_FIXED) {
24
F: block/io_uring.c
28
error_setg(errp, "invalid VPC image");
29
ret = -EINVAL;
30
goto fail;
25
--
31
--
26
2.31.1
32
2.31.1
27
33
34
diff view generated by jsdifflib