Just return an error from the error targets map function, rather than
erroring the buffer_head.
--- diff/drivers/md/dm-target.c	2002-12-17 15:59:12.000000000 +0000
+++ source/drivers/md/dm-target.c	2002-12-17 15:59:20.000000000 +0000
@@ -164,8 +164,7 @@
 
 static int io_err_map(struct dm_target *ti, struct buffer_head *bh, int rw)
 {
-	buffer_IO_error(bh);
-	return 0;
+	return -EIO;
 }
 
 static struct target_type error_target = {