 /* * if caller didn't supply a lock, they get per-queue locking with * our embedded lock */ if (!lock) { spin_lock_init(&q->__queue_lock); lock = &q->__queue_lock; } 
request_queue_t *blk_init_queue(request_fn_proc *rfn, spinlock_t *lock){	request_queue_t *q = blk_alloc_queue(GFP_KERNEL);	if (!q)		return NULL;	if (blk_init_free_list(q))		goto out_init;	q->request_fn		= rfn;	q->back_merge_fn       	= ll_back_merge_fn;	q->front_merge_fn      	= ll_front_merge_fn;	q->merge_requests_fn	= ll_merge_requests_fn;	q->prep_rq_fn		= NULL;	q->unplug_fn		= generic_unplug_device;	q->queue_flags		= (1 << QUEUE_FLAG_CLUSTER);	q->queue_lock		= lock;	blk_queue_segment_boundary(q, 0xffffffff);	blk_queue_make_request(q, __make_request);	blk_queue_max_segment_size(q, MAX_SEGMENT_SIZE);	blk_queue_max_hw_segments(q, MAX_HW_SEGMENTS);	blk_queue_max_phys_segments(q, MAX_PHYS_SEGMENTS);	/*	 * all done	 */	if (!elevator_init(q, NULL)) {		blk_queue_congestion_threshold(q);		return q;	}	blk_cleanup_queue(q);out_init:	kmem_cache_free(requestq_cachep, q);	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/152587deb8903c0edf483a5b889f975bc6bea7e0/ll_rw_blk.c/buggy/drivers/block/ll_rw_blk.c