[Sheepdog] [PATCH] serialize all cpg events

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Wed Apr 21 04:04:15 CEST 2010


On 2010/04/20 23:39, FUJITA Tomonori wrote:
> On Tue, 20 Apr 2010 15:59:35 +0900
> FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp> wrote:
> 
>> There is a bug that deliver and confchg events are not performed in
>> order.
>>
>> - we link all the cpg events to sys->cpg_event_siblings.
>>
>> - the above events are performed serially.
> 
> There are some problems in the patch so here's v2.
> 
> =
> From: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
> Subject: [PATCH v2] serialize all cpg events
> 
> There is a bug that deliver and confchg events are not performed in
> order.
> 
> - we link all the cpg events to sys->cpg_event_siblings.
> 
> - the above events are performed serially.
> 
> - we need to ignore deliver events until we join sheepdog.
> 
> - we can't use WORK_ORDERED since it blocks qemu I/Os. All cpg events
>   are serialized so we don't need it.
> 
> - we can't call join() and vdi_op() that can sleep for long time in
>   the main process.
> 
> - we need to think about two cases when we finish __sd_deliver_done()
>  for a INIT message; a) we already got for the FIN for it or we
>  haven't so we need to suspend the cpg event execution.
> 
> Signed-off-by: FUJITA Tomonori <fujita.tomonori at lab.ntt.co.jp>
> ---
>  collie/collie.h  |    4 +-
>  collie/group.c   |  504 +++++++++++++++++++++++++++++-------------------------
>  include/bitops.h |    5 +
>  3 files changed, 283 insertions(+), 230 deletions(-)
> 
Looks working fine. Applied to the master branch.

Thanks,

Kazutaka Morita




More information about the sheepdog mailing list