/* This function requests that the block layer start recovery for the request by deleting the timer and calling the q's timeout function. LLDDs who implement their own error recovery MAY ignore the timeout event if they generated blk_abort_req. Must hold queue lock.  */
void blk_abort_request(struct request *req)
/* This function requests that the block layer start recovery for the request by deleting the timer and calling the q's timeout function. LLDDs who implement their own error recovery MAY ignore the timeout event if they generated blk_abort_req. Must hold queue lock.  */
void blk_abort_request(struct request *req)
{
	if (blk_mark_rq_complete(req))
		return;
	blk_delete_timer(req);
	blk_rq_timed_out(req);
}