qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 00/11] NBD reconnect


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH v3 00/11] NBD reconnect
Date: Tue, 3 Jul 2018 16:46:39 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

Hi all.

before v4 realization, I'd like to discuss some questions.

Our proposal for v4 is the following:

1. don't reconnect on nbd_open. So, on open we do only one connect attempt, and if it fails, open fails.
2. don't configure timeout between attempts. instead do the following:
    1s timeout, then 2s, then 4, 8, 16, and then always 16 until success
3. configure only time, after disconnect, during which requests are paused (and after this time, if not connected, they will return EIO). Or not configure it for now, make a default of 5 minutes.

Any ideas?


09.06.2018 18:32, Vladimir Sementsov-Ogievskiy wrote:
Hi all.

Here is NBD reconnect.
The feature realized inside nbd-client driver and works as follows:

There are two parameters: reconnect-attempts and reconnect-timeout.
So, we will try to reconnect in case of initial connection failed or
in case of connection lost. All current and new io operations will wait
until we make reconnect-attempts tries to reconnect. After this, all
requests will fail with EIO, but we will continue trying to reconnect.

v3:
06: fix build error in function 'nbd_co_send_request':
      error: 'i' may be used uninitialized in this function

v2 notes:
Here is v2 of NBD reconnect, but it is very very different from v1, so,
forget about v1.
The series includes my "NBD reconnect: preliminary refactoring", with
changes in 05: leave asserts (Eric).

Vladimir Sementsov-Ogievskiy (11):
   block/nbd-client: split channel errors from export errors
   block/nbd: move connection code from block/nbd to block/nbd-client
   block/nbd-client: split connection from initialization
   block/nbd-client: fix nbd_reply_chunk_iter_receive
   block/nbd-client: don't check ioc
   block/nbd-client: move from quit to state
   block/nbd-client: rename read_reply_co to connection_co
   block/nbd-client: move connecting to connection_co
   block/nbd: add cmdline and qapi parameters for nbd reconnect
   block/nbd-client: nbd reconnect
   iotests: test nbd reconnect

  qapi/block-core.json          |  12 +-
  block/nbd-client.h            |  23 ++-
  block/nbd-client.c            | 429 ++++++++++++++++++++++++++++++------------
  block/nbd.c                   |  61 +++---
  tests/qemu-iotests/220        |  68 +++++++
  tests/qemu-iotests/220.out    |   7 +
  tests/qemu-iotests/group      |   1 +
  tests/qemu-iotests/iotests.py |   4 +
  8 files changed, 445 insertions(+), 160 deletions(-)
  create mode 100755 tests/qemu-iotests/220
  create mode 100644 tests/qemu-iotests/220.out



--
Best regards,
Vladimir




reply via email to

[Prev in Thread] Current Thread [Next in Thread]