Loading block/cfq-iosched.c +10 −3 Original line number Diff line number Diff line Loading @@ -2827,7 +2827,6 @@ static struct request *cfq_check_fifo(struct cfq_queue *cfqq) if (time_before(jiffies, rq->fifo_time)) rq = NULL; cfq_log_cfqq(cfqq->cfqd, cfqq, "fifo=%p", rq); return rq; } Loading Loading @@ -3201,6 +3200,9 @@ static bool cfq_may_dispatch(struct cfq_data *cfqd, struct cfq_queue *cfqq) { unsigned int max_dispatch; if (cfq_cfqq_must_dispatch(cfqq)) return true; /* * Drain async requests before we start sync IO */ Loading Loading @@ -3292,15 +3294,20 @@ static bool cfq_dispatch_request(struct cfq_data *cfqd, struct cfq_queue *cfqq) BUG_ON(RB_EMPTY_ROOT(&cfqq->sort_list)); rq = cfq_check_fifo(cfqq); if (rq) cfq_mark_cfqq_must_dispatch(cfqq); if (!cfq_may_dispatch(cfqd, cfqq)) return false; /* * follow expired path, else get first next available */ rq = cfq_check_fifo(cfqq); if (!rq) rq = cfqq->next_rq; else cfq_log_cfqq(cfqq->cfqd, cfqq, "fifo=%p", rq); /* * insert request into driver dispatch list Loading Loading @@ -3809,7 +3816,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, * if the new request is sync, but the currently running queue is * not, let the sync request have priority. */ if (rq_is_sync(rq) && !cfq_cfqq_sync(cfqq)) if (rq_is_sync(rq) && !cfq_cfqq_sync(cfqq) && !cfq_cfqq_must_dispatch(cfqq)) return true; if (new_cfqq->cfqg != cfqq->cfqg) Loading Loading
block/cfq-iosched.c +10 −3 Original line number Diff line number Diff line Loading @@ -2827,7 +2827,6 @@ static struct request *cfq_check_fifo(struct cfq_queue *cfqq) if (time_before(jiffies, rq->fifo_time)) rq = NULL; cfq_log_cfqq(cfqq->cfqd, cfqq, "fifo=%p", rq); return rq; } Loading Loading @@ -3201,6 +3200,9 @@ static bool cfq_may_dispatch(struct cfq_data *cfqd, struct cfq_queue *cfqq) { unsigned int max_dispatch; if (cfq_cfqq_must_dispatch(cfqq)) return true; /* * Drain async requests before we start sync IO */ Loading Loading @@ -3292,15 +3294,20 @@ static bool cfq_dispatch_request(struct cfq_data *cfqd, struct cfq_queue *cfqq) BUG_ON(RB_EMPTY_ROOT(&cfqq->sort_list)); rq = cfq_check_fifo(cfqq); if (rq) cfq_mark_cfqq_must_dispatch(cfqq); if (!cfq_may_dispatch(cfqd, cfqq)) return false; /* * follow expired path, else get first next available */ rq = cfq_check_fifo(cfqq); if (!rq) rq = cfqq->next_rq; else cfq_log_cfqq(cfqq->cfqd, cfqq, "fifo=%p", rq); /* * insert request into driver dispatch list Loading Loading @@ -3809,7 +3816,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, * if the new request is sync, but the currently running queue is * not, let the sync request have priority. */ if (rq_is_sync(rq) && !cfq_cfqq_sync(cfqq)) if (rq_is_sync(rq) && !cfq_cfqq_sync(cfqq) && !cfq_cfqq_must_dispatch(cfqq)) return true; if (new_cfqq->cfqg != cfqq->cfqg) Loading