/* * just mark as started even if we don't start it, a request * that has been delayed should not be passed by new incoming * requests */ rq->flags |= REQ_STARTED; 
if (!(rq->flags & REQ_STARTED)) { elevator_t *e = q->elevator;  /* * This is the first time the device driver * sees this request (possibly after * requeueing).  Notify IO scheduler. */ if (blk_sorted_rq(rq) && e->ops->elevator_activate_req_fn) e->ops->elevator_activate_req_fn(q, rq);  /* * just mark as started even if we don't start * it, a request that has been delayed should * not be passed by new incoming requests */ rq->flags |= REQ_STARTED; } 
struct request *elv_next_request(request_queue_t *q){	struct request *rq;	int ret;	while ((rq = __elv_next_request(q)) != NULL) {		/*		 * just mark as started even if we don't start it, a request		 * that has been delayed should not be passed by new incoming		 * requests		 */		rq->flags |= REQ_STARTED;		if (rq == q->last_merge)			q->last_merge = NULL;		if ((rq->flags & REQ_DONTPREP) || !q->prep_rq_fn)			break;		ret = q->prep_rq_fn(q, rq);		if (ret == BLKPREP_OK) {			break;		} else if (ret == BLKPREP_DEFER) {			/*			 * the request may have been (partially) prepped.			 * we need to keep this request in the front to			 * avoid resource deadlock.  turn on softbarrier.			 */			rq->flags |= REQ_SOFTBARRIER;			rq = NULL;			break;		} else if (ret == BLKPREP_KILL) {			int nr_bytes = rq->hard_nr_sectors << 9;			if (!nr_bytes)				nr_bytes = rq->data_len;			blkdev_dequeue_request(rq);			rq->flags |= REQ_QUIET;			end_that_request_chunk(rq, 0, nr_bytes);			end_that_request_last(rq);		} else {			printk(KERN_ERR "%s: bad return=%d\n", __FUNCTION__,								ret);			break;		}	}	return rq;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/8922e16cf6269e668123acb1ae1fdc62b7a3a4fc/elevator.c/buggy/drivers/block/elevator.c