Skip to content

Commit

Permalink
drbd: Removed 20 seconds upper bound for side-stepping
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Philipp Reisner committed Mar 10, 2011
1 parent 1fc80cf commit c507f46
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions drivers/block/drbd/drbd_actlog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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;
}
}
Expand Down

0 comments on commit c507f46

Please sign in to comment.