Vladimir Sementsov-Ogievskiy f7651539d8 block/nbd: nbd reconnect
Implement reconnect. To achieve this:

1. add new modes:
   connecting-wait: means, that reconnecting is in progress, and there
     were small number of reconnect attempts, so all requests are
     waiting for the connection.
   connecting-nowait: reconnecting is in progress, there were a lot of
     attempts of reconnect, all requests will return errors.

   two old modes are used too:
   connected: normal state
   quit: exiting after fatal error or on close

Possible transitions are:

   * -> quit
   connecting-* -> connected
   connecting-wait -> connecting-nowait (transition is done after
                      reconnect-delay seconds in connecting-wait mode)
   connected -> connecting-wait

2. Implement reconnect in connection_co. So, in connecting-* mode,
    connection_co, tries to reconnect unlimited times.

3. Retry nbd queries on channel error, if we are in connecting-wait
    state.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20191009084158.15614-3-vsementsov@virtuozzo.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
2019-10-22 09:22:07 -05:00
..
2019-10-10 10:56:17 +02:00
2019-10-17 17:02:32 -04:00
2019-10-17 17:02:32 -04:00
2019-09-16 14:48:30 +02:00
2019-09-16 14:48:30 +02:00
2019-09-10 08:58:43 +02:00
2019-08-19 17:13:26 +02:00
2019-09-16 14:48:30 +02:00
2019-10-17 17:02:32 -04:00
2019-10-22 09:22:07 -05:00
2019-09-10 08:58:43 +02:00
2019-09-03 14:55:35 +02:00
2019-09-16 14:48:30 +02:00