include/block/block.h | 17 +- include/block/block_int.h | 26 +-- include/block/throttle-groups.h | 2 +- include/qemu/iov.h | 2 +- block/blkverify.c | 2 +- block/file-posix.c | 2 +- block/io.c | 274 ++++++++++++++++++++++---------- block/throttle-groups.c | 5 +- tests/test-write-threshold.c | 5 +- util/iov.c | 25 ++- block/trace-events | 12 +- 11 files changed, 252 insertions(+), 120 deletions(-)
Hi all!
We want 64bit write-zeroes, and for this, convert all io functions to
64bit.
We chose signed type, to be consistent with off_t (which is signed) and
with possibility for signed return type (where negative value means
error).
Please refer to initial cover-letter
https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg08723.html
for more info.
v4: I found, that some more work is needed for block/block-backend, so
decided to make partI, converting block/io
v4 is based on Kevin's block branch ([PULL 00/34] Block layer patches)
for BDRV_MAX_LENGTH
changes:
01-05: new
06: add Alberto's r-b
07: new
08-16: rebase, add new-style request check, improve commit-msg, drop r-bs
Based-on: <20201211170812.228643-1-kwolf@redhat.com>
Vladimir Sementsov-Ogievskiy (16):
block: refactor bdrv_check_request: add errp
util/iov: make qemu_iovec_init_extended() honest
block: fix theoretical overflow in bdrv_init_padding()
block/io: refactor bdrv_pad_request(): move bdrv_pad_request() up
block/io: bdrv_pad_request(): support qemu_iovec_init_extended failure
block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit
bytes
block/io: improve bdrv_check_request: check qiov too
block: use int64_t as bytes type in tracked requests
block/io: use int64_t bytes in driver wrappers
block/io: support int64_t bytes in bdrv_co_do_pwrite_zeroes()
block/io: support int64_t bytes in bdrv_aligned_pwritev()
block/io: support int64_t bytes in bdrv_co_do_copy_on_readv()
block/io: support int64_t bytes in bdrv_aligned_preadv()
block/io: support int64_t bytes in bdrv_co_p{read,write}v_part()
block/io: support int64_t bytes in read/write wrappers
block/io: use int64_t bytes in copy_range
include/block/block.h | 17 +-
include/block/block_int.h | 26 +--
include/block/throttle-groups.h | 2 +-
include/qemu/iov.h | 2 +-
block/blkverify.c | 2 +-
block/file-posix.c | 2 +-
block/io.c | 274 ++++++++++++++++++++++----------
block/throttle-groups.c | 5 +-
tests/test-write-threshold.c | 5 +-
util/iov.c | 25 ++-
block/trace-events | 12 +-
11 files changed, 252 insertions(+), 120 deletions(-)
--
2.25.4
On 12/11/20 12:39 PM, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
>
> We want 64bit write-zeroes, and for this, convert all io functions to
> 64bit.
>
> We chose signed type, to be consistent with off_t (which is signed) and
> with possibility for signed return type (where negative value means
> error).
>
> Please refer to initial cover-letter
> https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg08723.html
> for more info.
>
> v4: I found, that some more work is needed for block/block-backend, so
> decided to make partI, converting block/io
>
> v4 is based on Kevin's block branch ([PULL 00/34] Block layer patches)
> for BDRV_MAX_LENGTH
>
> changes:
> 01-05: new
> 06: add Alberto's r-b
> 07: new
> 08-16: rebase, add new-style request check, improve commit-msg, drop r-bs
I had planned to send a pull request for this series today, but ran into
a snag. Without this series applied, './check -qcow2' fails 030, 185,
and 297. With it applied, I now also get a failure in 206. I'm trying
to bisect which patch caused the problem, but here's the failure:
206 fail [20:54:54] [20:55:01] 6.9s (last: 6.7s) output
mismatch (see 206.out.bad)
--- /home/eblake/qemu/tests/qemu-iotests/206.out
+++ 206.out.bad
@@ -180,7 +180,7 @@
{"execute": "blockdev-create", "arguments": {"job-id": "job0",
"options": {"driver": "qcow2", "file": "node0", "size":
9223372036854775296}}}
{"return": {}}
-Job failed: Could not resize image: Required too big image size, it
must be not greater than 9223372035781033984
+Job failed: Could not resize image: offset(9223372036854775296) exceeds
maximum(9223372035781033984)
{"execute": "job-dismiss", "arguments": {"id": "job0"}}
{"return": {}}
Looks like it is just a changed error message, so I can touch up the
correct patch and then repackage the pull request tomorrow (it's too
late for me today). Oh, and the 0 exit status of ./check when a test
fails is something I see you already plan on fixing...
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
02.02.2021 05:56, Eric Blake wrote:
> On 12/11/20 12:39 PM, Vladimir Sementsov-Ogievskiy wrote:
>> Hi all!
>>
>> We want 64bit write-zeroes, and for this, convert all io functions to
>> 64bit.
>>
>> We chose signed type, to be consistent with off_t (which is signed) and
>> with possibility for signed return type (where negative value means
>> error).
>>
>> Please refer to initial cover-letter
>> https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg08723.html
>> for more info.
>>
>> v4: I found, that some more work is needed for block/block-backend, so
>> decided to make partI, converting block/io
>>
>> v4 is based on Kevin's block branch ([PULL 00/34] Block layer patches)
>> for BDRV_MAX_LENGTH
>>
>> changes:
>> 01-05: new
>> 06: add Alberto's r-b
>> 07: new
>> 08-16: rebase, add new-style request check, improve commit-msg, drop r-bs
>
> I had planned to send a pull request for this series today, but ran into
> a snag. Without this series applied, './check -qcow2' fails 030, 185,
> and 297. With it applied, I now also get a failure in 206. I'm trying
> to bisect which patch caused the problem, but here's the failure:
>
> 206 fail [20:54:54] [20:55:01] 6.9s (last: 6.7s) output
> mismatch (see 206.out.bad)
> --- /home/eblake/qemu/tests/qemu-iotests/206.out
> +++ 206.out.bad
> @@ -180,7 +180,7 @@
>
> {"execute": "blockdev-create", "arguments": {"job-id": "job0",
> "options": {"driver": "qcow2", "file": "node0", "size":
> 9223372036854775296}}}
> {"return": {}}
> -Job failed: Could not resize image: Required too big image size, it
> must be not greater than 9223372035781033984
> +Job failed: Could not resize image: offset(9223372036854775296) exceeds
> maximum(9223372035781033984)
> {"execute": "job-dismiss", "arguments": {"id": "job0"}}
> {"return": {}}
>
> Looks like it is just a changed error message, so I can touch up the
> correct patch and then repackage the pull request tomorrow (it's too
> late for me today). Oh, and the 0 exit status of ./check when a test
> fails is something I see you already plan on fixing...
>
Yes, Kevin have already sent a pull with "iotests: check: return 1 on failure"
--
Best regards,
Vladimir
On 2/1/21 8:56 PM, Eric Blake wrote:
> I had planned to send a pull request for this series today, but ran into
> a snag. Without this series applied, './check -qcow2' fails 030, 185,
> and 297. With it applied, I now also get a failure in 206. I'm trying
> to bisect which patch caused the problem, but here's the failure:
>
> 206 fail [20:54:54] [20:55:01] 6.9s (last: 6.7s) output
> mismatch (see 206.out.bad)
> --- /home/eblake/qemu/tests/qemu-iotests/206.out
> +++ 206.out.bad
> @@ -180,7 +180,7 @@
>
> {"execute": "blockdev-create", "arguments": {"job-id": "job0",
> "options": {"driver": "qcow2", "file": "node0", "size":
> 9223372036854775296}}}
> {"return": {}}
> -Job failed: Could not resize image: Required too big image size, it
> must be not greater than 9223372035781033984
> +Job failed: Could not resize image: offset(9223372036854775296) exceeds
> maximum(9223372035781033984)
> {"execute": "job-dismiss", "arguments": {"id": "job0"}}
> {"return": {}}
>
> Looks like it is just a changed error message, so I can touch up the
> correct patch and then repackage the pull request
Culprit was "block: refactor bdrv_check_request: add errp". I'm
preparing the pull request now.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
On 2/1/21 8:56 PM, Eric Blake wrote:
> I had planned to send a pull request for this series today, but ran into
> a snag. Without this series applied, './check -qcow2' fails 030, 185,
> and 297.
297 appears to be fixed once Kevin's pull request lands (well, that may
be needing a v2). 185 appears to be just a whitespace difference that
missed fixing in 362ef77f9 and similar:
--- /home/eblake/qemu/tests/qemu-iotests/185.out
+++ 185.out.bad
@@ -89,7 +89,7 @@
'format': 'IMGFMT',
'sync': 'full',
'speed': 65536,
- 'x-perf': { 'max-chunk': 65536 } } }
+ 'x-perf': {'max-chunk': 65536} } }
030 is a bit tougher to figure out.
030 fail [09:40:32] [09:40:48] 16.9s (last: 15.4s) failed,
exit status 1
--- /home/eblake/qemu/tests/qemu-iotests/030.out
+++ 030.out.bad
@@ -1,5 +1,45 @@
-...........................
+WARNING:qemu.machine:qemu received signal 11; command:
"/home/eblake/qemu/build/tests/qemu-iotests/../../qemu-system-x86_64
-display none -vga none -chardev
socket,id=mon,path=/tmp/tmpedy9c_uf/qemu-421866-monitor.sock -mon
chardev=mon,mode=control -qtest
unix:path=/tmp/tmpedy9c_uf/qemu-421866-qtest.sock -accel qtest
-nodefaults -display none -accel qtest -drive
if=virtio,id=drive0,file=/home/eblake/qemu/build/tests/qemu-iotests/scratch/img-8.img,format=qcow2,cache=writeback,aio=threads,backing.backing.backing.backing.backing.backing.backing.backing.node-name=node0,backing.backing.backing.backing.backing.backing.backing.node-name=node1,backing.backing.backing.backing.backing.backing.node-name=node2,backing.backing.backing.backing.backing.node-name=node3,backing.backing.backing.backing.node-name=node4,backing.backing.backing.node-name=node5,backing.backing.node-name=node6,backing.node-name=node7,node-name=node8"
+.............EE.............
+======================================================================
+ERROR: test_stream_parallel (__main__.TestParallelOps)
+----------------------------------------------------------------------
+Traceback (most recent call last):
+ File "/home/eblake/qemu/tests/qemu-iotests/030", line 260, in
test_stream_parallel
+ for event in self.vm.get_qmp_events(wait=True):
+ File
"/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/machine.py",
line 585, in get_qmp_events
+ events = self._qmp.get_events(wait=wait)
+ File "/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/qmp.py",
line 328, in get_events
+ self.__get_events(wait)
+ File "/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/qmp.py",
line 197, in __get_events
+ raise QMPConnectError("Error while reading from socket")
+qemu.qmp.QMPConnectError: Error while reading from socket
+
+======================================================================
+ERROR: test_stream_parallel (__main__.TestParallelOps)
+----------------------------------------------------------------------
+Traceback (most recent call last):
+ File
"/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/machine.py",
line 477, in _do_shutdown
+ self._soft_shutdown(timeout, has_quit)
+ File
"/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/machine.py",
line 457, in _soft_shutdown
+ self._qmp.cmd('quit')
+ File "/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/qmp.py",
line 278, in cmd
+ return self.cmd_obj(qmp_cmd)
+ File "/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/qmp.py",
line 256, in cmd_obj
+ self.__sock.sendall(json.dumps(qmp_cmd).encode('utf-8'))
+BrokenPipeError: [Errno 32] Broken pipe
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+ File "/home/eblake/qemu/tests/qemu-iotests/030", line 227, in tearDown
+ self.vm.shutdown()
+ File
"/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/machine.py",
line 507, in shutdown
+ self._do_shutdown(timeout, has_quit)
+ File
"/home/eblake/qemu/tests/qemu-iotests/../../python/qemu/machine.py",
line 480, in _do_shutdown
+ raise AbnormalShutdown("Could not perform graceful shutdown") \
+qemu.machine.AbnormalShutdown: Could not perform graceful shutdown
+
----------------------------------------------------------------------
Ran 27 tests
-OK
+FAILED (errors=2)
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
Am 02.02.2021 um 17:13 hat Eric Blake geschrieben:
> On 2/1/21 8:56 PM, Eric Blake wrote:
>
> > I had planned to send a pull request for this series today, but ran into
> > a snag. Without this series applied, './check -qcow2' fails 030, 185,
> > and 297.
>
> 297 appears to be fixed once Kevin's pull request lands (well, that may
> be needing a v2). 185 appears to be just a whitespace difference that
> missed fixing in 362ef77f9 and similar:
>
> --- /home/eblake/qemu/tests/qemu-iotests/185.out
> +++ 185.out.bad
> @@ -89,7 +89,7 @@
> 'format': 'IMGFMT',
> 'sync': 'full',
> 'speed': 65536,
> - 'x-perf': { 'max-chunk': 65536 } } }
> + 'x-perf': {'max-chunk': 65536} } }
>
> 030 is a bit tougher to figure out.
>
> 030 fail [09:40:32] [09:40:48] 16.9s (last: 15.4s) failed,
> exit status 1
> --- /home/eblake/qemu/tests/qemu-iotests/030.out
> +++ 030.out.bad
> @@ -1,5 +1,45 @@
> -...........................
> +WARNING:qemu.machine:qemu received signal 11; command:
So some qemu process segfaulted. Did you have a look at the resulting
coredump?
Kevin
02.02.2021 19:23, Kevin Wolf wrote:
> Am 02.02.2021 um 17:13 hat Eric Blake geschrieben:
>> On 2/1/21 8:56 PM, Eric Blake wrote:
>>
>>> I had planned to send a pull request for this series today, but ran into
>>> a snag. Without this series applied, './check -qcow2' fails 030, 185,
>>> and 297.
>>
>> 297 appears to be fixed once Kevin's pull request lands (well, that may
>> be needing a v2). 185 appears to be just a whitespace difference that
>> missed fixing in 362ef77f9 and similar:
>>
>> --- /home/eblake/qemu/tests/qemu-iotests/185.out
>> +++ 185.out.bad
>> @@ -89,7 +89,7 @@
>> 'format': 'IMGFMT',
>> 'sync': 'full',
>> 'speed': 65536,
>> - 'x-perf': { 'max-chunk': 65536 } } }
>> + 'x-perf': {'max-chunk': 65536} } }
>>
>> 030 is a bit tougher to figure out.
>>
>> 030 fail [09:40:32] [09:40:48] 16.9s (last: 15.4s) failed,
>> exit status 1
>> --- /home/eblake/qemu/tests/qemu-iotests/030.out
>> +++ 030.out.bad
>> @@ -1,5 +1,45 @@
>> -...........................
>> +WARNING:qemu.machine:qemu received signal 11; command:
>
> So some qemu process segfaulted. Did you have a look at the resulting
> coredump?
>
> Kevin
>
Note that 30 is known to crash sometimes. Look at
"[PATCH RFC 0/5] Fix accidental crash in iotest 30"
https://patchew.org/QEMU/20201120161622.1537-1-vsementsov@virtuozzo.com/
--
Best regards,
Vladimir
02.02.2021 19:29, Vladimir Sementsov-Ogievskiy wrote:
> 02.02.2021 19:23, Kevin Wolf wrote:
>> Am 02.02.2021 um 17:13 hat Eric Blake geschrieben:
>>> On 2/1/21 8:56 PM, Eric Blake wrote:
>>>
>>>> I had planned to send a pull request for this series today, but ran into
>>>> a snag. Without this series applied, './check -qcow2' fails 030, 185,
>>>> and 297.
>>>
>>> 297 appears to be fixed once Kevin's pull request lands (well, that may
>>> be needing a v2). 185 appears to be just a whitespace difference that
>>> missed fixing in 362ef77f9 and similar:
>>>
>>> --- /home/eblake/qemu/tests/qemu-iotests/185.out
>>> +++ 185.out.bad
>>> @@ -89,7 +89,7 @@
>>> 'format': 'IMGFMT',
>>> 'sync': 'full',
>>> 'speed': 65536,
>>> - 'x-perf': { 'max-chunk': 65536 } } }
>>> + 'x-perf': {'max-chunk': 65536} } }
>>>
>>> 030 is a bit tougher to figure out.
>>>
>>> 030 fail [09:40:32] [09:40:48] 16.9s (last: 15.4s) failed,
>>> exit status 1
>>> --- /home/eblake/qemu/tests/qemu-iotests/030.out
>>> +++ 030.out.bad
>>> @@ -1,5 +1,45 @@
>>> -...........................
>>> +WARNING:qemu.machine:qemu received signal 11; command:
>>
>> So some qemu process segfaulted. Did you have a look at the resulting
>> coredump?
>>
>> Kevin
>>
>
> Note that 30 is known to crash sometimes. Look at
>
> "[PATCH RFC 0/5] Fix accidental crash in iotest 30"
>
> https://patchew.org/QEMU/20201120161622.1537-1-vsementsov@virtuozzo.com/
>
Also, I see that this series diverged with master.. Did you already rebased it? If so, could you push it in your tree?
--
Best regards,
Vladimir
On Tue, 2 Feb 2021 at 17:09, Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> wrote: > Note that 30 is known to crash sometimes. Look at > > "[PATCH RFC 0/5] Fix accidental crash in iotest 30" > > https://patchew.org/QEMU/20201120161622.1537-1-vsementsov@virtuozzo.com/ It certainly seems to be the least reliable iotest in my experience. For example it just fell over on ppc64 on MST's latest pullreq merge: https://lore.kernel.org/qemu-devel/CAFEAcA8aZ6qTLjp00FyqYUwtqk0tAFYUpjW0FeepPMMVfOUbPg@mail.gmail.com/ thanks -- PMM
On Tue, 2 Feb 2021 at 22:47, Peter Maydell <peter.maydell@linaro.org> wrote: > > On Tue, 2 Feb 2021 at 17:09, Vladimir Sementsov-Ogievskiy > <vsementsov@virtuozzo.com> wrote: > > Note that 30 is known to crash sometimes. Look at > > > > "[PATCH RFC 0/5] Fix accidental crash in iotest 30" > > > > https://patchew.org/QEMU/20201120161622.1537-1-vsementsov@virtuozzo.com/ > > It certainly seems to be the least reliable iotest in my experience. > For example it just fell over on ppc64 on MST's latest pullreq merge: > > https://lore.kernel.org/qemu-devel/CAFEAcA8aZ6qTLjp00FyqYUwtqk0tAFYUpjW0FeepPMMVfOUbPg@mail.gmail.com/ Just saw this same error again, on FreeBSD rather than OpenBSD this time. Can we please just disable 030 if we can't fix it ? thanks -- PMM
On Wed, 3 Feb 2021 at 10:45, Peter Maydell <peter.maydell@linaro.org> wrote: > > On Tue, 2 Feb 2021 at 22:47, Peter Maydell <peter.maydell@linaro.org> wrote: > > > > On Tue, 2 Feb 2021 at 17:09, Vladimir Sementsov-Ogievskiy > > <vsementsov@virtuozzo.com> wrote: > > > Note that 30 is known to crash sometimes. Look at > > > > > > "[PATCH RFC 0/5] Fix accidental crash in iotest 30" > > > > > > https://patchew.org/QEMU/20201120161622.1537-1-vsementsov@virtuozzo.com/ > > > > It certainly seems to be the least reliable iotest in my experience. > > For example it just fell over on ppc64 on MST's latest pullreq merge: > > > > https://lore.kernel.org/qemu-devel/CAFEAcA8aZ6qTLjp00FyqYUwtqk0tAFYUpjW0FeepPMMVfOUbPg@mail.gmail.com/ > > Just saw this same error again, on FreeBSD rather than OpenBSD > this time. Can we please just disable 030 if we can't fix it ? And another 030 failure, this time in gitlib CI: https://gitlab.com/qemu-project/qemu/-/jobs/1008038881 thanks -- PMM
ping
11.12.2020 21:39, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
>
> We want 64bit write-zeroes, and for this, convert all io functions to
> 64bit.
>
> We chose signed type, to be consistent with off_t (which is signed) and
> with possibility for signed return type (where negative value means
> error).
>
> Please refer to initial cover-letter
> https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg08723.html
> for more info.
>
> v4: I found, that some more work is needed for block/block-backend, so
> decided to make partI, converting block/io
>
> v4 is based on Kevin's block branch ([PULL 00/34] Block layer patches)
> for BDRV_MAX_LENGTH
>
> changes:
> 01-05: new
> 06: add Alberto's r-b
> 07: new
> 08-16: rebase, add new-style request check, improve commit-msg, drop r-bs
>
> Based-on: <20201211170812.228643-1-kwolf@redhat.com>
>
> Vladimir Sementsov-Ogievskiy (16):
> block: refactor bdrv_check_request: add errp
> util/iov: make qemu_iovec_init_extended() honest
> block: fix theoretical overflow in bdrv_init_padding()
> block/io: refactor bdrv_pad_request(): move bdrv_pad_request() up
> block/io: bdrv_pad_request(): support qemu_iovec_init_extended failure
> block/throttle-groups: throttle_group_co_io_limits_intercept(): 64bit
> bytes
> block/io: improve bdrv_check_request: check qiov too
> block: use int64_t as bytes type in tracked requests
> block/io: use int64_t bytes in driver wrappers
> block/io: support int64_t bytes in bdrv_co_do_pwrite_zeroes()
> block/io: support int64_t bytes in bdrv_aligned_pwritev()
> block/io: support int64_t bytes in bdrv_co_do_copy_on_readv()
> block/io: support int64_t bytes in bdrv_aligned_preadv()
> block/io: support int64_t bytes in bdrv_co_p{read,write}v_part()
> block/io: support int64_t bytes in read/write wrappers
> block/io: use int64_t bytes in copy_range
>
> include/block/block.h | 17 +-
> include/block/block_int.h | 26 +--
> include/block/throttle-groups.h | 2 +-
> include/qemu/iov.h | 2 +-
> block/blkverify.c | 2 +-
> block/file-posix.c | 2 +-
> block/io.c | 274 ++++++++++++++++++++++----------
> block/throttle-groups.c | 5 +-
> tests/test-write-threshold.c | 5 +-
> util/iov.c | 25 ++-
> block/trace-events | 12 +-
> 11 files changed, 252 insertions(+), 120 deletions(-)
>
--
Best regards,
Vladimir
11.12.2020 21:39, Vladimir Sementsov-Ogievskiy wrote: > Hi all! > > We want 64bit write-zeroes, and for this, convert all io functions to > 64bit. > > We chose signed type, to be consistent with off_t (which is signed) and > with possibility for signed return type (where negative value means > error). > > Please refer to initial cover-letter > https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg08723.html > for more info. > > v4: I found, that some more work is needed for block/block-backend, so > decided to make partI, converting block/io > > v4 is based on Kevin's block branch ([PULL 00/34] Block layer patches) > for BDRV_MAX_LENGTH > > changes: > 01-05: new > 06: add Alberto's r-b > 07: new > 08-16: rebase, add new-style request check, improve commit-msg, drop r-bs > > Based-on:<20201211170812.228643-1-kwolf@redhat.com> Now based on master. -- Best regards, Vladimir
© 2016 - 2026 Red Hat, Inc.