/* A request has just been released. Account for it, update the full and congestion status, wake up any waiters. Called under q->queue_lock.  */
static void freed_request(struct request_queue *q, int sync, int priv)
/* A request has just been released. Account for it, update the full and congestion status, wake up any waiters. Called under q->queue_lock.  */
static void freed_request(struct request_queue *q, int sync, int priv)
{
	struct request_list *rl = &q->rq;
	rl->count[sync]--;
	if (priv)
		rl->elvpriv--;
	__freed_request(q, sync);
	if (unlikely(rl->starved[sync ^ 1]))
		__freed_request(q, sync ^ 1);
}