block, bfq: extend incomplete name of field on_st
[linux-2.6-microblaze.git] / block / bfq-iosched.c
index 4686b68..28770ec 100644 (file)
@@ -613,6 +613,10 @@ bfq_pos_tree_add_move(struct bfq_data *bfqd, struct bfq_queue *bfqq)
                bfqq->pos_root = NULL;
        }
 
+       /* oom_bfqq does not participate in queue merging */
+       if (bfqq == &bfqd->oom_bfqq)
+               return;
+
        /*
         * bfqq cannot be merged any longer (see comments in
         * bfq_setup_cooperator): no point in adding bfqq into the
@@ -1055,7 +1059,7 @@ bfq_bfqq_resume_state(struct bfq_queue *bfqq, struct bfq_data *bfqd,
 
 static int bfqq_process_refs(struct bfq_queue *bfqq)
 {
-       return bfqq->ref - bfqq->allocated - bfqq->entity.on_st -
+       return bfqq->ref - bfqq->allocated - bfqq->entity.on_st_or_in_serv -
                (bfqq->weight_counter != NULL);
 }
 
@@ -3443,6 +3447,10 @@ static void bfq_dispatch_remove(struct request_queue *q, struct request *rq)
 static bool idling_needed_for_service_guarantees(struct bfq_data *bfqd,
                                                 struct bfq_queue *bfqq)
 {
+       /* No point in idling for bfqq if it won't get requests any longer */
+       if (unlikely(!bfqq_process_refs(bfqq)))
+               return false;
+
        return (bfqq->wr_coeff > 1 &&
                (bfqd->wr_busy_queues <
                 bfq_tot_busy_queues(bfqd) ||
@@ -4076,6 +4084,10 @@ static bool idling_boosts_thr_without_issues(struct bfq_data *bfqd,
                bfqq_sequential_and_IO_bound,
                idling_boosts_thr;
 
+       /* No point in idling for bfqq if it won't get requests any longer */
+       if (unlikely(!bfqq_process_refs(bfqq)))
+               return false;
+
        bfqq_sequential_and_IO_bound = !BFQQ_SEEKY(bfqq) &&
                bfq_bfqq_IO_bound(bfqq) && bfq_bfqq_has_short_ttime(bfqq);
 
@@ -4169,6 +4181,10 @@ static bool bfq_better_to_idle(struct bfq_queue *bfqq)
        struct bfq_data *bfqd = bfqq->bfqd;
        bool idling_boosts_thr_with_no_issue, idling_needed_for_service_guar;
 
+       /* No point in idling for bfqq if it won't get requests any longer */
+       if (unlikely(!bfqq_process_refs(bfqq)))
+               return false;
+
        if (unlikely(bfqd->strict_guarantees))
                return true;