MFC r257154:

Merging local and remote bitmaps must be protected by hr_amp lock.

This is believed to fix hastd crashes, which might occur during
synchronization, triggered by the failed assertion:

 Assertion failed: (amp->am_memtab[ext] > 0),
 function activemap_write_complete, file activemap.c, line 351.

Approved by:	re (glebius)
This commit is contained in:
trociny 2013-10-31 20:30:26 +00:00
parent 5c41fcfa55
commit 6952838572

View File

@ -781,6 +781,7 @@ init_remote(struct hast_resource *res, struct proto_conn **inp,
free(map);
goto close;
}
mtx_lock(&res->hr_amp_lock);
/*
* Merge local and remote bitmaps.
*/
@ -790,7 +791,6 @@ init_remote(struct hast_resource *res, struct proto_conn **inp,
* Now that we merged bitmaps from both nodes, flush it to the
* disk before we start to synchronize.
*/
mtx_lock(&res->hr_amp_lock);
(void)hast_activemap_flush(res);
}
nv_free(nvin);