diff options
author | Tejun Heo <htejun@gmail.com> | 2008-02-19 05:36:53 -0500 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-02-19 05:36:53 -0500 |
commit | 2fb98e8414c42cb14698833aac640b143b9ade4f (patch) | |
tree | ab241305b5ce3ea5ef3e76df7abe04b831cd9e34 /block/blk-merge.c | |
parent | 6b00769fe1502b4ad97bb327ef7ac971b208bfb5 (diff) |
block: implement request_queue->dma_drain_needed
Draining shouldn't be done for commands where overflow may indicate
data integrity issues. Add dma_drain_needed callback to
request_queue. Drain buffer is appened iff this function returns
non-zero.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/blk-merge.c')
-rw-r--r-- | block/blk-merge.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/block/blk-merge.c b/block/blk-merge.c index 39f2e077a014..bef1b4d0fc02 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c | |||
@@ -220,7 +220,7 @@ new_segment: | |||
220 | bvprv = bvec; | 220 | bvprv = bvec; |
221 | } /* segments in rq */ | 221 | } /* segments in rq */ |
222 | 222 | ||
223 | if (q->dma_drain_size) { | 223 | if (q->dma_drain_size && q->dma_drain_needed(rq)) { |
224 | sg->page_link &= ~0x02; | 224 | sg->page_link &= ~0x02; |
225 | sg = sg_next(sg); | 225 | sg = sg_next(sg); |
226 | sg_set_page(sg, virt_to_page(q->dma_drain_buffer), | 226 | sg_set_page(sg, virt_to_page(q->dma_drain_buffer), |