Class mClockQueue calls PullPriorityQueue::pull_request in function "dequeue()" when OSD dequeues a request from opqueue. But PullPriorityQueue::pull_request may return three types of values namely "returning", "future", and "none". The type "future" means that there are some requests in queue, but their tag are greater than now, so they should be execute in the future but not now. mClockQueue::dequeue() do not consider about the type of return value and execute the request immediately. PullPriorityQueue only pops the request when return "returning" request, so the "future" request would be remained. This will cause the operation be executed in many times. From Weihaocheng