[Qemu-devel] [PATCH 0/2] block: fix nbd-server-stop crash after blockdev-snapshot-sync

Stefan Hajnoczi posted 2 patches 7 years, 7 months ago
Failed in applying to current master (apply log)
Test checkpatch passed
Test docker-build@min-glib passed
Test docker-mingw@fedora passed
Test docker-quick@centos6 passed
Test ppcbe passed
Test ppcle passed
Test s390x passed
block/block-backend.c      | 63 ++++++++++++++++++++++++++++++++++++++++++++++
block/trace-events         |  2 ++
tests/qemu-iotests/208     | 55 ++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/208.out |  9 +++++++
tests/qemu-iotests/group   |  1 +
5 files changed, 130 insertions(+)
create mode 100755 tests/qemu-iotests/208
create mode 100644 tests/qemu-iotests/208.out
[Qemu-devel] [PATCH 0/2] block: fix nbd-server-stop crash after blockdev-snapshot-sync
Posted by Stefan Hajnoczi 7 years, 7 months ago
The blockdev-snapshot-sync command uses bdrv_append() to update all parents to
point at the external snapshot node.  This breaks BlockBackend's
blk_add/remove_aio_context_notifier(), which doesn't expect a BDS change.

Patch 1 fixes this by tracking AioContext notifiers in BlockBackend.

See the test case in Patch 2 for a reproducer.

Stefan Hajnoczi (2):
  block: let blk_add/remove_aio_context_notifier() tolerate BDS changes
  iotests: add 208 nbd-server + blockdev-snapshot-sync test case

 block/block-backend.c      | 63 ++++++++++++++++++++++++++++++++++++++++++++++
 block/trace-events         |  2 ++
 tests/qemu-iotests/208     | 55 ++++++++++++++++++++++++++++++++++++++++
 tests/qemu-iotests/208.out |  9 +++++++
 tests/qemu-iotests/group   |  1 +
 5 files changed, 130 insertions(+)
 create mode 100755 tests/qemu-iotests/208
 create mode 100644 tests/qemu-iotests/208.out

-- 
2.14.3


Re: [Qemu-devel] [PATCH 0/2] block: fix nbd-server-stop crash after blockdev-snapshot-sync
Posted by Eric Blake 7 years, 7 months ago
On 03/06/2018 02:48 PM, Stefan Hajnoczi wrote:
> The blockdev-snapshot-sync command uses bdrv_append() to update all parents to
> point at the external snapshot node.  This breaks BlockBackend's
> blk_add/remove_aio_context_notifier(), which doesn't expect a BDS change.
> 
> Patch 1 fixes this by tracking AioContext notifiers in BlockBackend.
> 
> See the test case in Patch 2 for a reproducer.
> 
> Stefan Hajnoczi (2):
>    block: let blk_add/remove_aio_context_notifier() tolerate BDS changes
>    iotests: add 208 nbd-server + blockdev-snapshot-sync test case
> 
>   block/block-backend.c      | 63 ++++++++++++++++++++++++++++++++++++++++++++++
>   block/trace-events         |  2 ++
>   tests/qemu-iotests/208     | 55 ++++++++++++++++++++++++++++++++++++++++
>   tests/qemu-iotests/208.out |  9 +++++++
>   tests/qemu-iotests/group   |  1 +
>   5 files changed, 130 insertions(+)
>   create mode 100755 tests/qemu-iotests/208
>   create mode 100644 tests/qemu-iotests/208.out

Whose tree should this series go through?  MAINTAINERS didn't flag it as 
directly touching any files that normally affect my NBD queue, but given 
that the iotest that reproduces the problem uses NBD, I'm fine if you 
want it to go through me.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [Qemu-block] [PATCH 0/2] block: fix nbd-server-stop crash after blockdev-snapshot-sync
Posted by Stefan Hajnoczi 7 years, 7 months ago
On Wed, Mar 07, 2018 at 05:27:45PM -0600, Eric Blake wrote:
> On 03/06/2018 02:48 PM, Stefan Hajnoczi wrote:
> > The blockdev-snapshot-sync command uses bdrv_append() to update all parents to
> > point at the external snapshot node.  This breaks BlockBackend's
> > blk_add/remove_aio_context_notifier(), which doesn't expect a BDS change.
> > 
> > Patch 1 fixes this by tracking AioContext notifiers in BlockBackend.
> > 
> > See the test case in Patch 2 for a reproducer.
> > 
> > Stefan Hajnoczi (2):
> >    block: let blk_add/remove_aio_context_notifier() tolerate BDS changes
> >    iotests: add 208 nbd-server + blockdev-snapshot-sync test case
> > 
> >   block/block-backend.c      | 63 ++++++++++++++++++++++++++++++++++++++++++++++
> >   block/trace-events         |  2 ++
> >   tests/qemu-iotests/208     | 55 ++++++++++++++++++++++++++++++++++++++++
> >   tests/qemu-iotests/208.out |  9 +++++++
> >   tests/qemu-iotests/group   |  1 +
> >   5 files changed, 130 insertions(+)
> >   create mode 100755 tests/qemu-iotests/208
> >   create mode 100644 tests/qemu-iotests/208.out
> 
> Whose tree should this series go through?  MAINTAINERS didn't flag it as
> directly touching any files that normally affect my NBD queue, but given
> that the iotest that reproduces the problem uses NBD, I'm fine if you want
> it to go through me.

Good question.  Max and Kevin maintain block/block-backend.c so one of
them should be happy with this series before it gets merged.

When a patch affects multiple trees, the last sub-maintainer to review
it can do the merge.

So if they have already posted their R-b when you are finished, then
feel free to merge it!  And vice versa.

Stefan
Re: [Qemu-devel] [Qemu-block] [PATCH 0/2] block: fix nbd-server-stop crash after blockdev-snapshot-sync
Posted by Eric Blake 7 years, 7 months ago
On 03/08/2018 11:37 AM, Stefan Hajnoczi wrote:
> On Wed, Mar 07, 2018 at 05:27:45PM -0600, Eric Blake wrote:
>> On 03/06/2018 02:48 PM, Stefan Hajnoczi wrote:
>>> The blockdev-snapshot-sync command uses bdrv_append() to update all parents to
>>> point at the external snapshot node.  This breaks BlockBackend's
>>> blk_add/remove_aio_context_notifier(), which doesn't expect a BDS change.
>>>

>> Whose tree should this series go through?  MAINTAINERS didn't flag it as
>> directly touching any files that normally affect my NBD queue, but given
>> that the iotest that reproduces the problem uses NBD, I'm fine if you want
>> it to go through me.
> 
> Good question.  Max and Kevin maintain block/block-backend.c so one of
> them should be happy with this series before it gets merged.
> 
> When a patch affects multiple trees, the last sub-maintainer to review
> it can do the merge.
> 
> So if they have already posted their R-b when you are finished, then
> feel free to merge it!  And vice versa.

Max has reviewed, so this is now queued on my NBD tree, pull request to 
come shortly.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org