aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/drbd/drbd_receiver.c
diff options
context:
space:
mode:
authorLars Ellenberg <lars.ellenberg@linbit.com>2010-11-11 09:19:07 -0500
committerPhilipp Reisner <philipp.reisner@linbit.com>2011-03-10 05:19:11 -0500
commit1816a2b47afae838e53a177d5d166cc7be97d6b5 (patch)
tree70d4e3c8aca3ab26af6ebe84ed23b0ba4d4d67e9 /drivers/block/drbd/drbd_receiver.c
parent3129b1b9aed15bbebde1b2a5719434273feb295d (diff)
drbd: properly use max_hw_sectors to limit the our bio size
To ease tracking of bios in some hash tables, we want it to not cross certain boundaries (128k, used to be 32k). We limit the maximum bio size using queue parameters. Historically some defines and variables we use there have been named max_segment_size, which was misguided. Rename them to max_bio_size, and use [blk_]queue_max_hw_sectors where appropriate. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_receiver.c')
-rw-r--r--drivers/block/drbd/drbd_receiver.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index ca213c6e5f9d..79e7b57006b1 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -277,7 +277,7 @@ static void drbd_pp_free(struct drbd_conf *mdev, struct page *page, int is_net)
277 atomic_t *a = is_net ? &mdev->pp_in_use_by_net : &mdev->pp_in_use; 277 atomic_t *a = is_net ? &mdev->pp_in_use_by_net : &mdev->pp_in_use;
278 int i; 278 int i;
279 279
280 if (drbd_pp_vacant > (DRBD_MAX_SEGMENT_SIZE/PAGE_SIZE)*minor_count) 280 if (drbd_pp_vacant > (DRBD_MAX_BIO_SIZE/PAGE_SIZE)*minor_count)
281 i = page_chain_free(page); 281 i = page_chain_free(page);
282 else { 282 else {
283 struct page *tmp; 283 struct page *tmp;
@@ -1240,7 +1240,7 @@ read_in_block(struct drbd_conf *mdev, u64 id, sector_t sector, int data_size) __
1240 data_size -= dgs; 1240 data_size -= dgs;
1241 1241
1242 ERR_IF(data_size & 0x1ff) return NULL; 1242 ERR_IF(data_size & 0x1ff) return NULL;
1243 ERR_IF(data_size > DRBD_MAX_SEGMENT_SIZE) return NULL; 1243 ERR_IF(data_size > DRBD_MAX_BIO_SIZE) return NULL;
1244 1244
1245 /* even though we trust out peer, 1245 /* even though we trust out peer,
1246 * we sometimes have to double check. */ 1246 * we sometimes have to double check. */
@@ -1917,7 +1917,7 @@ static int receive_DataRequest(struct drbd_conf *mdev, enum drbd_packets cmd, un
1917 sector = be64_to_cpu(p->sector); 1917 sector = be64_to_cpu(p->sector);
1918 size = be32_to_cpu(p->blksize); 1918 size = be32_to_cpu(p->blksize);
1919 1919
1920 if (size <= 0 || (size & 0x1ff) != 0 || size > DRBD_MAX_SEGMENT_SIZE) { 1920 if (size <= 0 || (size & 0x1ff) != 0 || size > DRBD_MAX_BIO_SIZE) {
1921 dev_err(DEV, "%s:%d: sector: %llus, size: %u\n", __FILE__, __LINE__, 1921 dev_err(DEV, "%s:%d: sector: %llus, size: %u\n", __FILE__, __LINE__,
1922 (unsigned long long)sector, size); 1922 (unsigned long long)sector, size);
1923 return FALSE; 1923 return FALSE;
@@ -2897,7 +2897,7 @@ static int receive_sizes(struct drbd_conf *mdev, enum drbd_packets cmd, unsigned
2897{ 2897{
2898 struct p_sizes *p = &mdev->data.rbuf.sizes; 2898 struct p_sizes *p = &mdev->data.rbuf.sizes;
2899 enum determine_dev_size dd = unchanged; 2899 enum determine_dev_size dd = unchanged;
2900 unsigned int max_seg_s; 2900 unsigned int max_bio_size;
2901 sector_t p_size, p_usize, my_usize; 2901 sector_t p_size, p_usize, my_usize;
2902 int ldsc = 0; /* local disk size changed */ 2902 int ldsc = 0; /* local disk size changed */
2903 enum dds_flags ddsf; 2903 enum dds_flags ddsf;
@@ -2970,14 +2970,14 @@ static int receive_sizes(struct drbd_conf *mdev, enum drbd_packets cmd, unsigned
2970 } 2970 }
2971 2971
2972 if (mdev->agreed_pro_version < 94) 2972 if (mdev->agreed_pro_version < 94)
2973 max_seg_s = be32_to_cpu(p->max_segment_size); 2973 max_bio_size = be32_to_cpu(p->max_bio_size);
2974 else if (mdev->agreed_pro_version == 94) 2974 else if (mdev->agreed_pro_version == 94)
2975 max_seg_s = DRBD_MAX_SIZE_H80_PACKET; 2975 max_bio_size = DRBD_MAX_SIZE_H80_PACKET;
2976 else /* drbd 8.3.8 onwards */ 2976 else /* drbd 8.3.8 onwards */
2977 max_seg_s = DRBD_MAX_SEGMENT_SIZE; 2977 max_bio_size = DRBD_MAX_BIO_SIZE;
2978 2978
2979 if (max_seg_s != queue_max_segment_size(mdev->rq_queue)) 2979 if (max_bio_size != queue_max_hw_sectors(mdev->rq_queue) << 9)
2980 drbd_setup_queue_param(mdev, max_seg_s); 2980 drbd_setup_queue_param(mdev, max_bio_size);
2981 2981
2982 drbd_setup_order_type(mdev, be16_to_cpu(p->queue_order_type)); 2982 drbd_setup_order_type(mdev, be16_to_cpu(p->queue_order_type));
2983 put_ldev(mdev); 2983 put_ldev(mdev);