|
@@ -667,15 +667,11 @@ cfq_choose_req(struct cfq_data *cfqd, struct request *rq1, struct request *rq2,
|
|
|
if (rq2 == NULL)
|
|
|
return rq1;
|
|
|
|
|
|
- if (rq_is_sync(rq1) && !rq_is_sync(rq2))
|
|
|
- return rq1;
|
|
|
- else if (rq_is_sync(rq2) && !rq_is_sync(rq1))
|
|
|
- return rq2;
|
|
|
- if ((rq1->cmd_flags & REQ_META) && !(rq2->cmd_flags & REQ_META))
|
|
|
- return rq1;
|
|
|
- else if ((rq2->cmd_flags & REQ_META) &&
|
|
|
- !(rq1->cmd_flags & REQ_META))
|
|
|
- return rq2;
|
|
|
+ if (rq_is_sync(rq1) != rq_is_sync(rq2))
|
|
|
+ return rq_is_sync(rq1) ? rq1 : rq2;
|
|
|
+
|
|
|
+ if ((rq1->cmd_flags ^ rq2->cmd_flags) & REQ_META)
|
|
|
+ return rq1->cmd_flags & REQ_META ? rq1 : rq2;
|
|
|
|
|
|
s1 = blk_rq_pos(rq1);
|
|
|
s2 = blk_rq_pos(rq2);
|