diff options
author | Tejun Heo <htejun@gmail.com> | 2008-02-19 11:36:55 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2008-02-19 11:36:55 +0100 |
commit | db0a2e0099be3a1cff55879225881465f16c67d3 (patch) | |
tree | 297f788296f1722b4a6b2e5947fa9a3aa63dc36b /block | |
parent | 2fb98e8414c42cb14698833aac640b143b9ade4f (diff) | |
download | lwn-db0a2e0099be3a1cff55879225881465f16c67d3.tar.gz lwn-db0a2e0099be3a1cff55879225881465f16c67d3.zip |
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: } /* segments in rq */ if (q->dma_drain_size && q->dma_drain_needed(rq)) { + if (rq->cmd_flags & REQ_RW) + memset(q->dma_drain_buffer, 0, q->dma_drain_size); + sg->page_link &= ~0x02; sg = sg_next(sg); sg_set_page(sg, virt_to_page(q->dma_drain_buffer), |