diff options
-rw-r--r-- | block/blk-core.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 18455c4f618a..495bdc4a23da 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -1509,6 +1509,19 @@ static inline void __generic_make_request(struct bio *bio) | |||
1509 | if (bio_check_eod(bio, nr_sectors)) | 1509 | if (bio_check_eod(bio, nr_sectors)) |
1510 | goto end_io; | 1510 | goto end_io; |
1511 | 1511 | ||
1512 | /* | ||
1513 | * Filter flush bio's early so that make_request based | ||
1514 | * drivers without flush support don't have to worry | ||
1515 | * about them. | ||
1516 | */ | ||
1517 | if ((bio->bi_rw & (REQ_FLUSH | REQ_FUA)) && !q->flush_flags) { | ||
1518 | bio->bi_rw &= ~(REQ_FLUSH | REQ_FUA); | ||
1519 | if (!nr_sectors) { | ||
1520 | err = 0; | ||
1521 | goto end_io; | ||
1522 | } | ||
1523 | } | ||
1524 | |||
1512 | if ((bio->bi_rw & REQ_DISCARD) && | 1525 | if ((bio->bi_rw & REQ_DISCARD) && |
1513 | (!blk_queue_discard(q) || | 1526 | (!blk_queue_discard(q) || |
1514 | ((bio->bi_rw & REQ_SECURE) && | 1527 | ((bio->bi_rw & REQ_SECURE) && |