diff options
author | Philipp Reisner <philipp.reisner@linbit.com> | 2009-12-29 15:56:01 +0100 |
---|---|---|
committer | Philipp Reisner <philipp.reisner@linbit.com> | 2009-12-31 09:33:09 +0100 |
commit | 367a8d738542b091228613751af0958ce25bbeb3 (patch) | |
tree | f2e754e172dc09344c2f9ffac5282ddfdcc854c5 /drivers/block | |
parent | 89f01d5cd3c7ef01239bf15283181a0091c78657 (diff) | |
download | op-kernel-dev-367a8d738542b091228613751af0958ce25bbeb3.zip op-kernel-dev-367a8d738542b091228613751af0958ce25bbeb3.tar.gz |
drbd: Silenced an assert that could triggered after changing write ordering method
Immediately after changing the write ordering method, the epoch can already
be finished at this point.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/drbd/drbd_receiver.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c index 259c135..a6d266e 100644 --- a/drivers/block/drbd/drbd_receiver.c +++ b/drivers/block/drbd/drbd_receiver.c @@ -1201,10 +1201,11 @@ static int receive_Barrier(struct drbd_conf *mdev, struct p_header *h) case WO_bdev_flush: case WO_drain_io: - D_ASSERT(rv == FE_STILL_LIVE); - set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags); - drbd_wait_ee_list_empty(mdev, &mdev->active_ee); - rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); + if (rv == FE_STILL_LIVE) { + set_bit(DE_BARRIER_IN_NEXT_EPOCH_ISSUED, &mdev->current_epoch->flags); + drbd_wait_ee_list_empty(mdev, &mdev->active_ee); + rv = drbd_flush_after_epoch(mdev, mdev->current_epoch); + } if (rv == FE_RECYCLED) return TRUE; |