X-Git-Url: http://bbs.cooldavid.org/git/?a=blobdiff_plain;f=block%2Fblk-merge.c;h=eafc94f68d79f2ceb1c0a89fce8e449c3a5ff3f6;hb=f281fb5fe54e15a7ab802945e42f8e24fceb56b2;hp=3b0cd4249671d9826b42ea10473a11486c403368;hpb=a850ea30374ebed32a0724742601861853fde869;p=net-next-2.6.git diff --git a/block/blk-merge.c b/block/blk-merge.c index 3b0cd424967..eafc94f68d7 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -361,6 +361,18 @@ static int attempt_merge(struct request_queue *q, struct request *req, if (!rq_mergeable(req) || !rq_mergeable(next)) return 0; + /* + * Don't merge file system requests and discard requests + */ + if ((req->cmd_flags & REQ_DISCARD) != (next->cmd_flags & REQ_DISCARD)) + return 0; + + /* + * Don't merge discard requests and secure discard requests + */ + if ((req->cmd_flags & REQ_SECURE) != (next->cmd_flags & REQ_SECURE)) + return 0; + /* * not contiguous */