bcachefs: Fix 32 bit build
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 23 Feb 2022 16:46:34 +0000 (11:46 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:25 +0000 (17:09 -0400)
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>
fs/bcachefs/journal_io.c
fs/bcachefs/quota.c
fs/bcachefs/super-io.c
fs/bcachefs/vstructs.h

index b8fcc801a6667ef776c72b7f8569cbbd7321b692..302af332b63269a5e054b5accc8a737fe877c74a 100644 (file)
@@ -1105,7 +1105,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);
index b7ef8fa7bbc98356db0a274b3b89e294c8206b9d..ca029a00e7b8044c5815b783a3437628942ecdda 100644 (file)
@@ -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;
        }
index f95c9d754530f0f81bc4ad0f7dc60ab25ffad32a..47eeb48c8c609c377f6b68f60f57212d7aa6b9d8 100644 (file)
@@ -1147,7 +1147,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;
        }
@@ -1390,7 +1390,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;
        }
@@ -1467,7 +1467,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) {
@@ -1543,7 +1543,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);
@@ -1649,7 +1649,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) {
index c099cdc0605f960c7d2ebae01304d0722194ee05..53a694d71967196ad2784f89da5ea5c3966644a1 100644 (file)
@@ -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)                                              \