drbd: Removed 20 seconds upper bound for side-stepping
authorPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 22 Nov 2010 14:49:17 +0000 (15:49 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 10 Mar 2011 10:35:09 +0000 (11:35 +0100)
Given low-enough network bandwidth combined with a IO
pattern that hammers onto a single RS-extent, side-stepping
might be necessary for much longer times.

Changed the code to print a single informal message after
20 seconds, but it keeps on stepping aside forever.

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

index 5570d9bdc863d6f329552ef3ab6f316ef38e3102..4a1b199f4ae72c2f0f1db4b0c72bcf72d2d108ca 100644 (file)
@@ -1153,7 +1153,7 @@ retry:
        for (i = 0; i < AL_EXT_PER_BM_SECT; i++) {
                sig = wait_event_interruptible(mdev->al_wait,
                                               !_is_in_al(mdev, enr * AL_EXT_PER_BM_SECT + i) ||
-                                              (test_bit(BME_PRIORITY, &bm_ext->flags) && sa));
+                                              test_bit(BME_PRIORITY, &bm_ext->flags));
 
                if (sig || (test_bit(BME_PRIORITY, &bm_ext->flags) && sa)) {
                        spin_lock_irq(&mdev->al_lock);
@@ -1167,8 +1167,9 @@ retry:
                                return -EINTR;
                        if (schedule_timeout_interruptible(HZ/10))
                                return -EINTR;
-                       if (--sa == 0)
-                               dev_warn(DEV,"drbd_rs_begin_io() no longer stepping aside.\n");
+                       if (sa && --sa == 0)
+                               dev_warn(DEV,"drbd_rs_begin_io() stepped aside for 20sec."
+                                        "Resync stalled?\n");
                        goto retry;
                }
        }