At Sun, 01 Apr 2012 14:06:54 +0800, Liu Yuan wrote: > > On 04/01/2012 01:59 PM, MORITA Kazutaka wrote: > > > 'join C' is processed after there is no outstanding I/Os. > > > > > Okay, I see the race. > > can we remove this line in start_cpg_event_work() > > if (is_membership_change_event(cevent->ctype) && > sys->nr_outstanding_io) > return; No, Sheepdog assumes that the older epoch directories are read-only (especially in recovery codes), so we need to flush all I/Os before updating an epoch. I think it is much harder to remove this line than introducing two queues. Thanks, Kazutaka |