]> err.no Git - linux-2.6/blobdiff - drivers/md/dm.c
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / drivers / md / dm.c
index b5e56af8f85ac039a296445027d404f80f3dd9ba..f4f7d35561ab83753f03fe16a186514514916bf6 100644 (file)
@@ -800,6 +800,15 @@ static int dm_request(request_queue_t *q, struct bio *bio)
        int rw = bio_data_dir(bio);
        struct mapped_device *md = q->queuedata;
 
+       /*
+        * There is no use in forwarding any barrier request since we can't
+        * guarantee it is (or can be) handled by the targets correctly.
+        */
+       if (unlikely(bio_barrier(bio))) {
+               bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
+               return 0;
+       }
+
        down_read(&md->io_lock);
 
        disk_stat_inc(dm_disk(md), ios[rw]);