summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMalahal Naineni <malahal@us.ibm.com>2010-10-01 14:45:27 +0200
committerJens Axboe <jaxboe@fusionio.com>2010-10-01 14:45:27 +0200
commitefb012b361cf9319cd86ff169afa7550b7aa9336 (patch)
treee8c0027db29ec3898d835ca0fa6efab93d86b9bd
parent260a67a9e534f0c7d49ddd6451833d54ba39ac81 (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>
-rw-r--r--block/blk-settings.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-settings.c b/block/blk-settings.c
index f8f2ddf2061..a3600a7ab8b 100644
--- a/block/blk-settings.c
+++ b/block/blk-settings.c
@@ -214,7 +214,7 @@ void blk_queue_bounce_limit(struct request_queue *q, u64 dma_mask)
*/
if (b_pfn < (min_t(u64, 0xffffffffUL, BLK_BOUNCE_HIGH) >> PAGE_SHIFT))
dma = 1;
- q->limits.bounce_pfn = max_low_pfn;
+ q->limits.bounce_pfn = max(max_low_pfn, b_pfn);
#else
if (b_pfn < blk_max_low_pfn)
dma = 1;