From 85dcddb21b48e32c91a2c401620a6d967a843d9c Mon Sep 17 00:00:00 2001 From: Lars Ellenberg Date: Fri, 14 May 2010 19:08:55 +0200 Subject: [PATCH] --- yaml --- r: 196863 b: refs/heads/master c: bb3d000cb99aa0924b78c1ae5f5943484527868a h: refs/heads/master i: 196861: 896548e7f418622695fb668f5d636d857452b127 196859: c989431153ef3833079ecbbae98b92ee2df60aa3 196855: efc168ea3742ecf0659eb5095d7618f2cfd3c6fb 196847: a3134eb8d84bf18f2892f254c1341d437e7de971 196831: 2bdd1738771dcc702d102a73822d77b4f1965067 196799: 7ab7562317108770c187b5bf2e8262f99962ba08 196735: da5fbedc4a92efbf73a8f3cfff006f9702fd5119 196607: 01bac5e5a8414a3908aa50d1e83fbc56ad7584c3 v: v3 --- [refs] | 2 +- trunk/drivers/block/drbd/drbd_worker.c | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index a7d2422f6bb0..1f7aae484a41 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 45bb912bd5ea4d2b3a270a93cbdf767a0e2df6f5 +refs/heads/master: bb3d000cb99aa0924b78c1ae5f5943484527868a diff --git a/trunk/drivers/block/drbd/drbd_worker.c b/trunk/drivers/block/drbd/drbd_worker.c index d771b1e0424b..91085c1ab52f 100644 --- a/trunk/drivers/block/drbd/drbd_worker.c +++ b/trunk/drivers/block/drbd/drbd_worker.c @@ -462,7 +462,7 @@ int w_make_resync_request(struct drbd_conf *mdev, unsigned long bit; sector_t sector; const sector_t capacity = drbd_get_capacity(mdev->this_bdev); - int max_segment_size = queue_max_segment_size(mdev->rq_queue); + int max_segment_size; int number, i, size, pe, mx; int align, queued, sndbuf; @@ -488,6 +488,11 @@ int w_make_resync_request(struct drbd_conf *mdev, return 1; } + /* starting with drbd 8.3.8, we can handle multi-bio EEs, + * if it should be necessary */ + max_segment_size = mdev->agreed_pro_version < 94 ? + queue_max_segment_size(mdev->rq_queue) : DRBD_MAX_SEGMENT_SIZE; + mdev->c_sync_rate = calc_resync_rate(mdev); number = SLEEP_TIME * mdev->c_sync_rate / ((BM_BLOCK_SIZE / 1024) * HZ); pe = atomic_read(&mdev->rs_pending_cnt); @@ -552,12 +557,6 @@ int w_make_resync_request(struct drbd_conf *mdev, * * Additionally always align bigger requests, in order to * be prepared for all stripe sizes of software RAIDs. - * - * we _do_ care about the agreed-upon q->max_segment_size - * here, as splitting up the requests on the other side is more - * difficult. the consequence is, that on lvm and md and other - * "indirect" devices, this is dead code, since - * q->max_segment_size will be PAGE_SIZE. */ align = 1; for (;;) {