diff options
author | Malahal Naineni <malahal@us.ibm.com> | 2010-09-24 14:25:49 -0400 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2010-09-24 14:27:16 -0400 |
commit | c49825facfd4969585224a896a5e717f88450cad (patch) | |
tree | 2c244fdf033f858147875333024838e493d9e43e /block | |
parent | 4b1977698ceb4c4caa800d475127139da49966f9 (diff) |
block: set the bounce_pfn to the actual DMA limit rather than to max memory
The bounce_pfn of the request queue in 64 bit systems is set to the
current max_low_pfn. Adding more memory later makes this incorrect.
Memory allocated beyond this boot time max_low_pfn appear to require
bounce buffers (bounce buffers are actually not allocated but used in
calculating segments that may result in "over max segments limit"
errors).
Signed-off-by: Malahal Naineni <malahal@us.ibm.com>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-settings.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c index f8f2ddf20613..f47af5031eaa 100644 --- a/block/blk-settings.c +++ b/block/blk-settings.c | |||
@@ -214,16 +214,14 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_mask) | |||
214 | */ | 214 | */ |
215 | if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) | 215 | if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT)) |
216 | dma = 1; | 216 | dma = 1; |
217 | q->limits.bounce_pfn = max_low_pfn; | ||
218 | #else | 217 | #else |
219 | if (b_pfn < blk_max_low_pfn) | 218 | if (b_pfn < blk_max_low_pfn) |
220 | dma = 1; | 219 | dma = 1; |
221 | q->limits.bounce_pfn = b_pfn; | ||
222 | #endif | 220 | #endif |
221 | q->limits.bounce_pfn = b_pfn; | ||
223 | if (dma) { | 222 | if (dma) { |
224 | init_emergency_isa_pool(); | 223 | init_emergency_isa_pool(); |
225 | q->bounce_gfp = GFP_NOIO | GFP_DMA; | 224 | q->bounce_gfp = GFP_NOIO | GFP_DMA; |
226 | q->limits.bounce_pfn = b_pfn; | ||
227 | } | 225 | } |
228 | } | 226 | } |
229 | EXPORT_SYMBOL(blk_queue_bounce_limit); | 227 | EXPORT_SYMBOL(blk_queue_bounce_limit); |