In raid 0 case, a big discard request is divided into several small requests in chunk_size unit. Such requests can be merged in low layer if we have correct plug added. This should improve the performance a little bit. raid 10 case doesn't matter, as we dispatch request in a separate thread and there is plug there. Signed-off-by: Shaohua Li --- block/blk-lib.c | 3 +++ 1 file changed, 3 insertions(+) Index: linux/block/blk-lib.c =================================================================== --- linux.orig/block/blk-lib.c 2012-03-09 16:56:41.043790011 +0800 +++ linux/block/blk-lib.c 2012-03-12 10:21:38.716609525 +0800 @@ -47,6 +47,7 @@ int blkdev_issue_discard(struct block_de struct bio_batch bb; struct bio *bio; int ret = 0; + struct blk_plug plug; if (!q) return -ENXIO; @@ -78,6 +79,7 @@ int blkdev_issue_discard(struct block_de bb.flags = 1 << BIO_UPTODATE; bb.wait = &wait; + blk_start_plug(&plug); while (nr_sects) { bio = bio_alloc(gfp_mask, 1); if (!bio) { @@ -102,6 +104,7 @@ int blkdev_issue_discard(struct block_de atomic_inc(&bb.done); submit_bio(type, bio); } + blk_finish_plug(&plug); /* Wait for bios in-flight */ if (!atomic_dec_and_test(&bb.done)) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/