diff options
author | trociny <trociny@FreeBSD.org> | 2013-10-31 20:30:26 +0000 |
---|---|---|
committer | trociny <trociny@FreeBSD.org> | 2013-10-31 20:30:26 +0000 |
commit | 69528385720f530d530392d3bdd4fa0ebcbdc8ad (patch) | |
tree | ac921bcf2248fde238cd9cf6cd32a291ea5ac738 /sbin/hastd | |
parent | 5c41fcfa5521670510fc367a534a8f723e479804 (diff) | |
download | FreeBSD-src-69528385720f530d530392d3bdd4fa0ebcbdc8ad.zip FreeBSD-src-69528385720f530d530392d3bdd4fa0ebcbdc8ad.tar.gz |
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)
Diffstat (limited to 'sbin/hastd')
-rw-r--r-- | sbin/hastd/primary.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sbin/hastd/primary.c b/sbin/hastd/primary.c index 09ae17b..bd484e3 100644 --- a/sbin/hastd/primary.c +++ b/sbin/hastd/primary.c @@ -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); |