[PATCH v2 for-5.1? 0/5] Fix nbd reconnect dead-locks

Vladimir Sementsov-Ogievskiy posted 5 patches 3 years, 9 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch failed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200727184751.15704-1-vsementsov@virtuozzo.com
Maintainers: Max Reitz <mreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>, Eric Blake <eblake@redhat.com>
block/nbd.c        | 360 +++++++++++++++++++++++++++++++++++++++++----
block/trace-events |   4 +-
2 files changed, 331 insertions(+), 33 deletions(-)
[PATCH v2 for-5.1? 0/5] Fix nbd reconnect dead-locks
Posted by Vladimir Sementsov-Ogievskiy 3 years, 9 months ago
Hi all!

v2: it's a bit updated "[PATCH for-5.1? 0/3] Fix nbd reconnect dead-locks"
plus completely rewritten "[PATCH for-5.1? 0/4] non-blocking connect"
(which is now the only one patch 05)

01: new
02: rebased on 01, fix (add outer "if")
03-04: add Eric's r-b:
05: new

If 05 is too big for 5.1, it's OK to take only 01-04 or less, as well as
postponing everything to 5.2, as it's all not a degradation of 5.1
(it's a degradation of 4.2, together with the whole reconnect feature).

Vladimir Sementsov-Ogievskiy (5):
  block/nbd: split nbd_establish_connection out of nbd_client_connect
  block/nbd: allow drain during reconnect attempt
  block/nbd: on shutdown terminate connection attempt
  block/nbd: nbd_co_reconnect_loop(): don't sleep if drained
  block/nbd: use non-blocking connect: fix vm hang on connect()

 block/nbd.c        | 360 +++++++++++++++++++++++++++++++++++++++++----
 block/trace-events |   4 +-
 2 files changed, 331 insertions(+), 33 deletions(-)

-- 
2.21.0


Re: [PATCH v2 for-5.1? 0/5] Fix nbd reconnect dead-locks
Posted by Eric Blake 3 years, 9 months ago
On 7/27/20 1:47 PM, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> 
> v2: it's a bit updated "[PATCH for-5.1? 0/3] Fix nbd reconnect dead-locks"
> plus completely rewritten "[PATCH for-5.1? 0/4] non-blocking connect"
> (which is now the only one patch 05)
> 
> 01: new
> 02: rebased on 01, fix (add outer "if")
> 03-04: add Eric's r-b:
> 05: new
> 
> If 05 is too big for 5.1, it's OK to take only 01-04 or less, as well as
> postponing everything to 5.2, as it's all not a degradation of 5.1
> (it's a degradation of 4.2, together with the whole reconnect feature).

I think I like where 5/5 is headed, but am not sure yet whether all 
paths are thread-safe or if there is anything we can reuse to make its 
implementation smaller.  You are right that it's probably best to defer 
that to 5.2.  In the meantime, I'll queue 1-4 for my NBD pull request 
for -rc2.

> 
> Vladimir Sementsov-Ogievskiy (5):
>    block/nbd: split nbd_establish_connection out of nbd_client_connect
>    block/nbd: allow drain during reconnect attempt
>    block/nbd: on shutdown terminate connection attempt
>    block/nbd: nbd_co_reconnect_loop(): don't sleep if drained
>    block/nbd: use non-blocking connect: fix vm hang on connect()
> 
>   block/nbd.c        | 360 +++++++++++++++++++++++++++++++++++++++++----
>   block/trace-events |   4 +-
>   2 files changed, 331 insertions(+), 33 deletions(-)
> 

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