From 9237aa3fa5273c3debe2dcbd32e84d9e0ef703c5 Mon Sep 17 00:00:00 2001 From: Mikolaj Golub Date: Tue, 22 Mar 2011 20:27:26 +0000 Subject: [PATCH] After synchronization is complete we should make primary counters be equal to secondary counters: primary_localcnt = secondary_remotecnt primary_remotecnt = secondary_localcnt Previously it was done wrong and split-brain was observed after primary had synchronized up-to-date data from secondary. Approved by: pjd (mentor) MFC after: 1 week --- sbin/hastd/primary.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sbin/hastd/primary.c b/sbin/hastd/primary.c index b943077dfe34..966973bee45f 100644 --- a/sbin/hastd/primary.c +++ b/sbin/hastd/primary.c @@ -1757,13 +1757,13 @@ sync_thread(void *arg __unused) mtx_lock(&metadata_lock); res->hr_syncsrc = HAST_SYNCSRC_UNDEF; res->hr_primary_localcnt = - res->hr_secondary_localcnt; - res->hr_primary_remotecnt = res->hr_secondary_remotecnt; + res->hr_primary_remotecnt = + res->hr_secondary_localcnt; pjdlog_debug(1, "Setting localcnt to %ju and remotecnt to %ju.", (uintmax_t)res->hr_primary_localcnt, - (uintmax_t)res->hr_secondary_localcnt); + (uintmax_t)res->hr_primary_remotecnt); (void)metadata_write(res); mtx_unlock(&metadata_lock); }