block: add plug for blkdev_issue_discard
PATCH 2/2 block: add plug for blkdev_issue_discard
Last post of this patch appears lost, so I resend this.
Now discard merge works, add plug for blkdev_issue_discard. This will help discard request merge especially for raid0 case. In raid0, a big discard request is split to small requests, and if correct plug is added, such small requests can be merged in low layer.
Signed-off-by Shaohua Li <[email protected]>
--- block/blk-lib.c | 3 +++ 1 file changed, 3 insertions(+)
block/blk-lib.c +3 -0
@@ -48,6 +48,7 @@ int blkdev_issue_discard(struct block_destruct bio_batch bb;struct bio *bio;int ret =0 ; +struct blk_plug plug;if (!q)return -ENXIO ;
@@ -82,6 +83,7 @@ int blkdev_issue_discard(struct block_de bb.flags =1 <<BIO_UPTODATE ; bb.wait = &wait; +blk_start_plug (&plug);while (nr_sects) {unsigned int req_sects;sector_t end_sect, tmp;
@@ -120,6 +122,7 @@ int blkdev_issue_discard(struct block_deatomic_inc (&bb.done);submit_bio (type, bio); } +blk_finish_plug (&plug);/* Wait for bios in-flight */ if (!atomic_dec_and_test (&bb.done))