]> www.infradead.org Git - users/jedix/linux-maple.git/commit
ocfs2: o2hb: add negotiate timer
authorJunxiao Bi <junxiao.bi@oracle.com>
Fri, 18 Sep 2015 07:15:31 +0000 (15:15 +0800)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 5 May 2016 21:07:34 +0000 (14:07 -0700)
commit1fcd54c95bc5cd84c001a10c7acdc3dc6b6a0f3a
treeab28867222cf4875796f10ab036452f853b1e9b3
parentea32ba9ae3461e10b11f78341a8f0e62c7299b36
ocfs2: o2hb: add negotiate timer

When storage down, all nodes will fence self due to write timeout.
The negotiate timer is designed to avoid this, with it node will
wait until storage up again.

Negotiate timer working in the following way:

1. The timer expires before write timeout timer, its timeout is half
of write timeout now. It is re-queued along with write timeout timer.
If expires, it will send NEGO_TIMEOUT message to master node(node with
lowest node number). This message does nothing but marks a bit in a
bitmap recording which nodes are negotiating timeout on master node.

2. If storage down, nodes will send this message to master node, then
when master node finds its bitmap including all online nodes, it sends
NEGO_APPROVL message to all nodes one by one, this message will re-queue
write timeout timer and negotiate timer.
For any node doesn't receive this message or meets some issue when
handling this message, it will be fenced.
If storage up at any time, o2hb_thread will run and re-queue all the
timer, nothing will be affected by these two steps.

Oracle-bug: 21862940

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: Ryan Ding <ryan.ding@oracle.com>
fs/ocfs2/cluster/heartbeat.c