bcachefs: Assorted endianness fixes
authorKent Overstreet <kent.overstreet@gmail.com>
Sun, 23 May 2021 21:04:13 +0000 (17:04 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:05 +0000 (17:09 -0400)
Found by sparse

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_iter.c
fs/bcachefs/journal_io.c
fs/bcachefs/journal_seq_blacklist.c
fs/bcachefs/move.c
fs/bcachefs/recovery.c
fs/bcachefs/super-io.c
fs/bcachefs/super.c
fs/bcachefs/sysfs.c

index 745f1ac4f538d539bb01113767351dfca672e7ea..4b590b2096a7a8004b4a6d7b7642deb63c828685 100644 (file)
@@ -2268,6 +2268,7 @@ static void bch2_trans_alloc_iters(struct btree_trans *trans, struct bch_fs *c)
 void bch2_trans_init(struct btree_trans *trans, struct bch_fs *c,
                     unsigned expected_nr_iters,
                     size_t expected_mem_bytes)
+       __acquires(&c->btree_trans_barrier)
 {
        memset(trans, 0, sizeof(*trans));
        trans->c                = c;
@@ -2302,6 +2303,7 @@ void bch2_trans_init(struct btree_trans *trans, struct bch_fs *c,
 }
 
 int bch2_trans_exit(struct btree_trans *trans)
+       __releases(&c->btree_trans_barrier)
 {
        struct bch_fs *c = trans->c;
 
index e42ca2a5e201c29294cdd8125e45f2d44c603276..a7d08657cb4f2344f6eec8fd8ac85e714f07479c 100644 (file)
@@ -833,7 +833,7 @@ static void bch2_journal_ptrs_to_text(struct printbuf *out, struct bch_fs *c,
        unsigned i;
 
        for (i = 0; i < j->nr_ptrs; i++) {
-               struct bch_dev *ca = c->devs[j->ptrs[i].dev];
+               struct bch_dev *ca = bch_dev_bkey_exists(c, j->ptrs[i].dev);
                u64 offset;
 
                div64_u64_rem(j->ptrs[i].offset, ca->mi.bucket_size, &offset);
@@ -1398,7 +1398,8 @@ void bch2_journal_write(struct closure *cl)
            test_bit(JOURNAL_MAY_SKIP_FLUSH, &j->flags)) {
                w->noflush = true;
                SET_JSET_NO_FLUSH(jset, true);
-               jset->last_seq = w->last_seq = 0;
+               jset->last_seq  = 0;
+               w->last_seq     = 0;
 
                j->nr_noflush_writes++;
        } else {
index e1b63f3879f44e50cc2fdd92ca3de8db03a3c7fa..f2060f903cbcf90489de1712511c2925b69d7198 100644 (file)
@@ -111,8 +111,7 @@ int bch2_journal_seq_blacklist_add(struct bch_fs *c, u64 start, u64 end)
        bl->start[nr].start     = cpu_to_le64(start);
        bl->start[nr].end       = cpu_to_le64(end);
 out_write_sb:
-       c->disk_sb.sb->features[0] |=
-               1ULL << BCH_FEATURE_journal_seq_blacklist_v3;
+       c->disk_sb.sb->features[0] |= cpu_to_le64(1ULL << BCH_FEATURE_journal_seq_blacklist_v3);
 
        ret = bch2_write_super(c);
 out:
@@ -298,8 +297,7 @@ void bch2_blacklist_entries_gc(struct work_struct *work)
                BUG_ON(new_nr && !bl);
 
                if (!new_nr)
-                       c->disk_sb.sb->features[0] &=
-                               ~(1ULL << BCH_FEATURE_journal_seq_blacklist_v3);
+                       c->disk_sb.sb->features[0] &= cpu_to_le64(~(1ULL << BCH_FEATURE_journal_seq_blacklist_v3));
 
                bch2_write_super(c);
        }
index 41e67f7de275f9c4bfb23b55378123e7b23065fb..638cd7e97a46b01ce216b5b683b2049f3a380402 100644 (file)
@@ -926,8 +926,8 @@ int bch2_scan_old_btree_nodes(struct bch_fs *c, struct bch_move_stats *stats)
                              rewrite_old_nodes_pred, c, stats);
        if (!ret) {
                mutex_lock(&c->sb_lock);
-               c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_extents_above_btree_updates_done;
-               c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_bformat_overflow_done;
+               c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_extents_above_btree_updates_done);
+               c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_bformat_overflow_done);
                c->disk_sb.sb->version_min = c->disk_sb.sb->version;
                bch2_write_super(c);
                mutex_unlock(&c->sb_lock);
index cd538ecc1f3f871689520bdffb599955c4915adb..9bd6348842e0733d90b881d03f773115cbaa5b87 100644 (file)
@@ -716,7 +716,7 @@ static int journal_replay_entry_early(struct bch_fs *c,
        case BCH_JSET_ENTRY_dev_usage: {
                struct jset_entry_dev_usage *u =
                        container_of(entry, struct jset_entry_dev_usage, entry);
-               struct bch_dev *ca = bch_dev_bkey_exists(c, u->dev);
+               struct bch_dev *ca = bch_dev_bkey_exists(c, le32_to_cpu(u->dev));
                unsigned bytes = jset_u64s(le16_to_cpu(entry->u64s)) * sizeof(u64);
                unsigned nr_types = (bytes - sizeof(struct jset_entry_dev_usage)) /
                        sizeof(struct jset_entry_dev_usage_type);
@@ -755,7 +755,7 @@ static int journal_replay_entry_early(struct bch_fs *c,
                struct jset_entry_clock *clock =
                        container_of(entry, struct jset_entry_clock, entry);
 
-               atomic64_set(&c->io_clock[clock->rw].now, clock->time);
+               atomic64_set(&c->io_clock[clock->rw].now, le64_to_cpu(clock->time));
        }
        }
 
@@ -1217,13 +1217,13 @@ use_clean:
 
        mutex_lock(&c->sb_lock);
        if (c->opts.version_upgrade) {
-               c->disk_sb.sb->version = le16_to_cpu(bcachefs_metadata_version_current);
-               c->disk_sb.sb->features[0] |= BCH_SB_FEATURES_ALL;
+               c->disk_sb.sb->version = cpu_to_le16(bcachefs_metadata_version_current);
+               c->disk_sb.sb->features[0] |= cpu_to_le64(BCH_SB_FEATURES_ALL);
                write_sb = true;
        }
 
        if (!test_bit(BCH_FS_ERROR, &c->flags)) {
-               c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_alloc_info;
+               c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_alloc_info);
                write_sb = true;
        }
 
@@ -1278,12 +1278,12 @@ int bch2_fs_initialize(struct bch_fs *c)
        bch_notice(c, "initializing new filesystem");
 
        mutex_lock(&c->sb_lock);
-       c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_extents_above_btree_updates_done;
-       c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_bformat_overflow_done;
+       c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_extents_above_btree_updates_done);
+       c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_bformat_overflow_done);
 
        if (c->opts.version_upgrade) {
-               c->disk_sb.sb->version = le16_to_cpu(bcachefs_metadata_version_current);
-               c->disk_sb.sb->features[0] |= BCH_SB_FEATURES_ALL;
+               c->disk_sb.sb->version = cpu_to_le16(bcachefs_metadata_version_current);
+               c->disk_sb.sb->features[0] |= cpu_to_le64(BCH_SB_FEATURES_ALL);
                bch2_write_super(c);
        }
 
index 4c7cea4cfc2b33a1a4dc2ff6f53871c2113427a4..fc6fb302706ac939e35f9ab1e8c76492ee629135 100644 (file)
@@ -984,7 +984,7 @@ int bch2_fs_mark_dirty(struct bch_fs *c)
 
        mutex_lock(&c->sb_lock);
        SET_BCH_SB_CLEAN(c->disk_sb.sb, false);
-       c->disk_sb.sb->features[0] |= BCH_SB_FEATURES_ALWAYS;
+       c->disk_sb.sb->features[0] |= cpu_to_le64(BCH_SB_FEATURES_ALWAYS);
        ret = bch2_write_super(c);
        mutex_unlock(&c->sb_lock);
 
@@ -1001,7 +1001,7 @@ static struct jset_entry *jset_entry_init(struct jset_entry **end, size_t size)
         * The u64s field counts from the start of data, ignoring the shared
         * fields.
         */
-       entry->u64s = u64s - 1;
+       entry->u64s = cpu_to_le16(u64s - 1);
 
        *end = vstruct_next(*end);
        return entry;
@@ -1095,7 +1095,7 @@ void bch2_journal_super_entries_add_common(struct bch_fs *c,
 
                clock->entry.type = BCH_JSET_ENTRY_clock;
                clock->rw       = i;
-               clock->time     = atomic64_read(&c->io_clock[i].now);
+               clock->time     = cpu_to_le64(atomic64_read(&c->io_clock[i].now));
        }
 }
 
@@ -1112,10 +1112,10 @@ void bch2_fs_mark_clean(struct bch_fs *c)
 
        SET_BCH_SB_CLEAN(c->disk_sb.sb, true);
 
-       c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_alloc_info;
-       c->disk_sb.sb->compat[0] |= 1ULL << BCH_COMPAT_alloc_metadata;
-       c->disk_sb.sb->features[0] &= ~(1ULL << BCH_FEATURE_extents_above_btree_updates);
-       c->disk_sb.sb->features[0] &= ~(1ULL << BCH_FEATURE_btree_updates_journalled);
+       c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_alloc_info);
+       c->disk_sb.sb->compat[0] |= cpu_to_le64(1ULL << BCH_COMPAT_alloc_metadata);
+       c->disk_sb.sb->features[0] &= cpu_to_le64(~(1ULL << BCH_FEATURE_extents_above_btree_updates));
+       c->disk_sb.sb->features[0] &= cpu_to_le64(~(1ULL << BCH_FEATURE_btree_updates_journalled));
 
        u64s = sizeof(*sb_clean) / sizeof(u64) + c->journal.entry_u64s_reserved;
 
index 3bea7917004f4ab91cb170a08f9ef57b6af437c9..ef7322a8b460f1a3abf5ddd8ecbe1c2365236ad7 100644 (file)
@@ -1445,7 +1445,7 @@ int bch2_dev_set_state(struct bch_fs *c, struct bch_dev *ca,
 
 /* Device add/removal: */
 
-int bch2_dev_remove_alloc(struct bch_fs *c, struct bch_dev *ca)
+static int bch2_dev_remove_alloc(struct bch_fs *c, struct bch_dev *ca)
 {
        struct btree_trans trans;
        size_t i;
index 21ef7719cf55019be71657f6e99520548cc5fa72..84a7acb04d01b1915f673164ef98dc93011de5de 100644 (file)
@@ -312,7 +312,7 @@ static int bch2_compression_stats_to_text(struct printbuf *out, struct bch_fs *c
        return 0;
 }
 
-void bch2_gc_gens_pos_to_text(struct printbuf *out, struct bch_fs *c)
+static void bch2_gc_gens_pos_to_text(struct printbuf *out, struct bch_fs *c)
 {
        pr_buf(out, "%s: ", bch2_btree_ids[c->gc_gens_btree]);
        bch2_bpos_to_text(out, c->gc_gens_pos);