|
@@ -1125,13 +1125,14 @@ static enum finish_epoch drbd_may_finish_epoch(struct drbd_conf *mdev,
|
|
|
|
|
|
if (epoch_size != 0 &&
|
|
|
atomic_read(&epoch->active) == 0 &&
|
|
|
- test_bit(DE_HAVE_BARRIER_NUMBER, &epoch->flags)) {
|
|
|
+ (test_bit(DE_HAVE_BARRIER_NUMBER, &epoch->flags) || ev & EV_CLEANUP)) {
|
|
|
if (!(ev & EV_CLEANUP)) {
|
|
|
spin_unlock(&mdev->epoch_lock);
|
|
|
drbd_send_b_ack(mdev, epoch->barrier_nr, epoch_size);
|
|
|
spin_lock(&mdev->epoch_lock);
|
|
|
}
|
|
|
- dec_unacked(mdev);
|
|
|
+ if (test_bit(DE_HAVE_BARRIER_NUMBER, &epoch->flags))
|
|
|
+ dec_unacked(mdev);
|
|
|
|
|
|
if (mdev->current_epoch != epoch) {
|
|
|
next_epoch = list_entry(epoch->list.next, struct drbd_epoch, list);
|