From 67be29011d7db2985d1c1f57474932d20705dab7 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Tue, 13 Jul 2010 17:50:50 +1000 Subject: [PATCH] --- yaml --- r: 208271 b: refs/heads/master c: f10d9f617a65905c556c3b37c9b9646ae7d04ed7 h: refs/heads/master i: 208269: 815e2c84d8def140dffdb74011fded5dd9c5720c 208267: b49e44d764630c856100e39ec758f56d3d5788b9 208263: ae77c21a92af1b70f381bc5a50cb0e18e0dcc711 208255: 5a6b796dd32a947fbe521c109bb62ae7620884ba v: v3 --- [refs] | 2 +- trunk/block/blk-barrier.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 51fa7f6fd71d..d091c75ce561 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2669b19fa4debcdd6a660ace1a124c0900f113e6 +refs/heads/master: f10d9f617a65905c556c3b37c9b9646ae7d04ed7 diff --git a/trunk/block/blk-barrier.c b/trunk/block/blk-barrier.c index eefbde835308..557f69360b6a 100644 --- a/trunk/block/blk-barrier.c +++ b/trunk/block/blk-barrier.c @@ -310,6 +310,15 @@ int blkdev_issue_flush(struct block_device *bdev, gfp_t gfp_mask, if (!q) return -ENXIO; + /* + * some block devices may not have their queue correctly set up here + * (e.g. loop device without a backing file) and so issuing a flush + * here will panic. Ensure there is a request function before issuing + * the barrier. + */ + if (!q->make_request_fn) + return -ENXIO; + bio = bio_alloc(gfp_mask, 0); bio->bi_end_io = bio_end_empty_barrier; bio->bi_bdev = bdev;