1UL<<(BFQ_RATE_SHIFT - 10))
                bfq_update_rate_reset(bfqd, NULL);
        bfqd->last_completion = now_ns;
-       bfqd->last_completed_rq_bfqq = bfqq;
+       /*
+        * Shared queues are likely to receive I/O at a high
+        * rate. This may deceptively let them be considered as wakers
+        * of other queues. But a false waker will unjustly steal
+        * bandwidth to its supposedly woken queue. So considering
+        * also shared queues in the waking mechanism may cause more
+        * control troubles than throughput benefits. Then do not set
+        * last_completed_rq_bfqq to bfqq if bfqq is a shared queue.
+        */
+       if (!bfq_bfqq_coop(bfqq))
+               bfqd->last_completed_rq_bfqq = bfqq;
 
        /*
         * If we are waiting to discover whether the request pattern