From db689dd813b721e893a0d32f1ee8a75f4d9efb3e Mon Sep 17 00:00:00 2001
From: Paul Lawrence <paullawrence@google.com>
Date: Tue, 26 Mar 2019 09:05:55 -0700
Subject: [PATCH] ANDROID: dm-bow: Fix 32 bit compile errors

See https://www.kernel.org/doc/html/v4.17/core-api/printk-formats.html

Also 64-bit modulus not defined on 32-bit architectures

Test: i386_defconfig and x86_64_cuttlefish_defconfig compile
Change-Id: I57b9372e12e97b9a18232191b525e7601bc57a24
Signed-off-by: Paul Lawrence <paullawrence@google.com>
---
 drivers/md/dm-bow.c | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/drivers/md/dm-bow.c b/drivers/md/dm-bow.c
index fa0675d58853..b92da30a3d42 100644
--- a/drivers/md/dm-bow.c
+++ b/drivers/md/dm-bow.c
@@ -267,7 +267,8 @@ static struct bow_range *find_free_range(struct bow_context *bc)
 
 static sector_t sector_to_page(struct bow_context const *bc, sector_t sector)
 {
-	WARN_ON(sector % (bc->block_size / SECTOR_SIZE) != 0);
+	WARN_ON((sector & (((sector_t)1 << (bc->block_shift - SECTOR_SHIFT)) - 1))
+		!= 0);
 	return sector >> (bc->block_shift - SECTOR_SHIFT);
 }
 
@@ -292,7 +293,8 @@ static int copy_data(struct bow_context const *bc,
 
 		read = dm_bufio_read(bc->bufio, page, &read_buffer);
 		if (IS_ERR(read)) {
-			DMERR("Cannot read page %lu", page);
+			DMERR("Cannot read page %llu",
+			      (unsigned long long)page);
 			return PTR_ERR(read);
 		}
 
@@ -953,8 +955,9 @@ static int add_trim(struct bow_context *bc, struct bio *bio)
 	struct bow_range *br;
 	struct bvec_iter bi_iter = bio->bi_iter;
 
-	DMDEBUG("add_trim: %lu, %u",
-		bio->bi_iter.bi_sector, bio->bi_iter.bi_size);
+	DMDEBUG("add_trim: %llu, %u",
+		(unsigned long long)bio->bi_iter.bi_sector,
+		bio->bi_iter.bi_size);
 
 	do {
 		br = find_first_overlapping_range(&bc->ranges, &bi_iter);
@@ -991,8 +994,9 @@ static int remove_trim(struct bow_context *bc, struct bio *bio)
 	struct bow_range *br;
 	struct bvec_iter bi_iter = bio->bi_iter;
 
-	DMDEBUG("remove_trim: %lu, %u",
-		bio->bi_iter.bi_sector, bio->bi_iter.bi_size);
+	DMDEBUG("remove_trim: %llu, %u",
+		(unsigned long long)bio->bi_iter.bi_sector,
+		bio->bi_iter.bi_size);
 
 	do {
 		br = find_first_overlapping_range(&bc->ranges, &bi_iter);
@@ -1117,8 +1121,9 @@ static void dm_bow_tablestatus(struct dm_target *ti, char *result,
 	for (i = rb_first(&bc->ranges); i; i = rb_next(i)) {
 		struct bow_range *br = container_of(i, struct bow_range, node);
 
-		result += scnprintf(result, end - result, "%s: %lu",
-				    readable_type[br->type], br->sector);
+		result += scnprintf(result, end - result, "%s: %llu",
+				    readable_type[br->type],
+				    (unsigned long long)br->sector);
 		if (result >= end)
 			return;
 
-- 
GitLab