cfq_get_queue(struct cfq_data *cfqd, unsigned int key, int gfp_mask) 
cfq_get_queue(struct cfq_data *cfqd, unsigned int key, unsigned short ioprio, int gfp_mask) 
cfq_get_queue(struct cfq_data *cfqd, unsigned int key, int gfp_mask){	const int hashval = hash_long(key, CFQ_QHASH_SHIFT);	struct cfq_queue *cfqq, *new_cfqq = NULL;retry:	cfqq = __cfq_find_cfq_hash(cfqd, key, hashval);	if (!cfqq) {		if (new_cfqq) {			cfqq = new_cfqq;			new_cfqq = NULL;		} else if (gfp_mask & __GFP_WAIT) {			spin_unlock_irq(cfqd->queue->queue_lock);			new_cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);			spin_lock_irq(cfqd->queue->queue_lock);			goto retry;		} else {			cfqq = kmem_cache_alloc(cfq_pool, gfp_mask);			if (!cfqq)				goto out;		}		memset(cfqq, 0, sizeof(*cfqq));		INIT_HLIST_NODE(&cfqq->cfq_hash);		INIT_LIST_HEAD(&cfqq->cfq_list);		RB_CLEAR_ROOT(&cfqq->sort_list);		INIT_LIST_HEAD(&cfqq->fifo);		cfqq->key = key;		hlist_add_head(&cfqq->cfq_hash, &cfqd->cfq_hash[hashval]);		atomic_set(&cfqq->ref, 0);		cfqq->cfqd = cfqd;		atomic_inc(&cfqd->ref);		cfqq->service_last = 0;		/*		 * set ->slice_left to allow preemption for a new process		 */		cfqq->slice_left = 2 * cfqd->cfq_slice_idle;		cfqq->idle_window = 1;		cfqq->ioprio = -1;		cfqq->ioprio_class = -1;		cfqq->prio_changed = 1;	}	if (new_cfqq)		kmem_cache_free(cfq_pool, new_cfqq);	atomic_inc(&cfqq->ref);out:	WARN_ON((gfp_mask & __GFP_WAIT) && !cfqq);	return cfqq;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3b18152c327707ae6a2eeba4cfb66457143753bc/cfq-iosched.c/clean/drivers/block/cfq-iosched.c