From 0e0aa31912398e2d65e39b199afa1eb5bd12a690 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Wed, 17 Apr 2024 17:34:18 -0400 Subject: Update bcachefs sources to 0389c09b2fb7 bcachefs: Fix bio alloc in check_extent_checksum() Signed-off-by: Kent Overstreet --- .bcachefs_revision | 2 +- Makefile | 1 + libbcachefs/backpointers.c | 2 +- libbcachefs/bcachefs_format.h | 3 ++- libbcachefs/btree_gc.c | 3 ++- libbcachefs/sb-members.c | 4 ++-- libbcachefs/sb-members.h | 4 ++-- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.bcachefs_revision b/.bcachefs_revision index e5650893..562beb39 100644 --- a/.bcachefs_revision +++ b/.bcachefs_revision @@ -1 +1 @@ -10ca1f99f8c99a3d992b686cdc29d427807070e5 +0389c09b2fb702ca7924ddf550ce0c8af708b8be diff --git a/Makefile b/Makefile index 865d04d3..2751f5b6 100644 --- a/Makefile +++ b/Makefile @@ -254,6 +254,7 @@ update-bcachefs-sources: test -d libbcachefs || mkdir libbcachefs cp $(LINUX_DIR)/fs/bcachefs/*.[ch] libbcachefs/ git add libbcachefs/*.[ch] + git rm -f libbcachefs/mean_and_variance_test.c cp $(LINUX_DIR)/include/linux/closure.h include/linux/ git add include/linux/closure.h cp $(LINUX_DIR)/lib/closure.c linux/ diff --git a/libbcachefs/backpointers.c b/libbcachefs/backpointers.c index fadb1078..a2004420 100644 --- a/libbcachefs/backpointers.c +++ b/libbcachefs/backpointers.c @@ -470,7 +470,7 @@ found: goto err; } - bio = bio_alloc(ca->disk_sb.bdev, 1, REQ_OP_READ, GFP_KERNEL); + bio = bio_alloc(ca->disk_sb.bdev, buf_pages(data_buf, bytes), REQ_OP_READ, GFP_KERNEL); bio->bi_iter.bi_sector = p.ptr.offset; bch2_bio_map(bio, data_buf, bytes); ret = submit_bio_wait(bio); diff --git a/libbcachefs/bcachefs_format.h b/libbcachefs/bcachefs_format.h index 08598743..f7fbfccd 100644 --- a/libbcachefs/bcachefs_format.h +++ b/libbcachefs/bcachefs_format.h @@ -1504,7 +1504,8 @@ enum btree_id_flags { BIT_ULL(KEY_TYPE_stripe)) \ x(reflink, 7, BTREE_ID_EXTENTS|BTREE_ID_DATA, \ BIT_ULL(KEY_TYPE_reflink_v)| \ - BIT_ULL(KEY_TYPE_indirect_inline_data)) \ + BIT_ULL(KEY_TYPE_indirect_inline_data)| \ + BIT_ULL(KEY_TYPE_error)) \ x(subvolumes, 8, 0, \ BIT_ULL(KEY_TYPE_subvolume)) \ x(snapshots, 9, 0, \ diff --git a/libbcachefs/btree_gc.c b/libbcachefs/btree_gc.c index ecbd9598..791470b0 100644 --- a/libbcachefs/btree_gc.c +++ b/libbcachefs/btree_gc.c @@ -1587,7 +1587,7 @@ static int bch2_gc_write_reflink_key(struct btree_trans *trans, struct bkey_i *new = bch2_bkey_make_mut_noupdate(trans, k); ret = PTR_ERR_OR_ZERO(new); if (ret) - return ret; + goto out; if (!r->refcount) new->k.type = KEY_TYPE_deleted; @@ -1595,6 +1595,7 @@ static int bch2_gc_write_reflink_key(struct btree_trans *trans, *bkey_refcount(bkey_i_to_s(new)) = cpu_to_le64(r->refcount); ret = bch2_trans_update(trans, iter, new, 0); } +out: fsck_err: printbuf_exit(&buf); return ret; diff --git a/libbcachefs/sb-members.c b/libbcachefs/sb-members.c index 522a9693..5b8e621a 100644 --- a/libbcachefs/sb-members.c +++ b/libbcachefs/sb-members.c @@ -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); diff --git a/libbcachefs/sb-members.h b/libbcachefs/sb-members.h index 10e801d4..5efa64ec 100644 --- a/libbcachefs/sb-members.h +++ b/libbcachefs/sb-members.h @@ -238,8 +238,8 @@ static inline bool bch2_dev_btree_bitmap_marked_sectors(struct bch_dev *ca, u64 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; -- cgit v1.2.3-70-g09d2