bcachefs: Check for writing btree_ptr_v2.sectors_written == 0
authorKent Overstreet <kent.overstreet@linux.dev>
Tue, 16 Apr 2024 23:33:56 +0000 (19:33 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Wed, 8 May 2024 21:29:20 +0000 (17:29 -0400)
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/extents.c
fs/bcachefs/sb-errors_types.h

index cb8d52436ab158e1336f7c9bbc20049f4b0a3e25..1143288d7940807d15c716917e008471dead6e3b 100644 (file)
@@ -201,6 +201,11 @@ int bch2_btree_ptr_v2_invalid(struct bch_fs *c, struct bkey_s_c k,
                         c, err, btree_ptr_v2_min_key_bad,
                         "min_key > key");
 
+       if (flags & BKEY_INVALID_WRITE)
+               bkey_fsck_err_on(!bp.v->sectors_written,
+                                c, err, btree_ptr_v2_written_0,
+                                "sectors_written == 0");
+
        ret = bch2_bkey_ptrs_invalid(c, k, flags, err);
 fsck_err:
        return ret;
index 06c7a644f4a44279f587a3cffb39473982b3392e..87324747351aae9397ec7f2d36da373306036411 100644 (file)
        x(snapshot_node_missing,                                264)    \
        x(dup_backpointer_to_bad_csum_extent,                   265)    \
        x(btree_bitmap_not_marked,                              266)    \
-       x(sb_clean_entry_overrun,                               267)
+       x(sb_clean_entry_overrun,                               267)    \
+       x(btree_ptr_v2_written_0,                               268)
 
 enum bch_sb_error_id {
 #define x(t, n) BCH_FSCK_ERR_##t = n,