]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
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 522a969345e5289ac87cf53b5f5a735e3b5f8d67..5b8e621ac5eb5780bb0c2e241196737bc0076e2e 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 b27c3e4467cf288d67587143e5343d57d5aa41c9..5efa64eca5f85af5637faa12aa85b83fbcde6ad3 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;