sanlock: correct paxos usage
Rework how the disk paxos algorithm is applied to the
ownership and updating of the leader_record. How this
was done and worked previously had never been thoroughly
understood and was wrong in a number of general ways.
Some main concepts driving these changes:
. ballots are run to commit each new lver
. a node that successfully completes the ballot needs to
commit the result from that ballot, which means
writing the lver from that ballot and the dblock values
to the leader_record
. nodes need to monitor the leader_record to learn if
the next lver has been commited, and if so, return that
result
. the hosts participating in a ballot are the ones with
the latest matching lver in their dblocks
. each node's mbal should always increase
This includes a new incompatible disk format change,
due to the addition of some extra info fields to the leader
and dblock structs.
Error codes are also changed to describe the new conditions.