Just return an error from the error targets map function, rather than
erroring the buffer_head.
--- diff/drivers/md/dm-target.c	2003-01-10 10:19:46.000000000 +0000
+++ source/drivers/md/dm-target.c	2003-01-10 10:20:03.000000000 +0000
@@ -161,8 +161,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 = {