diff options
Diffstat (limited to 'drivers/block/osdblk.c')
| -rw-r--r-- | drivers/block/osdblk.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c index 6cd8b705b11b..2284b4f05c62 100644 --- a/drivers/block/osdblk.c +++ b/drivers/block/osdblk.c | |||
| @@ -310,7 +310,8 @@ static void osdblk_rq_fn(struct request_queue *q) | |||
| 310 | break; | 310 | break; |
| 311 | 311 | ||
| 312 | /* filter out block requests we don't understand */ | 312 | /* filter out block requests we don't understand */ |
| 313 | if (!blk_fs_request(rq) && !blk_barrier_rq(rq)) { | 313 | if (rq->cmd_type != REQ_TYPE_FS && |
| 314 | !(rq->cmd_flags & REQ_HARDBARRIER)) { | ||
| 314 | blk_end_request_all(rq, 0); | 315 | blk_end_request_all(rq, 0); |
| 315 | continue; | 316 | continue; |
| 316 | } | 317 | } |
| @@ -322,7 +323,7 @@ static void osdblk_rq_fn(struct request_queue *q) | |||
| 322 | * driver-specific, etc. | 323 | * driver-specific, etc. |
| 323 | */ | 324 | */ |
| 324 | 325 | ||
| 325 | do_flush = (rq->special == (void *) 0xdeadbeefUL); | 326 | do_flush = rq->cmd_flags & REQ_FLUSH; |
| 326 | do_write = (rq_data_dir(rq) == WRITE); | 327 | do_write = (rq_data_dir(rq) == WRITE); |
| 327 | 328 | ||
| 328 | if (!do_flush) { /* osd_flush does not use a bio */ | 329 | if (!do_flush) { /* osd_flush does not use a bio */ |
| @@ -379,14 +380,6 @@ static void osdblk_rq_fn(struct request_queue *q) | |||
| 379 | } | 380 | } |
| 380 | } | 381 | } |
| 381 | 382 | ||
| 382 | static void osdblk_prepare_flush(struct request_queue *q, struct request *rq) | ||
| 383 | { | ||
| 384 | /* add driver-specific marker, to indicate that this request | ||
| 385 | * is a flush command | ||
| 386 | */ | ||
| 387 | rq->special = (void *) 0xdeadbeefUL; | ||
| 388 | } | ||
| 389 | |||
| 390 | static void osdblk_free_disk(struct osdblk_device *osdev) | 383 | static void osdblk_free_disk(struct osdblk_device *osdev) |
| 391 | { | 384 | { |
| 392 | struct gendisk *disk = osdev->disk; | 385 | struct gendisk *disk = osdev->disk; |
| @@ -446,7 +439,7 @@ static int osdblk_init_disk(struct osdblk_device *osdev) | |||
| 446 | blk_queue_stack_limits(q, osd_request_queue(osdev->osd)); | 439 | blk_queue_stack_limits(q, osd_request_queue(osdev->osd)); |
| 447 | 440 | ||
| 448 | blk_queue_prep_rq(q, blk_queue_start_tag); | 441 | blk_queue_prep_rq(q, blk_queue_start_tag); |
| 449 | blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH, osdblk_prepare_flush); | 442 | blk_queue_ordered(q, QUEUE_ORDERED_DRAIN_FLUSH); |
| 450 | 443 | ||
| 451 | disk->queue = q; | 444 | disk->queue = q; |
| 452 | 445 | ||
