The snapshot and origin targets are incapable of handling barriers and need to indicate this. Signed-Off-By: Alasdair G Kergon Index: linux-2.6.16-rc1/drivers/md/dm-snap.c =================================================================== --- linux-2.6.16-rc1.orig/drivers/md/dm-snap.c +++ linux-2.6.16-rc1/drivers/md/dm-snap.c @@ -792,6 +792,9 @@ static int snapshot_map(struct dm_target if (!s->valid) return -EIO; + if (unlikely(bio_barrier(bio))) + return -EOPNOTSUPP; + /* * Write to snapshot - higher level takes care of RW/RO * flags so we should only get this if we are @@ -1058,6 +1061,9 @@ static int origin_map(struct dm_target * struct dm_dev *dev = (struct dm_dev *) ti->private; bio->bi_bdev = dev->bdev; + if (unlikely(bio_barrier(bio))) + return -EOPNOTSUPP; + /* Only tell snapshots if this is a write */ return (bio_rw(bio) == WRITE) ? do_origin(dev, bio) : 1; }