aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_req.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block/drbd/drbd_req.c')
-rw-r--r--drivers/block/drbd/drbd_req.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
index c24379ffd4e3..fec7bef44994 100644
--- a/drivers/block/drbd/drbd_req.c
+++ b/drivers/block/drbd/drbd_req.c
@@ -1306,6 +1306,7 @@ int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct
1306 int backing_limit; 1306 int backing_limit;
1307 1307
1308 if (bio_size && get_ldev(mdev)) { 1308 if (bio_size && get_ldev(mdev)) {
1309 unsigned int max_hw_sectors = queue_max_hw_sectors(q);
1309 struct request_queue * const b = 1310 struct request_queue * const b =
1310 mdev->ldev->backing_bdev->bd_disk->queue; 1311 mdev->ldev->backing_bdev->bd_disk->queue;
1311 if (b->merge_bvec_fn) { 1312 if (b->merge_bvec_fn) {
@@ -1313,6 +1314,8 @@ int drbd_merge_bvec(struct request_queue *q, struct bvec_merge_data *bvm, struct
1313 limit = min(limit, backing_limit); 1314 limit = min(limit, backing_limit);
1314 } 1315 }
1315 put_ldev(mdev); 1316 put_ldev(mdev);
1317 if ((limit >> 9) > max_hw_sectors)
1318 limit = max_hw_sectors << 9;
1316 } 1319 }
1317 return limit; 1320 return limit;
1318} 1321}