diff options
Diffstat (limited to 'drivers/block/drbd/drbd_req.c')
-rw-r--r-- | drivers/block/drbd/drbd_req.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c index 889175110c91..a3f6b04ebaba 100644 --- a/drivers/block/drbd/drbd_req.c +++ b/drivers/block/drbd/drbd_req.c | |||
@@ -1002,7 +1002,13 @@ allocate_barrier: | |||
1002 | congested = 1; | 1002 | congested = 1; |
1003 | } | 1003 | } |
1004 | 1004 | ||
1005 | if (congested) { | 1005 | if (congested && atomic_read(&mdev->rs_pending_cnt) == 0) { |
1006 | /* rs_pending_cnt must be zero, otherwise the two peers | ||
1007 | might get different bitmaps. With sane configurations | ||
1008 | the resync stalls long before we might want to go into | ||
1009 | AHEAD mode. | ||
1010 | We could force the resync into PAUSE mode here if | ||
1011 | rs_pending_cnt is > 0 ... */ | ||
1006 | queue_barrier(mdev); | 1012 | queue_barrier(mdev); |
1007 | 1013 | ||
1008 | if (mdev->net_conf->on_congestion == OC_PULL_AHEAD) | 1014 | if (mdev->net_conf->on_congestion == OC_PULL_AHEAD) |