aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--block/blk-barrier.c7
-rw-r--r--drivers/block/brd.c2
-rw-r--r--drivers/block/loop.c2
-rw-r--r--drivers/block/osdblk.c2
-rw-r--r--drivers/block/ps3disk.c2
-rw-r--r--drivers/block/virtio_blk.c4
-rw-r--r--drivers/block/xen-blkfront.c3
-rw-r--r--drivers/ide/ide-disk.c2
-rw-r--r--drivers/md/dm.c2
-rw-r--r--drivers/mmc/card/queue.c2
-rw-r--r--drivers/s390/block/dasd.c2
-rw-r--r--drivers/scsi/sd.c2
-rw-r--r--include/linux/blkdev.h4
13 files changed, 14 insertions, 22 deletions
diff --git a/block/blk-barrier.c b/block/blk-barrier.c
index 7ce0a32a21f..eefbde83530 100644
--- a/block/blk-barrier.c
+++ b/block/blk-barrier.c
@@ -13,7 +13,6 @@
13 * blk_queue_ordered - does this queue support ordered writes 13 * blk_queue_ordered - does this queue support ordered writes
14 * @q: the request queue 14 * @q: the request queue
15 * @ordered: one of QUEUE_ORDERED_* 15 * @ordered: one of QUEUE_ORDERED_*
16 * @prepare_flush_fn: rq setup helper for cache flush ordered writes
17 * 16 *
18 * Description: 17 * Description:
19 * For journalled file systems, doing ordered writes on a commit 18 * For journalled file systems, doing ordered writes on a commit
@@ -22,8 +21,7 @@
22 * feature should call this function and indicate so. 21 * feature should call this function and indicate so.
23 * 22 *
24 **/ 23 **/
25int blk_queue_ordered(struct request_queue *q, unsigned ordered, 24int blk_queue_ordered(struct request_queue *q, unsigned ordered)
26 prepare_flush_fn *prepare_flush_fn)
27{ 25{
28 if (ordered != QUEUE_ORDERED_NONE && 26 if (ordered != QUEUE_ORDERED_NONE &&
29 ordered != QUEUE_ORDERED_DRAIN && 27 ordered != QUEUE_ORDERED_DRAIN &&
@@ -38,7 +36,6 @@ int blk_queue_ordered(struct request_queue *q, unsigned ordered,
38 36
39 q->ordered = ordered; 37 q->ordered = ordered;
40 q->next_ordered = ordered; 38 q->next_ordered = ordered;
41 q->prepare_flush_fn = prepare_flush_fn;
42 39
43 return 0; 40 return 0;
44} 41}
@@ -140,8 +137,6 @@ static void queue_flush(struct request_queue *q, unsigned which)
140 rq->cmd_flags = REQ_HARDBARRIER | REQ_FLUSH; 137 rq->cmd_flags = REQ_HARDBARRIER | REQ_FLUSH;
141 rq->rq_disk = q->bar_rq.rq_disk; 138 rq->rq_disk = q->bar_rq.rq_disk;
142 rq->end_io = end_io; 139 rq->end_io = end_io;
143 if (q->prepare_flush_fn)
144 q->prepare_flush_fn(q, rq);
145 140
146 elv_insert(q, rq, ELEVATOR_INSERT_FRONT); 141 elv_insert(q, rq, ELEVATOR_INSERT_FRONT);
147} 142}
diff --git a/drivers/block/brd.c b/drivers/block/brd.c
index 1b218c6b682..1d2c18620f9 100644
--- a/drivers/block/brd.c
+++ b/drivers/block/brd.c
@@ -479,7 +479,7 @@ static struct brd_device *brd_alloc(int i)
479 if (!brd->brd_queue) 479 if (!brd->brd_queue)
480 goto out_free_dev; 480 goto out_free_dev;
481 blk_queue_make_request(brd->brd_queue, brd_make_request); 481 blk_queue_make_request(brd->brd_queue, brd_make_request);
482 blk_queue_ordered(brd->brd_queue, QUEUE_ORDERED_TAG, NULL); 482 blk_queue_ordered(brd->brd_queue, QUEUE_ORDERED_TAG);
483 blk_queue_max_hw_sectors(brd->brd_queue, 1024); 483 blk_queue_max_hw_sectors(brd->brd_queue, 1024);
484 blk_queue_bounce_limit(brd->brd_queue, BLK_BOUNCE_ANY); 484 blk_queue_bounce_limit(brd->brd_queue, BLK_BOUNCE_ANY);
485 485
diff --git a/drivers/block/loop.c b/drivers/block/loop.c
index fedfdb7d3cd..d285a548196 100644
--- a/drivers/block/loop.c
+++ b/drivers/block/loop.c
@@ -831,7 +831,7 @@ static int loop_set_fd(struct loop_device *lo, fmode_t mode,
831 lo->lo_queue->unplug_fn = loop_unplug; 831 lo->lo_queue->unplug_fn = loop_unplug;
832 832
833 if (!(lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync) 833 if (!(lo_flags & LO_FLAGS_READ_ONLY) && file->f_op->fsync)
834 blk_queue_ordered(lo->lo_queue, QUEUE_ORDERED_DRAIN, NULL); 834 blk_queue_ordered(lo->lo_queue, QUEUE_ORDERED_DRAIN);
835 835
836 set_capacity(lo->lo_disk, size); 836 set_capacity(lo->lo_disk, size);
837 bd_set_size(bdev, size << 9); 837 bd_set_size(bdev, size << 9);
diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c
index 9639565a9a6..2284b4f05c6 100644
--- a/drivers/block/osdblk.c
+++ b/drivers/block/osdblk.c
@@ -439,7 +439,7 @@ static int osdblk_init_disk(struct osdblk_device *osdev)
439 blk_queue_stack_limits(q, osd_request_queue(osdev->osd)); 439 blk_queue_stack_limits(q, osd_request_queue(osdev->osd));
440 440
441 blk_queue_prep_rq(q, blk_queue_start_tag); 441 blk_queue_prep_rq(q, blk_queue_start_tag);
442 blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH, NULL); 442 blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH);
443 443
444 disk->queue = q; 444 disk->queue = q;
445 445
diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c
index ab528a480f9..e9da874d041 100644
--- a/drivers/block/ps3disk.c
+++ b/drivers/block/ps3disk.c
@@ -468,7 +468,7 @@ static int __devinit ps3disk_probe(struct ps3_system_bus_device *_dev)
468 blk_queue_dma_alignment(queue, dev->blk_size-1); 468 blk_queue_dma_alignment(queue, dev->blk_size-1);
469 blk_queue_logical_block_size(queue, dev->blk_size); 469 blk_queue_logical_block_size(queue, dev->blk_size);
470 470
471 blk_queue_ordered(queue, QUEUE_ORDERED_DRAIN_FLUSH, NULL); 471 blk_queue_ordered(queue, QUEUE_ORDERED_DRAIN_FLUSH);
472 472
473 blk_queue_max_segments(queue, -1); 473 blk_queue_max_segments(queue, -1);
474 blk_queue_max_segment_size(queue, dev->bounce_size); 474 blk_queue_max_segment_size(queue, dev->bounce_size);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index b277f9e6aba..0a3222fd444 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -366,9 +366,9 @@ static int __devinit virtblk_probe(struct virtio_device *vdev)
366 366
367 /* If barriers are supported, tell block layer that queue is ordered */ 367 /* If barriers are supported, tell block layer that queue is ordered */
368 if (virtio_has_feature(vdev, VIRTIO_BLK_F_FLUSH)) 368 if (virtio_has_feature(vdev, VIRTIO_BLK_F_FLUSH))
369 blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH, NULL); 369 blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH);
370 else if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER)) 370 else if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER))
371 blk_queue_ordered(q, QUEUE_ORDERED_TAG, NULL); 371 blk_queue_ordered(q, QUEUE_ORDERED_TAG);
372 372
373 /* If disk is read-only in the host, the guest should obey */ 373 /* If disk is read-only in the host, the guest should obey */
374 if (virtio_has_feature(vdev, VIRTIO_BLK_F_RO)) 374 if (virtio_has_feature(vdev, VIRTIO_BLK_F_RO))
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index 495533e6654..76af65b654e 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -373,8 +373,7 @@ static int xlvbd_barrier(struct blkfront_info *info)
373 int err; 373 int err;
374 374
375 err = blk_queue_ordered(info->rq, 375 err = blk_queue_ordered(info->rq,
376 info->feature_barrier ? QUEUE_ORDERED_DRAIN : QUEUE_ORDERED_NONE, 376 info->feature_barrier ? QUEUE_ORDERED_DRAIN : QUEUE_ORDERED_NONE);
377 NULL);
378 377
379 if (err) 378 if (err)
380 return err; 379 return err;
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index c22e6226e9e..7433e07de30 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -549,7 +549,7 @@ static void update_ordered(ide_drive_t *drive)
549 } else 549 } else
550 ordered = QUEUE_ORDERED_DRAIN; 550 ordered = QUEUE_ORDERED_DRAIN;
551 551
552 blk_queue_ordered(drive->queue, ordered, NULL); 552 blk_queue_ordered(drive->queue, ordered);
553} 553}
554 554
555ide_devset_get_flag(wcache, IDE_DFLAG_WCACHE); 555ide_devset_get_flag(wcache, IDE_DFLAG_WCACHE);
diff --git a/drivers/md/dm.c b/drivers/md/dm.c
index 00c81055181..d505a96845c 100644
--- a/drivers/md/dm.c
+++ b/drivers/md/dm.c
@@ -1901,7 +1901,7 @@ static struct mapped_device *alloc_dev(int minor)
1901 blk_queue_softirq_done(md->queue, dm_softirq_done); 1901 blk_queue_softirq_done(md->queue, dm_softirq_done);
1902 blk_queue_prep_rq(md->queue, dm_prep_fn); 1902 blk_queue_prep_rq(md->queue, dm_prep_fn);
1903 blk_queue_lld_busy(md->queue, dm_lld_busy); 1903 blk_queue_lld_busy(md->queue, dm_lld_busy);
1904 blk_queue_ordered(md->queue, QUEUE_ORDERED_DRAIN_FLUSH, NULL); 1904 blk_queue_ordered(md->queue, QUEUE_ORDERED_DRAIN_FLUSH);
1905 1905
1906 md->disk = alloc_disk(1); 1906 md->disk = alloc_disk(1);
1907 if (!md->disk) 1907 if (!md->disk)
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index ec92bcbdedd..c77eb49eda0 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -128,7 +128,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card, spinlock_t *lock
128 mq->req = NULL; 128 mq->req = NULL;
129 129
130 blk_queue_prep_rq(mq->queue, mmc_prep_request); 130 blk_queue_prep_rq(mq->queue, mmc_prep_request);
131 blk_queue_ordered(mq->queue, QUEUE_ORDERED_DRAIN, NULL); 131 blk_queue_ordered(mq->queue, QUEUE_ORDERED_DRAIN);
132 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, mq->queue); 132 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, mq->queue);
133 133
134#ifdef CONFIG_MMC_BLOCK_BOUNCE 134#ifdef CONFIG_MMC_BLOCK_BOUNCE
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 33975e922d6..17b033d0e05 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -2196,7 +2196,7 @@ static void dasd_setup_queue(struct dasd_block *block)
2196 */ 2196 */
2197 blk_queue_max_segment_size(block->request_queue, PAGE_SIZE); 2197 blk_queue_max_segment_size(block->request_queue, PAGE_SIZE);
2198 blk_queue_segment_boundary(block->request_queue, PAGE_SIZE - 1); 2198 blk_queue_segment_boundary(block->request_queue, PAGE_SIZE - 1);
2199 blk_queue_ordered(block->request_queue, QUEUE_ORDERED_DRAIN, NULL); 2199 blk_queue_ordered(block->request_queue, QUEUE_ORDERED_DRAIN);
2200} 2200}
2201 2201
2202/* 2202/*
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index e8c295e0146..d9a4314a194 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2135,7 +2135,7 @@ static int sd_revalidate_disk(struct gendisk *disk)
2135 else 2135 else
2136 ordered = QUEUE_ORDERED_DRAIN; 2136 ordered = QUEUE_ORDERED_DRAIN;
2137 2137
2138 blk_queue_ordered(sdkp->disk->queue, ordered, NULL); 2138 blk_queue_ordered(sdkp->disk->queue, ordered);
2139 2139
2140 set_capacity(disk, sdkp->capacity); 2140 set_capacity(disk, sdkp->capacity);
2141 kfree(buffer); 2141 kfree(buffer);
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 6bba04c7ec4..3a2c5d9a928 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -212,7 +212,6 @@ struct bvec_merge_data {
212}; 212};
213typedef int (merge_bvec_fn) (struct request_queue *, struct bvec_merge_data *, 213typedef int (merge_bvec_fn) (struct request_queue *, struct bvec_merge_data *,
214 struct bio_vec *); 214 struct bio_vec *);
215typedef void (prepare_flush_fn) (struct request_queue *, struct request *);
216typedef void (softirq_done_fn)(struct request *); 215typedef void (softirq_done_fn)(struct request *);
217typedef int (dma_drain_needed_fn)(struct request *); 216typedef int (dma_drain_needed_fn)(struct request *);
218typedef int (lld_busy_fn) (struct request_queue *q); 217typedef int (lld_busy_fn) (struct request_queue *q);
@@ -286,7 +285,6 @@ struct request_queue
286 unprep_rq_fn *unprep_rq_fn; 285 unprep_rq_fn *unprep_rq_fn;
287 unplug_fn *unplug_fn; 286 unplug_fn *unplug_fn;
288 merge_bvec_fn *merge_bvec_fn; 287 merge_bvec_fn *merge_bvec_fn;
289 prepare_flush_fn *prepare_flush_fn;
290 softirq_done_fn *softirq_done_fn; 288 softirq_done_fn *softirq_done_fn;
291 rq_timed_out_fn *rq_timed_out_fn; 289 rq_timed_out_fn *rq_timed_out_fn;
292 dma_drain_needed_fn *dma_drain_needed; 290 dma_drain_needed_fn *dma_drain_needed;
@@ -896,7 +894,7 @@ extern void blk_queue_softirq_done(struct request_queue *, softirq_done_fn *);
896extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *); 894extern void blk_queue_rq_timed_out(struct request_queue *, rq_timed_out_fn *);
897extern void blk_queue_rq_timeout(struct request_queue *, unsigned int); 895extern void blk_queue_rq_timeout(struct request_queue *, unsigned int);
898extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev); 896extern struct backing_dev_info *blk_get_backing_dev_info(struct block_device *bdev);
899extern int blk_queue_ordered(struct request_queue *, unsigned, prepare_flush_fn *); 897extern int blk_queue_ordered(struct request_queue *, unsigned);
900extern bool blk_do_ordered(struct request_queue *, struct request **); 898extern bool blk_do_ordered(struct request_queue *, struct request **);
901extern unsigned blk_ordered_cur_seq(struct request_queue *); 899extern unsigned blk_ordered_cur_seq(struct request_queue *);
902extern unsigned blk_ordered_req_seq(struct request *); 900extern unsigned blk_ordered_req_seq(struct request *);