drbd: fix stalled resync detection in /proc/drbd
authorLars Ellenberg <lars.ellenberg@linbit.com>
Mon, 28 Apr 2014 16:43:16 +0000 (18:43 +0200)
committerJens Axboe <axboe@fb.com>
Wed, 30 Apr 2014 19:46:54 +0000 (13:46 -0600)
If we don't make resync or verify progress for "too long",
we want to flag it as "stalled".

Since 2010, "use rolling marks for resync speed calculation"
this "too long" was wrong by a factor of HZ.
With HZ 250, it would have been flagged as stalled
after 100 minutes.

Hardcode 3 minutes instead.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/drbd/drbd_proc.c

index 2f26e8ffa45b0fa8348dba8f1823ee4e1753c161..89736bdbbc7044aedaaacbd5dc9c858ca3933596 100644 (file)
@@ -116,7 +116,7 @@ static void drbd_syncer_progress(struct drbd_device *device, struct seq_file *se
        /* ------------------------ ~18s average ------------------------ */
        i = (device->rs_last_mark + 2) % DRBD_SYNC_MARKS;
        dt = (jiffies - device->rs_mark_time[i]) / HZ;
-       if (dt > (DRBD_SYNC_MARK_STEP * DRBD_SYNC_MARKS))
+       if (dt > 180)
                stalled = 1;
 
        if (!dt)
This page took 0.028272 seconds and 5 git commands to generate.