diff options
author | Lars Ellenberg <lars.ellenberg@linbit.com> | 2014-04-28 12:43:19 -0400 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2014-04-30 15:46:54 -0400 |
commit | e82998743385ca861b9ec919eb2ba8177ce72180 (patch) | |
tree | 4cf895d0a9633eff1f11363f98ebe60713a4bcd7 /drivers/block/drbd/drbd_int.h | |
parent | 0e49d7b014c5d591a053d08888a455bd74a88646 (diff) |
drbd: don't let application IO pre-empt resync too often
Before, application IO could pre-empt resync activity
for up to hardcoded 20 seconds per resync request.
A very busy server could throttle the effective resync bandwidth
down to one request per 20 seconds.
Now, we only let application IO pre-empt resync traffic
while the current resync rate estimate is above c-min-rate.
If you disable the c-min-rate throttle feature (set c-min-rate = 0),
application IO will no longer pre-empt resync traffic at all.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/block/drbd/drbd_int.h')
-rw-r--r-- | drivers/block/drbd/drbd_int.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h index 361a2e9cd727..f0cabea5cda2 100644 --- a/drivers/block/drbd/drbd_int.h +++ b/drivers/block/drbd/drbd_int.h | |||
@@ -1339,7 +1339,8 @@ extern void start_resync_timer_fn(unsigned long data); | |||
1339 | /* drbd_receiver.c */ | 1339 | /* drbd_receiver.c */ |
1340 | extern int drbd_receiver(struct drbd_thread *thi); | 1340 | extern int drbd_receiver(struct drbd_thread *thi); |
1341 | extern int drbd_asender(struct drbd_thread *thi); | 1341 | extern int drbd_asender(struct drbd_thread *thi); |
1342 | extern int drbd_rs_should_slow_down(struct drbd_device *device, sector_t sector); | 1342 | extern bool drbd_rs_c_min_rate_throttle(struct drbd_device *device); |
1343 | extern bool drbd_rs_should_slow_down(struct drbd_device *device, sector_t sector); | ||
1343 | extern int drbd_submit_peer_request(struct drbd_device *, | 1344 | extern int drbd_submit_peer_request(struct drbd_device *, |
1344 | struct drbd_peer_request *, const unsigned, | 1345 | struct drbd_peer_request *, const unsigned, |
1345 | const int); | 1346 | const int); |