summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-02-23 11:46:34 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2023-03-13 11:34:19 -0400
commitfe2f2891bef74d160f5890e5eda5b9247a51da7f (patch)
tree487b66fc2937df5f0d899b35987cd87e90e0afba
parentc01fc75fe49eb1bc366e6e9ff4decc016bcf381d (diff)
bcachefs: Fix 32 bit build
vstruct_bytes() was returning a u64 - it should be a size_t, the corect type for the size of anything that fits in memory. Also replace a 64 bit divide with div_u64(). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/journal_io.c2
-rw-r--r--fs/bcachefs/quota.c2
-rw-r--r--fs/bcachefs/super-io.c10
-rw-r--r--fs/bcachefs/vstructs.h2
4 files changed, 8 insertions, 8 deletions
diff --git a/fs/bcachefs/journal_io.c b/fs/bcachefs/journal_io.c
index ec0121aeb5b7..b6a5f320a444 100644
--- a/fs/bcachefs/journal_io.c
+++ b/fs/bcachefs/journal_io.c
@@ -1106,7 +1106,7 @@ int bch2_journal_read(struct bch_fs *c, struct list_head *list,
struct journal_replay *p = list_prev_entry(i, list);
bch2_journal_ptrs_to_text(&out, c, p);
- pr_buf(&out, " size %llu", vstruct_sectors(&p->j, c->block_bits));
+ pr_buf(&out, " size %zu", vstruct_sectors(&p->j, c->block_bits));
} else
sprintf(buf1, "(none)");
bch2_journal_ptrs_to_text(&PBUF(buf2), c, i);
diff --git a/fs/bcachefs/quota.c b/fs/bcachefs/quota.c
index b7ef8fa7bbc9..ca029a00e7b8 100644
--- a/fs/bcachefs/quota.c
+++ b/fs/bcachefs/quota.c
@@ -23,7 +23,7 @@ static int bch2_sb_quota_validate(struct bch_sb *sb, struct bch_sb_field *f,
struct bch_sb_field_quota *q = field_to_type(f, quota);
if (vstruct_bytes(&q->field) < sizeof(*q)) {
- pr_buf(err, "wrong size (got %llu should be %zu)",
+ pr_buf(err, "wrong size (got %zu should be %zu)",
vstruct_bytes(&q->field), sizeof(*q));
return -EINVAL;
}
diff --git a/fs/bcachefs/super-io.c b/fs/bcachefs/super-io.c
index 8e7e95e8f9f2..e02cf8fb0c8d 100644
--- a/fs/bcachefs/super-io.c
+++ b/fs/bcachefs/super-io.c
@@ -1140,7 +1140,7 @@ static int bch2_sb_crypt_validate(struct bch_sb *sb,
struct bch_sb_field_crypt *crypt = field_to_type(f, crypt);
if (vstruct_bytes(&crypt->field) < sizeof(*crypt)) {
- pr_buf(err, "wrong size (got %llu should be %zu)",
+ pr_buf(err, "wrong size (got %zu should be %zu)",
vstruct_bytes(&crypt->field), sizeof(*crypt));
return -EINVAL;
}
@@ -1383,7 +1383,7 @@ static int bch2_sb_clean_validate(struct bch_sb *sb,
struct bch_sb_field_clean *clean = field_to_type(f, clean);
if (vstruct_bytes(&clean->field) < sizeof(*clean)) {
- pr_buf(err, "wrong size (got %llu should be %zu)",
+ pr_buf(err, "wrong size (got %zu should be %zu)",
vstruct_bytes(&clean->field), sizeof(*clean));
return -EINVAL;
}
@@ -1460,7 +1460,7 @@ void bch2_sb_field_to_text(struct printbuf *out, struct bch_sb *sb,
else
pr_buf(out, "(unknown field %u)", type);
- pr_buf(out, " (size %llu):", vstruct_bytes(f));
+ pr_buf(out, " (size %zu):", vstruct_bytes(f));
pr_newline(out);
if (ops && ops->to_text) {
@@ -1536,7 +1536,7 @@ void bch2_sb_to_text(struct printbuf *out, struct bch_sb *sb,
pr_buf(out, "Created: ");
if (sb->time_base_lo)
- pr_time(out, le64_to_cpu(sb->time_base_lo) / NSEC_PER_SEC);
+ pr_time(out, div_u64(le64_to_cpu(sb->time_base_lo), NSEC_PER_SEC));
else
pr_buf(out, "(not set)");
pr_newline(out);
@@ -1642,7 +1642,7 @@ void bch2_sb_to_text(struct printbuf *out, struct bch_sb *sb,
bch2_flags_to_text(out, bch2_sb_fields, fields_have);
pr_newline(out);
- pr_buf(out, "Superblock size: %llu", vstruct_bytes(sb));
+ pr_buf(out, "Superblock size: %zu", vstruct_bytes(sb));
pr_newline(out);
if (print_layout) {
diff --git a/fs/bcachefs/vstructs.h b/fs/bcachefs/vstructs.h
index c099cdc0605f..53a694d71967 100644
--- a/fs/bcachefs/vstructs.h
+++ b/fs/bcachefs/vstructs.h
@@ -20,7 +20,7 @@
({ \
BUILD_BUG_ON(offsetof(_type, _data) % sizeof(u64)); \
\
- (offsetof(_type, _data) + (_u64s) * sizeof(u64)); \
+ (size_t) (offsetof(_type, _data) + (_u64s) * sizeof(u64)); \
})
#define vstruct_bytes(_s) \