bcachefs: Fix bch2_dev_btree_bitmap_marked_sectors() shift
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 16 Apr 2024 23:16:45 +0000 (19:16 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 17 Apr 2024 21:29:53 +0000 (17:29 -0400)
Fixes: 27c15ed297cb bcachefs: bch_member.btree_allocated_bitmap
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/sb-members.c
fs/bcachefs/sb-members.h

index 522a969..5b8e621 100644 (file)
@@ -463,8 +463,8 @@ static void __bch2_dev_btree_bitmap_mark(struct bch_sb_field_members_v2 *mi, uns
                m->btree_bitmap_shift += resize;
        }
 
-       for (unsigned bit = sectors >> m->btree_bitmap_shift;
-            bit << m->btree_bitmap_shift < end;
+       for (unsigned bit = start >> m->btree_bitmap_shift;
+            (u64) bit << m->btree_bitmap_shift < end;
             bit++)
                bitmap |= BIT_ULL(bit);
 
index b27c3e4..5efa64e 100644 (file)
@@ -235,11 +235,11 @@ static inline bool bch2_dev_btree_bitmap_marked_sectors(struct bch_dev *ca, u64
 {
        u64 end = start + sectors;
 
-       if (end > 64 << ca->mi.btree_bitmap_shift)
+       if (end > 64ULL << ca->mi.btree_bitmap_shift)
                return false;
 
-       for (unsigned bit = sectors >> ca->mi.btree_bitmap_shift;
-            bit << ca->mi.btree_bitmap_shift < end;
+       for (unsigned bit = start >> ca->mi.btree_bitmap_shift;
+            (u64) bit << ca->mi.btree_bitmap_shift < end;
             bit++)
                if (!(ca->mi.btree_allocated_bitmap & BIT_ULL(bit)))
                        return false;