diff options
author | Tejun Heo <htejun@gmail.com> | 2008-02-19 05:36:55 -0500 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-02-19 05:36:55 -0500 |
commit | db0a2e0099be3a1cff55879225881465f16c67d3 (patch) | |
tree | 297f788296f1722b4a6b2e5947fa9a3aa63dc36b /block | |
parent | 2fb98e8414c42cb14698833aac640b143b9ade4f (diff) |
block: clear drain buffer if draining for write command
Clear drain buffer before chaining if the command in question is a
write.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-merge.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/block/blk-merge.c b/block/blk-merge.c index bef1b4d0fc02..7506c4fe0264 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c | |||
@@ -221,6 +221,9 @@ new_segment: | |||
221 | } /* segments in rq */ | 221 | } /* segments in rq */ |
222 | 222 | ||
223 | if (q->dma_drain_size && q->dma_drain_needed(rq)) { | 223 | if (q->dma_drain_size && q->dma_drain_needed(rq)) { |
224 | if (rq->cmd_flags & REQ_RW) | ||
225 | memset(q->dma_drain_buffer, 0, q->dma_drain_size); | ||
226 | |||
224 | sg->page_link &= ~0x02; | 227 | sg->page_link &= ~0x02; |
225 | sg = sg_next(sg); | 228 | sg = sg_next(sg); |
226 | sg_set_page(sg, virt_to_page(q->dma_drain_buffer), | 229 | sg_set_page(sg, virt_to_page(q->dma_drain_buffer), |