ANDROID: dm-bow: Backport to 4.9

Change-Id: I6f3b1ec3a98eca8a1d5a89919408b18c4f9b6f4a
Signed-off-by: Paul Lawrence <paullawrence@google.com>
diff --git a/drivers/md/dm-bow.c b/drivers/md/dm-bow.c
index fa0675d..c3c1003 100644
--- a/drivers/md/dm-bow.c
+++ b/drivers/md/dm-bow.c
@@ -176,7 +176,7 @@
 
 	if (bi_iter->bi_sector < (*br)->sector) {
 		WARN_ON(true);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	if (bi_iter->bi_sector > (*br)->sector) {
@@ -184,7 +184,7 @@
 			kzalloc(sizeof(*leading_br), GFP_KERNEL);
 
 		if (!leading_br)
-			return BLK_STS_RESOURCE;
+			return -ENOMEM;
 
 		*leading_br = **br;
 		if (leading_br->type == TRIMMED)
@@ -197,20 +197,20 @@
 	if (bvec_top(bi_iter) >= range_top(*br)) {
 		bi_iter->bi_size = (range_top(*br) - (*br)->sector)
 					* SECTOR_SIZE;
-		return BLK_STS_OK;
+		return 0;
 	}
 
 	/* new_br will be the beginning, existing br will be the tail */
 	new_br = kzalloc(sizeof(*new_br), GFP_KERNEL);
 	if (!new_br)
-		return BLK_STS_RESOURCE;
+		return -ENOMEM;
 
 	new_br->sector = (*br)->sector;
 	(*br)->sector = bvec_top(bi_iter);
 	add_before(&bc->ranges, new_br, *br);
 	*br = new_br;
 
-	return BLK_STS_OK;
+	return 0;
 }
 
 /*
@@ -279,7 +279,7 @@
 
 	if (range_size(source) != range_size(dest)) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	if (checksum)
@@ -316,7 +316,7 @@
 	}
 
 	dm_bufio_write_dirty_buffers(bc->bufio);
-	return BLK_STS_OK;
+	return 0;
 }
 
 /****** logging functions ******/
@@ -335,18 +335,18 @@
 
 	if (first_br->type != SECTOR0) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	if (range_size(first_br) != bc->block_size) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	free_br = find_free_range(bc);
 	/* No space left - return this error to userspace */
 	if (!free_br)
-		return BLK_STS_NOSPC;
+		return -ENOSPC;
 	bi_iter.bi_sector = free_br->sector;
 	bi_iter.bi_size = bc->block_size;
 	ret = split_range(bc, &free_br, &bi_iter);
@@ -354,7 +354,7 @@
 		return ret;
 	if (bi_iter.bi_size != bc->block_size) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	ret = copy_data(bc, first_br, free_br, &checksum);
@@ -369,7 +369,7 @@
 		return ret;
 
 	set_type(bc, &free_br, BACKUP);
-	return BLK_STS_OK;
+	return 0;
 }
 
 static int add_log_entry(struct bow_context *bc, sector_t source, sector_t dest,
@@ -391,7 +391,7 @@
 	if (IS_ERR(sector)) {
 		DMERR("Cannot write boot sector");
 		dm_bufio_release(sector_buffer);
-		return BLK_STS_NOSPC;
+		return -ENOSPC;
 	}
 
 	bc->log_sector->entries[bc->log_sector->count].source = source;
@@ -404,7 +404,7 @@
 	dm_bufio_mark_buffer_dirty(sector_buffer);
 	dm_bufio_release(sector_buffer);
 	dm_bufio_write_dirty_buffers(bc->bufio);
-	return BLK_STS_OK;
+	return 0;
 }
 
 static int prepare_log(struct bow_context *bc)
@@ -418,12 +418,12 @@
 	first_br = container_of(rb_first(&bc->ranges), struct bow_range, node);
 	if (first_br->type != UNCHANGED) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	if (range_size(first_br) < bc->block_size) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 	bi_iter.bi_sector = 0;
 	bi_iter.bi_size = bc->block_size;
@@ -433,13 +433,13 @@
 	first_br->type = SECTOR0;
 	if (range_size(first_br) != bc->block_size) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 	/* Find free sector for active sector0 reads/writes */
 	free_br = find_free_range(bc);
 	if (!free_br)
-		return BLK_STS_NOSPC;
+		return -ENOSPC;
 	bi_iter.bi_sector = free_br->sector;
 	bi_iter.bi_size = bc->block_size;
 	ret = split_range(bc, &free_br, &bi_iter);
@@ -457,7 +457,7 @@
 	/* Find free sector to back up original sector zero */
 	free_br = find_free_range(bc);
 	if (!free_br)
-		return BLK_STS_NOSPC;
+		return -ENOSPC;
 	bi_iter.bi_sector = free_br->sector;
 	bi_iter.bi_size = bc->block_size;
 	ret = split_range(bc, &free_br, &bi_iter);
@@ -487,7 +487,7 @@
 		return ret;
 
 	set_type(bc, &free_br, BACKUP);
-	return BLK_STS_OK;
+	return 0;
 }
 
 static struct bow_range *find_sector0_current(struct bow_context *bc)
@@ -750,7 +750,7 @@
 	/* Find a free range */
 	backup_br = find_free_range(bc);
 	if (!backup_br)
-		return BLK_STS_NOSPC;
+		return -ENOSPC;
 
 	/* Carve out a backup range. This may be smaller than the br given */
 	backup_bi.bi_sector = backup_br->sector;
@@ -769,7 +769,7 @@
 		return ret;
 	if (range_size(br) != range_size(backup_br)) {
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 
 
@@ -824,14 +824,14 @@
 	if (ret)
 		return ret;
 	set_type(bc, &br, CHANGED);
-	return BLK_STS_OK;
+	return 0;
 }
 
 static int prepare_changed_range(struct bow_context *bc, struct bow_range *br,
 				 struct bvec_iter *bi_iter)
 {
 	/* Nothing to do ... */
-	return BLK_STS_OK;
+	return 0;
 }
 
 static int prepare_one_range(struct bow_context *bc,
@@ -861,7 +861,7 @@
 	case TOP:	/* Illegal - top is off the end of the device */
 	default:
 		WARN_ON(1);
-		return BLK_STS_IOERR;
+		return -EIO;
 	}
 }
 
@@ -877,7 +877,7 @@
 	struct bow_context *bc = ww->bc;
 	struct bio *bio = ww->bio;
 	struct bvec_iter bi_iter = bio->bi_iter;
-	int ret = BLK_STS_OK;
+	int ret = 0;
 
 	kfree(ww);
 
@@ -893,11 +893,11 @@
 	mutex_unlock(&bc->ranges_lock);
 
 	if (!ret) {
-		bio_set_dev(bio, bc->dev->bdev);
+		bio->bi_bdev = bc->dev->bdev;
 		submit_bio(bio);
 	} else {
 		DMERR("Write failure with error %d", -ret);
-		bio->bi_status = ret;
+		bio->bi_error = ret;
 		bio_endio(bio);
 	}
 }
@@ -929,14 +929,14 @@
 					       fs_bio_set);
 		if (!split) {
 			DMERR("Failed to split bio");
-			bio->bi_status = BLK_STS_RESOURCE;
+			bio->bi_error = -ENOMEM;
 			bio_endio(bio);
 			return DM_MAPIO_SUBMITTED;
 		}
 
 		bio_chain(split, bio);
 		split->bi_iter.bi_sector = bc->log_sector->sector0;
-		bio_set_dev(split, bc->dev->bdev);
+		split->bi_bdev = bc->dev->bdev;
 		submit_bio(split);
 
 		if (bio_data_dir(bio) == WRITE)
@@ -1026,11 +1026,11 @@
 int remap_unless_illegal_trim(struct bow_context *bc, struct bio *bio)
 {
 	if (!bc->forward_trims && bio_op(bio) == REQ_OP_DISCARD) {
-		bio->bi_status = BLK_STS_NOTSUPP;
+		bio->bi_error = -EINVAL;
 		bio_endio(bio);
 		return DM_MAPIO_SUBMITTED;
 	} else {
-		bio_set_dev(bio, bc->dev->bdev);
+		bio->bi_bdev = bc->dev->bdev;
 		return DM_MAPIO_REMAPPED;
 	}
 }