ocfs2: o2hb: fix hb hung time
authorJunxiao Bi <junxiao.bi@oracle.com>
Fri, 27 May 2016 21:27:13 +0000 (14:27 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 27 May 2016 21:49:37 +0000 (14:49 -0700)
hr_last_timeout_start should be set as the last time where hb is
still OK.  When hb write timeout, hung time will be (jiffies -
hr_last_timeout_start).

Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Reviewed-by: Ryan Ding <ryan.ding@oracle.com>
Reviewed-by: Mark Fasheh <mfasheh@suse.de>
Cc: Gang He <ghe@suse.com>
Cc: rwxybh <rwxybh@126.com>
Cc: Joel Becker <jlbec@evilplan.org>
Cc: Joseph Qi <joseph.qi@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/ocfs2/cluster/heartbeat.c

index 31a5c0803e0a6049703d8aba43d2185da80f33f5..6aaf3e35139109cff852999e38d4c909b0d7f520 100644 (file)
@@ -356,7 +356,6 @@ static void o2hb_arm_timeout(struct o2hb_region *reg)
                spin_unlock(&o2hb_live_lock);
        }
        cancel_delayed_work(&reg->hr_write_timeout_work);
-       reg->hr_last_timeout_start = jiffies;
        schedule_delayed_work(&reg->hr_write_timeout_work,
                              msecs_to_jiffies(O2HB_MAX_WRITE_TIMEOUT_MS));
 
@@ -1174,6 +1173,7 @@ static int o2hb_do_disk_heartbeat(struct o2hb_region *reg)
        if (own_slot_ok) {
                o2hb_set_quorum_device(reg);
                o2hb_arm_timeout(reg);
+               reg->hr_last_timeout_start = jiffies;
        }
 
 bail: