Merge commit 'v2.6.39' into for-2.6.40/core
[linux-2.6.git] / drivers / block / osdblk.c
index 819002b..87311eb 100644 (file)
@@ -310,8 +310,7 @@ static void osdblk_rq_fn(struct request_queue *q)
                        break;
 
                /* filter out block requests we don't understand */
-               if (rq->cmd_type != REQ_TYPE_FS &&
-                   !(rq->cmd_flags & REQ_HARDBARRIER)) {
+               if (rq->cmd_type != REQ_TYPE_FS) {
                        blk_end_request_all(rq, 0);
                        continue;
                }
@@ -323,7 +322,7 @@ static void osdblk_rq_fn(struct request_queue *q)
                 * driver-specific, etc.
                 */
 
-               do_flush = (rq->special == (void *) 0xdeadbeefUL);
+               do_flush = rq->cmd_flags & REQ_FLUSH;
                do_write = (rq_data_dir(rq) == WRITE);
 
                if (!do_flush) { /* osd_flush does not use a bio */
@@ -380,14 +379,6 @@ static void osdblk_rq_fn(struct request_queue *q)
        }
 }
 
-static void osdblk_prepare_flush(struct request_queue *q, struct request *rq)
-{
-       /* add driver-specific marker, to indicate that this request
-        * is a flush command
-        */
-       rq->special = (void *) 0xdeadbeefUL;
-}
-
 static void osdblk_free_disk(struct osdblk_device *osdev)
 {
        struct gendisk *disk = osdev->disk;
@@ -447,7 +438,7 @@ static int osdblk_init_disk(struct osdblk_device *osdev)
        blk_queue_stack_limits(q, osd_request_queue(osdev->osd));
 
        blk_queue_prep_rq(q, blk_queue_start_tag);
-       blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH, osdblk_prepare_flush);
+       blk_queue_flush(q, REQ_FLUSH);
 
        disk->queue = q;