as_put_io_context(anext); 
as_merged_requests(request_queue_t *q, struct request *req,			 struct request *next){	struct as_data *ad = q->elevator->elevator_data;	struct as_rq *arq = RQ_DATA(req);	struct as_rq *anext = RQ_DATA(next);	BUG_ON(!arq);	BUG_ON(!anext);	/*	 * reposition arq (this is the merged request) in hash, and in rbtree	 * in case of a front merge	 */	as_del_arq_hash(arq);	as_add_arq_hash(ad, arq);	if (rq_rb_key(req) != arq->rb_key) {		struct as_rq *alias, *next_arq = NULL;		if (ad->next_arq[arq->is_sync] == arq)			next_arq = as_find_next_arq(ad, arq);		as_del_arq_rb(ad, arq);		if ((alias = as_add_arq_rb(ad, arq)) ) {			list_del_init(&arq->fifo);			as_add_aliased_request(ad, arq, alias);			if (next_arq)				ad->next_arq[arq->is_sync] = next_arq;		}	}	/*	 * if anext expires before arq, assign its expire time to arq	 * and move into anext position (anext will be deleted) in fifo	 */	if (!list_empty(&arq->fifo) && !list_empty(&anext->fifo)) {		if (time_before(anext->expires, arq->expires)) {			list_move(&arq->fifo, &anext->fifo);			arq->expires = anext->expires;			/*			 * Don't copy here but swap, because when anext is			 * removed below, it must contain the unused context			 */			swap_io_context(&arq->io_context, &anext->io_context);		}	}	/*	 * Transfer list of aliases	 */	while (!list_empty(&next->queuelist)) {		struct request *__rq = list_entry_rq(next->queuelist.next);		struct as_rq *__arq = RQ_DATA(__rq);		list_move_tail(&__rq->queuelist, &req->queuelist);		WARN_ON(__arq->state != AS_RQ_QUEUED);	}	/*	 * kill knowledge of next, this one is a goner	 */	as_remove_queued_request(q, next);	anext->state = AS_RQ_MERGED;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b4878f245ec8e168cdd1f170f823a750b7dd4af5/as-iosched.c/clean/drivers/block/as-iosched.c