Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c507f46f authored by Philipp Reisner's avatar Philipp Reisner
Browse files

drbd: Removed 20 seconds upper bound for side-stepping



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: default avatarPhilipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: default avatarLars Ellenberg <lars.ellenberg@linbit.com>
parent 1fc80cf3
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -1153,7 +1153,7 @@ int drbd_rs_begin_io(struct drbd_conf *mdev, sector_t sector)
	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 @@ int drbd_rs_begin_io(struct drbd_conf *mdev, sector_t sector)
				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;
		}
	}