int bits, i; 
init_tag_map(request_queue_t *q, struct blk_queue_tag *tags, int depth){	int bits, i;	struct request **tag_index;	unsigned long *tag_map;	if (depth > q->nr_requests * 2) {		depth = q->nr_requests * 2;		printk(KERN_ERR "%s: adjusted depth to %d\n",				__FUNCTION__, depth);	}	tag_index = kmalloc(depth * sizeof(struct request *), GFP_ATOMIC);	if (!tag_index)		goto fail;	bits = (depth / BLK_TAGS_PER_LONG) + 1;	tag_map = kmalloc(bits * sizeof(unsigned long), GFP_ATOMIC);	if (!tag_map)		goto fail;	memset(tag_index, 0, depth * sizeof(struct request *));	memset(tag_map, 0, bits * sizeof(unsigned long));	tags->max_depth = depth;	tags->real_max_depth = bits * BITS_PER_LONG;	tags->tag_index = tag_index;	tags->tag_map = tag_map;	/*	 * set the upper bits if the depth isn't a multiple of the word size	 */	for (i = depth; i < bits * BLK_TAGS_PER_LONG; i++)		__set_bit(i, tag_map);	return 0;fail:	kfree(tag_index);	return -ENOMEM;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fa72b903f75e4f0f0b2c2feed093005167da4023/ll_rw_blk.c/clean/drivers/block/ll_rw_blk.c