mbox series

[v7,0/9] NBD reconnect

Message ID 20190618114328.55249-1-vsementsov@virtuozzo.com (mailing list archive)
Headers show
Series NBD reconnect | expand

Message

Vladimir Sementsov-Ogievskiy June 18, 2019, 11:43 a.m. UTC
Hi all!
Here is NBD reconnect. Previously, if connection failed all current
and future requests will fail. After the series, nbd-client driver
will try to reconnect unlimited times. During first @reconnect-delay
seconds of reconnecting all requests will wait for the connection,
and if it is established requests will be resent. After
@reconnect-delay period all requests will be failed (until successful
reconnect).

v7:
almost all: rebased on merged nbd.c and nbd-client.c (including patch subject)
01-04: add Eric's r-b
04: wording
05: new
06: rewrite to remove timer earlier
07: new
08:
 - rebase on 05 and 07
 - drop "All rights reserved"
 - handle drain
 - improve handling aio context attach
09: move 249 -> 257

Vladimir Sementsov-Ogievskiy (9):
  block/nbd: split connection_co start out of nbd_client_connect
  block/nbd: use non-blocking io channel for nbd negotiation
  block/nbd: move from quit to state
  block/nbd: add cmdline and qapi parameter reconnect-delay
  block/nbd: refactor nbd connection parameters
  qemu-coroutine-sleep: introduce qemu_co_sleep_wake
  qemu/units: add SI decimal units
  block/nbd: nbd reconnect
  iotests: test nbd reconnect

 qapi/block-core.json          |  11 +-
 include/block/nbd.h           |   3 +-
 include/qemu/coroutine.h      |  17 +-
 include/qemu/units.h          |   7 +
 block/nbd.c                   | 531 +++++++++++++++++++++++++---------
 block/null.c                  |   2 +-
 block/sheepdog.c              |   2 +-
 nbd/client.c                  |  16 +-
 qemu-nbd.c                    |   2 +-
 tests/test-bdrv-drain.c       |   6 +-
 tests/test-block-iothread.c   |   2 +-
 util/qemu-coroutine-sleep.c   |  47 ++-
 tests/qemu-iotests/257        |  63 ++++
 tests/qemu-iotests/257.out    |  10 +
 tests/qemu-iotests/group      |   1 +
 tests/qemu-iotests/iotests.py |   4 +
 16 files changed, 551 insertions(+), 173 deletions(-)
 create mode 100755 tests/qemu-iotests/257
 create mode 100644 tests/qemu-iotests/257.out

Comments

Vladimir Sementsov-Ogievskiy July 25, 2019, 10:07 a.m. UTC | #1
ping

18.06.2019 14:43, Vladimir Sementsov-Ogievskiy wrote:
> Hi all!
> Here is NBD reconnect. Previously, if connection failed all current
> and future requests will fail. After the series, nbd-client driver
> will try to reconnect unlimited times. During first @reconnect-delay
> seconds of reconnecting all requests will wait for the connection,
> and if it is established requests will be resent. After
> @reconnect-delay period all requests will be failed (until successful
> reconnect).
> 
> v7:
> almost all: rebased on merged nbd.c and nbd-client.c (including patch subject)
> 01-04: add Eric's r-b
> 04: wording
> 05: new
> 06: rewrite to remove timer earlier
> 07: new
> 08:
>   - rebase on 05 and 07
>   - drop "All rights reserved"
>   - handle drain
>   - improve handling aio context attach
> 09: move 249 -> 257
> 
> Vladimir Sementsov-Ogievskiy (9):
>    block/nbd: split connection_co start out of nbd_client_connect
>    block/nbd: use non-blocking io channel for nbd negotiation
>    block/nbd: move from quit to state
>    block/nbd: add cmdline and qapi parameter reconnect-delay
>    block/nbd: refactor nbd connection parameters
>    qemu-coroutine-sleep: introduce qemu_co_sleep_wake
>    qemu/units: add SI decimal units
>    block/nbd: nbd reconnect
>    iotests: test nbd reconnect
> 
>   qapi/block-core.json          |  11 +-
>   include/block/nbd.h           |   3 +-
>   include/qemu/coroutine.h      |  17 +-
>   include/qemu/units.h          |   7 +
>   block/nbd.c                   | 531 +++++++++++++++++++++++++---------
>   block/null.c                  |   2 +-
>   block/sheepdog.c              |   2 +-
>   nbd/client.c                  |  16 +-
>   qemu-nbd.c                    |   2 +-
>   tests/test-bdrv-drain.c       |   6 +-
>   tests/test-block-iothread.c   |   2 +-
>   util/qemu-coroutine-sleep.c   |  47 ++-
>   tests/qemu-iotests/257        |  63 ++++
>   tests/qemu-iotests/257.out    |  10 +
>   tests/qemu-iotests/group      |   1 +
>   tests/qemu-iotests/iotests.py |   4 +
>   16 files changed, 551 insertions(+), 173 deletions(-)
>   create mode 100755 tests/qemu-iotests/257
>   create mode 100644 tests/qemu-iotests/257.out
>
Vladimir Sementsov-Ogievskiy Aug. 21, 2019, 11:41 a.m. UTC | #2
Should I resend with 07 dropped?

25.07.2019 13:07, Vladimir Sementsov-Ogievskiy wrote:
> ping
> 
> 18.06.2019 14:43, Vladimir Sementsov-Ogievskiy wrote:
>> Hi all!
>> Here is NBD reconnect. Previously, if connection failed all current
>> and future requests will fail. After the series, nbd-client driver
>> will try to reconnect unlimited times. During first @reconnect-delay
>> seconds of reconnecting all requests will wait for the connection,
>> and if it is established requests will be resent. After
>> @reconnect-delay period all requests will be failed (until successful
>> reconnect).
>>
>> v7:
>> almost all: rebased on merged nbd.c and nbd-client.c (including patch subject)
>> 01-04: add Eric's r-b
>> 04: wording
>> 05: new
>> 06: rewrite to remove timer earlier
>> 07: new
>> 08:
>>   - rebase on 05 and 07
>>   - drop "All rights reserved"
>>   - handle drain
>>   - improve handling aio context attach
>> 09: move 249 -> 257
>>
>> Vladimir Sementsov-Ogievskiy (9):
>>    block/nbd: split connection_co start out of nbd_client_connect
>>    block/nbd: use non-blocking io channel for nbd negotiation
>>    block/nbd: move from quit to state
>>    block/nbd: add cmdline and qapi parameter reconnect-delay
>>    block/nbd: refactor nbd connection parameters
>>    qemu-coroutine-sleep: introduce qemu_co_sleep_wake
>>    qemu/units: add SI decimal units
>>    block/nbd: nbd reconnect
>>    iotests: test nbd reconnect
>>
>>   qapi/block-core.json          |  11 +-
>>   include/block/nbd.h           |   3 +-
>>   include/qemu/coroutine.h      |  17 +-
>>   include/qemu/units.h          |   7 +
>>   block/nbd.c                   | 531 +++++++++++++++++++++++++---------
>>   block/null.c                  |   2 +-
>>   block/sheepdog.c              |   2 +-
>>   nbd/client.c                  |  16 +-
>>   qemu-nbd.c                    |   2 +-
>>   tests/test-bdrv-drain.c       |   6 +-
>>   tests/test-block-iothread.c   |   2 +-
>>   util/qemu-coroutine-sleep.c   |  47 ++-
>>   tests/qemu-iotests/257        |  63 ++++
>>   tests/qemu-iotests/257.out    |  10 +
>>   tests/qemu-iotests/group      |   1 +
>>   tests/qemu-iotests/iotests.py |   4 +
>>   16 files changed, 551 insertions(+), 173 deletions(-)
>>   create mode 100755 tests/qemu-iotests/257
>>   create mode 100644 tests/qemu-iotests/257.out
>>
> 
>
Eric Blake Aug. 21, 2019, 2:47 p.m. UTC | #3
On 8/21/19 6:41 AM, Vladimir Sementsov-Ogievskiy wrote:
> Should I resend with 07 dropped?
> 

At this point, the earlier patches in the series are now in-tree, and
the later patches need rebasing again...


>>> v7:
>>> almost all: rebased on merged nbd.c and nbd-client.c (including patch subject)
>>> 01-04: add Eric's r-b
>>> 04: wording
>>> 05: new
>>> 06: rewrite to remove timer earlier
>>> 07: new
>>> 08:
>>>   - rebase on 05 and 07
>>>   - drop "All rights reserved"
>>>   - handle drain
>>>   - improve handling aio context attach
>>> 09: move 249 -> 257

257 snuck into the tree for a different test, so you'll get to move it
again.

But yes, dropping patch 7 (with controversial SI unit addition) in favor
of more discernable constants locally (such as NANOSECONDS_PER_SECOND)
as part of the rebase is a good idea.