From fba25a81676577447e93a9745a0d66a21f0334d5 Mon Sep 17 00:00:00 2001 From: Tejun Heo Date: Fri, 3 Sep 2010 11:56:17 +0200 Subject: [PATCH] --- yaml --- r: 213181 b: refs/heads/master c: 1e87901e189c8f01750d67485009fe3827c691bf h: refs/heads/master i: 213179: cea167ba4d9465349960be4580d297ddbb63bf51 v: v3 --- [refs] | 2 +- trunk/block/blk-core.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index fa35f7eec285..e50b44e61355 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4fed947cb311e5aa51781d316cefca836352f6ce +refs/heads/master: 1e87901e189c8f01750d67485009fe3827c691bf diff --git a/trunk/block/blk-core.c b/trunk/block/blk-core.c index 18455c4f618a..495bdc4a23da 100644 --- a/trunk/block/blk-core.c +++ b/trunk/block/blk-core.c @@ -1509,6 +1509,19 @@ static inline void __generic_make_request(struct bio *bio) if (bio_check_eod(bio, nr_sectors)) goto end_io; + /* + * Filter flush bio's early so that make_request based + * drivers without flush support don't have to worry + * about them. + */ + if ((bio->bi_rw & (REQ_FLUSH | REQ_FUA)) && !q->flush_flags) { + bio->bi_rw &= ~(REQ_FLUSH | REQ_FUA); + if (!nr_sectors) { + err = 0; + goto end_io; + } + } + if ((bio->bi_rw & REQ_DISCARD) && (!blk_queue_discard(q) || ((bio->bi_rw & REQ_SECURE) &&