Merge branch 'for-linus' of ../linux-2.6-block into block-for-2.6.39/core
[sfrench/cifs-2.6.git] / block / elevator.c
index 236e93c1f46ce54d0f2ac40c48a85289f1d568fb..fabf3675c913786450c219ed3086a899186b82c0 100644 (file)
@@ -673,6 +673,11 @@ void elv_insert(struct request_queue *q, struct request *rq, int where)
                q->elevator->ops->elevator_add_req_fn(q, rq);
                break;
 
+       case ELEVATOR_INSERT_FLUSH:
+               rq->cmd_flags |= REQ_SOFTBARRIER;
+               blk_insert_flush(rq);
+               break;
+
        default:
                printk(KERN_ERR "%s: bad insertion point %d\n",
                       __func__, where);
@@ -759,7 +764,7 @@ int elv_set_request(struct request_queue *q, struct request *rq, gfp_t gfp_mask)
        if (e->ops->elevator_set_req_fn)
                return e->ops->elevator_set_req_fn(q, rq, gfp_mask);
 
-       rq->elevator_private = NULL;
+       rq->elevator_private[0] = NULL;
        return 0;
 }
 
@@ -785,6 +790,8 @@ void elv_abort_queue(struct request_queue *q)
 {
        struct request *rq;
 
+       blk_abort_flushes(q);
+
        while (!list_empty(&q->queue_head)) {
                rq = list_entry_rq(q->queue_head.next);
                rq->cmd_flags |= REQ_QUIET;