X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=block%2Fblk-merge.c;h=0f58616bcd7f183514c43eb913f0e0c23c855215;hb=beafe91f1c2c49713221ca2616755e1f3d472084;hp=d3b84bbb776a5fd0b3ba3238c7de20e7df93eaeb;hpb=0cf975e16927fd70f34cee20d3856246c13bb4c8;p=linux-2.6-omap-h63xx.git diff --git a/block/blk-merge.c b/block/blk-merge.c index d3b84bbb776..0f58616bcd7 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -220,7 +220,10 @@ new_segment: bvprv = bvec; } /* segments in rq */ - if (q->dma_drain_size) { + 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), @@ -228,6 +231,7 @@ new_segment: ((unsigned long)q->dma_drain_buffer) & (PAGE_SIZE - 1)); nsegs++; + rq->extra_len += q->dma_drain_size; } if (sg)