From: "Benoît Canet" <benoit.canet@irqsave.net>
To: Liu Yuan <namei.unix@gmail.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 0/8] add basic recovery logic to quorum driver
Date: Mon, 1 Sep 2014 10:19:11 +0200 [thread overview]
Message-ID: <20140901081910.GB15537@irqsave.net> (raw)
In-Reply-To: <1409557394-11853-1-git-send-email-namei.unix@gmail.com>
The Monday 01 Sep 2014 à 15:43:06 (+0800), Liu Yuan wrote :
> This patch set mainly add mainly two logics to implement device recover
> - notify qourum driver of the broken states from the child driver(s)
> - dirty track and sync the device after it is repaired
>
> Thus quorum allow VMs to continue while some child devices are broken and when
> the child devices are repaired and return back, we sync dirty bits during
> downtime to keep data consistency.
>
> The recovery logic is based on the driver state bitmap and will sync the dirty
> bits with a timeslice window in a coroutine in this prtimive implementation.
>
> Simple graph about 2 children with threshold=1 and read-pattern=fifo:
> (similary to DRBD)
>
> + denote device sync iteration
> - IO on a single device
> = IO on two devices
>
> sync complete, release dirty bitmap
> ^
> |
> ====-----------------++++----++++----++==========
> | |
> | v
> | device repaired and begin to sync
> v
> device broken, create a dirty bitmap
>
> This sync logic can take care of nested broken problem, that devices are
> broken while in sync. We just start a sync process after the devices are
> repaired again and switch the devices from broken to sound only when the sync
> completes.
>
> For read-pattern=quorum mode, it enjoys the recovery logic without any problem.
Hi Liu,
I had something like that in mind.
This series seems very cool I will review it.
Thanks for contributing to quorum.
Best regards
Benoît
>
> Todo:
> - use aio interface to sync data (multiple transfer in one go)
> - dynamic slice window to control sync bandwidth more smoothly
> - add auto-reconnection mechanism to other protocol (if not support yet)
> - add tests
>
> Cc: Eric Blake <eblake@redhat.com>
> Cc: Benoit Canet <benoit@irqsave.net>
> Cc: Kevin Wolf <kwolf@redhat.com>
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
>
> Liu Yuan (8):
> block/quorum: initialize qcrs.aiocb for read
> block: add driver operation callbacks
> block/sheepdog: propagate disconnect/reconnect events to upper driver
> block/quorum: add quorum_aio_release() helper
> quorum: fix quorum_aio_cancel()
> block/quorum: add broken state to BlockDriverState
> block: add two helpers
> quorum: add basic device recovery logic
>
> block.c | 17 +++
> block/quorum.c | 324 +++++++++++++++++++++++++++++++++++++++++-----
> block/sheepdog.c | 9 ++
> include/block/block.h | 9 ++
> include/block/block_int.h | 6 +
> trace-events | 5 +
> 6 files changed, 336 insertions(+), 34 deletions(-)
>
> --
> 1.9.1
>
next prev parent reply other threads:[~2014-09-01 8:20 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-01 7:43 [Qemu-devel] [PATCH 0/8] add basic recovery logic to quorum driver Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 1/8] block/quorum: initialize qcrs.aiocb for read Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 2/8] block: add driver operation callbacks Liu Yuan
2014-09-01 8:28 ` Benoît Canet
2014-09-01 9:19 ` Liu Yuan
2014-09-01 9:28 ` Benoît Canet
2014-09-01 9:40 ` Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 3/8] block/sheepdog: propagate disconnect/reconnect events to upper driver Liu Yuan
2014-09-01 8:31 ` Benoît Canet
2014-09-01 9:22 ` Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 4/8] block/quorum: add quorum_aio_release() helper Liu Yuan
2014-09-01 8:33 ` Benoît Canet
2014-09-01 7:43 ` [Qemu-devel] [PATCH 5/8] quorum: fix quorum_aio_cancel() Liu Yuan
2014-09-01 8:35 ` Benoît Canet
2014-09-01 9:26 ` Liu Yuan
2014-09-01 9:32 ` Benoît Canet
2014-09-01 9:46 ` Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 6/8] block/quorum: add broken state to BlockDriverState Liu Yuan
2014-09-01 8:57 ` Benoît Canet
2014-09-01 9:30 ` Liu Yuan
2014-09-01 7:43 ` [Qemu-devel] [PATCH 7/8] block: add two helpers Liu Yuan
2014-09-01 8:59 ` Benoît Canet
2014-09-01 7:43 ` [Qemu-devel] [PATCH 8/8] quorum: add basic device recovery logic Liu Yuan
2014-09-01 9:37 ` Benoît Canet
2014-09-01 9:45 ` Liu Yuan
2014-09-01 8:19 ` Benoît Canet [this message]
2014-09-02 22:19 ` [Qemu-devel] [PATCH 0/8] add basic recovery logic to quorum driver Benoît Canet
2014-09-10 7:31 ` Liu Yuan
2014-09-07 15:12 ` Benoît Canet
2014-09-10 7:18 ` Liu Yuan
2014-09-10 13:12 ` Benoît Canet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140901081910.GB15537@irqsave.net \
--to=benoit.canet@irqsave.net \
--cc=kwolf@redhat.com \
--cc=namei.unix@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.