]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
block: permit PREFLUSH and POSTFLUSH without prepare_flush_fn
authorFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Sat, 3 Jul 2010 08:45:33 +0000 (17:45 +0900)
committerJens Axboe <jaxboe@fusionio.com>
Sat, 7 Aug 2010 16:23:56 +0000 (18:23 +0200)
This is preparation for removing q->prepare_flush_fn.

Temporarily, blk_queue_ordered() permits QUEUE_ORDERED_DO_PREFLUSH and
QUEUE_ORDERED_DO_POSTFLUSH without prepare_flush_fn.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
block/blk-barrier.c

index a3482425c507a0b1217ea04de663adc409140fc5..7ce0a32a21fd2667dbe28c6fde25861145724c87 100644 (file)
 int blk_queue_ordered(struct request_queue *q, unsigned ordered,
                      prepare_flush_fn *prepare_flush_fn)
 {
-       if (!prepare_flush_fn && (ordered & (QUEUE_ORDERED_DO_PREFLUSH |
-                                            QUEUE_ORDERED_DO_POSTFLUSH))) {
-               printk(KERN_ERR "%s: prepare_flush_fn required\n", __func__);
-               return -EINVAL;
-       }
-
        if (ordered != QUEUE_ORDERED_NONE &&
            ordered != QUEUE_ORDERED_DRAIN &&
            ordered != QUEUE_ORDERED_DRAIN_FLUSH &&
@@ -146,7 +140,8 @@ static void queue_flush(struct request_queue *q, unsigned which)
        rq->cmd_flags = REQ_HARDBARRIER | REQ_FLUSH;
        rq->rq_disk = q->bar_rq.rq_disk;
        rq->end_io = end_io;
-       q->prepare_flush_fn(q, rq);
+       if (q->prepare_flush_fn)
+               q->prepare_flush_fn(q, rq);
 
        elv_insert(q, rq, ELEVATOR_INSERT_FRONT);
 }