|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3 |
|
| #
71f8e806 |
| 18-Apr-2025 |
Kent Overstreet <[email protected]> |
bcachefs: Stricter checks on "key allowed in this btree"
Syzbot managed to come up with a filesystem where check/repair got rather confused at finding a reflink pointer in the inodes btree.
Current
bcachefs: Stricter checks on "key allowed in this btree"
Syzbot managed to come up with a filesystem where check/repair got rather confused at finding a reflink pointer in the inodes btree.
Currently, the "key allowed in this btree" checks only apply at commit time, not read time - for forwards compatibility. It seems this is too loose.
Now, strict key type allowed checks apply: - at commit time (no forward compatibility issues) - for btree node pointers - if it's a known btree, known key type, and the key type has the "BKEY_TYPE_strict_btree_checks" flag.
This means we still have the option of using generic key types - e.g. KEY_TYPE_error, KEY_TYPE_set - on more existing btrees in the future, while most key types that are intended for only a specific btree get stricter checks.
Reported-by: [email protected] Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3, v6.13-rc2, v6.13-rc1 |
|
| #
a6f4794f |
| 27-Nov-2024 |
Kent Overstreet <[email protected]> |
bcachefs: struct bkey_validate_context
Add a new parameter to bkey validate functions, and use it to improve invalid bkey error messages: we can now print the btree and depth it came from, or if it
bcachefs: struct bkey_validate_context
Add a new parameter to bkey validate functions, and use it to improve invalid bkey error messages: we can now print the btree and depth it came from, or if it came from the journal, or is a btree root.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.12, v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1 |
|
| #
cf49f8a8 |
| 26-Sep-2024 |
Kent Overstreet <[email protected]> |
bcachefs: rename version -> bversion
give bversions a more distinct name, to aid in grepping
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4 |
|
| #
d97de0d0 |
| 13-Aug-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Make bkey_fsck_err() a wrapper around fsck_err()
bkey_fsck_err() was added as an interface that looks like fsck_err(), but previously all it did was ensure that the appropriate error count
bcachefs: Make bkey_fsck_err() a wrapper around fsck_err()
bkey_fsck_err() was added as an interface that looks like fsck_err(), but previously all it did was ensure that the appropriate error counter was incremented in the superblock.
This is a cleanup and bugfix patch that converts it to a wrapper around fsck_err(). This is needed to fix an issue with the upgrade path to disk_accounting_v3, where the "silent fix" error list now includes bkey_fsck errors; fsck_err() handles this in a unified way, and since we need to change printing of bkey fsck errors from the caller to the inner bkey_fsck_err() calls, this ends up being a pretty big change.
Als,, rename .invalid() methods to .validate(), for clarity, while we're changing the function signature anyways (to drop the printbuf argument).
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7, v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1, v6.7, v6.7-rc8 |
|
| #
2744e5c9 |
| 27-Dec-2023 |
Kent Overstreet <[email protected]> |
bcachefs: KEY_TYPE_accounting
New key type for the disk space accounting rewrite.
- Holds a variable sized array of u64s (may be more than one for accounting e.g. compressed and uncompressed si
bcachefs: KEY_TYPE_accounting
New key type for the disk space accounting rewrite.
- Holds a variable sized array of u64s (may be more than one for accounting e.g. compressed and uncompressed size, or buckets and sectors for a given data type)
- Updates are deltas, not new versions of the key: this means updates to accounting can happen via the btree write buffer, which we'll be teaching to accumulate deltas.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
d47df4f6 |
| 12-Jun-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Fix array-index-out-of-bounds
We use 0 size arrays as markers, but ubsan doesn't know that - cast them to a pointer to fix the splat.
Also, make sure this code gets tested a bit more.
Si
bcachefs: Fix array-index-out-of-bounds
We use 0 size arrays as markers, but ubsan doesn't know that - cast them to a pointer to fix the splat.
Also, make sure this code gets tested a bit more.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
07f9a27f |
| 09-May-2024 |
Thomas Bertschinger <[email protected]> |
bcachefs: add no_invalid_checks flag
Setting this flag on a filesystem results in validity checks being skipped when writing bkeys. This flag will be used by tooling that deliberately injects corrup
bcachefs: add no_invalid_checks flag
Setting this flag on a filesystem results in validity checks being skipped when writing bkeys. This flag will be used by tooling that deliberately injects corruption into a filesystem in order to exercise fsck. It shouldn't be set outside of testing/debugging code.
Signed-off-by: Thomas Bertschinger <[email protected]> Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
65eaf4e2 |
| 08-May-2024 |
Kent Overstreet <[email protected]> |
bcachefs: s/bkey_invalid_flags/bch_validate_flags
We're about to start using bch_validate_flags for superblock section validation - it's no longer bkey specific.
Signed-off-by: Kent Overstreet <ken
bcachefs: s/bkey_invalid_flags/bch_validate_flags
We're about to start using bch_validate_flags for superblock section validation - it's no longer bkey specific.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
2bb9600d |
| 06-May-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Guard against unknown k.k->type in __bkey_invalid()
For forwards compatibility we have to allow unknown key types, and only run the checks that make sense against them.
Fix a missing guar
bcachefs: Guard against unknown k.k->type in __bkey_invalid()
For forwards compatibility we have to allow unknown key types, and only run the checks that make sense against them.
Fix a missing guard on k.k->type being known.
Reported-by: [email protected] Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
d789e9a7 |
| 14-Apr-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Interior known are required to have known key types
For forwards compatibilyt, we allow bkeys of unknown type in leaf nodes; we can simply ignore metadata we don't understand. Pointers to
bcachefs: Interior known are required to have known key types
For forwards compatibilyt, we allow bkeys of unknown type in leaf nodes; we can simply ignore metadata we don't understand. Pointers to btree nodes must always be of known types, howwever.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
bceb86be |
| 14-Apr-2024 |
Kent Overstreet <[email protected]> |
bcachefs: add missing bounds check in __bch2_bkey_val_invalid()
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
741c1d3e |
| 15-Jan-2024 |
Kent Overstreet <[email protected]> |
bcachefs: Add .val_to_text() for KEY_TYPE_cookie
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4, v6.7-rc3, v6.7-rc2, v6.7-rc1 |
|
| #
d3c7727b |
| 03-Nov-2023 |
Kent Overstreet <[email protected]> |
bcachefs: rebalance_work btree is not a snapshots btree
rebalance_work entries may refer to entries in the extents btree, which is a snapshots btree, or they may also refer to entries in the reflink
bcachefs: rebalance_work btree is not a snapshots btree
rebalance_work entries may refer to entries in the extents btree, which is a snapshots btree, or they may also refer to entries in the reflink btree, which is not.
Hence rebalance_work keys may use the snapshot field but it's not required to be nonzero - add a new btree flag to reflect this.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6 |
|
| #
b65db750 |
| 25-Oct-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Enumerate fsck errors
This patch adds a superblock error counter for every distinct fsck error; this means that when analyzing filesystems out in the wild we'll be able to see what sorts o
bcachefs: Enumerate fsck errors
This patch adds a superblock error counter for every distinct fsck error; this means that when analyzing filesystems out in the wild we'll be able to see what sorts of inconsistencies are being found and repair, and hence what bugs to look for.
Errors validating bkeys are not yet considered distinct fsck errors, but this patch adds a new helper, bkey_fsck_err(), in order to add distinct error types for them as well.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc7 |
|
| #
50a38ca1 |
| 20-Oct-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Fix btree_node_type enum
More forwards compatibility fixups: having BKEY_TYPE_btree at the end of the enum conflicts with unnkown btree IDs, this shifts BKEY_TYPE_btree to slot 0 and fixes
bcachefs: Fix btree_node_type enum
More forwards compatibility fixups: having BKEY_TYPE_btree at the end of the enum conflicts with unnkown btree IDs, this shifts BKEY_TYPE_btree to slot 0 and fixes things up accordingly.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
88dfe193 |
| 20-Oct-2023 |
Kent Overstreet <[email protected]> |
bcachefs: bch2_btree_id_str()
Since we can run with unknown btree IDs, we can't directly index btree IDs into fixed size arrays.
Signed-off-by: Kent Overstreet <[email protected]>
|
|
Revision tags: v6.6-rc6, v6.6-rc5, v6.6-rc4 |
|
| #
6929d5e7 |
| 29-Sep-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Fix handling of unknown bkey types
min_val_size was U8_MAX for unknown key types, causing us to flag any known key as invalid - it should have been 0.
Signed-off-by: Kent Overstreet <kent
bcachefs: Fix handling of unknown bkey types
min_val_size was U8_MAX for unknown key types, causing us to flag any known key as invalid - it should have been 0.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc3, v6.6-rc2 |
|
| #
96dea3d5 |
| 12-Sep-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Fix W=12 build errors
Signed-off-by: Kent Overstreet <[email protected]>
|
| #
1f70225d |
| 12-Sep-2023 |
Nathan Chancellor <[email protected]> |
bcachefs: Fix -Wincompatible-function-pointer-types-strict from key_invalid callbacks
When building bcachefs with -Wincompatible-function-pointer-types-strict, a clang warning designed to catch issu
bcachefs: Fix -Wincompatible-function-pointer-types-strict from key_invalid callbacks
When building bcachefs with -Wincompatible-function-pointer-types-strict, a clang warning designed to catch issues with mismatched function pointer types, which will be fatal at runtime due to kernel Control Flow Integrity (kCFI), there are several instances along the lines of:
fs/bcachefs/bkey_methods.c:118:2: error: incompatible function pointer types initializing 'int (*)(const struct bch_fs *, struct bkey_s_c, enum bkey_invalid_flags, struct printbuf *)' with an expression of type 'int (const struct bch_fs *, struct bkey_s_c, unsigned int, struct printbuf *)' [-Werror,-Wincompatible-function-pointer-types-strict] 118 | BCH_BKEY_TYPES() | ^~~~~~~~~~~~~~~~ fs/bcachefs/bcachefs_format.h:342:2: note: expanded from macro 'BCH_BKEY_TYPES' 342 | x(deleted, 0) \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~ fs/bcachefs/bkey_methods.c:117:41: note: expanded from macro 'x' 117 | #define x(name, nr) [KEY_TYPE_##name] = bch2_bkey_ops_##name, | ^~~~~~~~~~~~~~~~~~~~ <scratch space>:206:1: note: expanded from here 206 | bch2_bkey_ops_deleted | ^~~~~~~~~~~~~~~~~~~~~ fs/bcachefs/bkey_methods.c:34:17: note: expanded from macro 'bch2_bkey_ops_deleted' 34 | .key_invalid = deleted_key_invalid, \ | ^~~~~~~~~~~~~~~~~~~
The flags parameter should be of type 'enum bkey_invalid_flags', not 'unsigned int'. Adjust the type everywhere so that there is no more warning.
Signed-off-by: Nathan Chancellor <[email protected]> Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.6-rc1 |
|
| #
b030e262 |
| 10-Sep-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Log truncate operations
Previously, we guaranteed atomicity of truncate after unclean shutdown with the BCH_INODE_I_SIZE_DIRTY flag - which required a full scan of the inodes btree.
Recen
bcachefs: Log truncate operations
Previously, we guaranteed atomicity of truncate after unclean shutdown with the BCH_INODE_I_SIZE_DIRTY flag - which required a full scan of the inodes btree.
Recently the deleted inodes btree was added so that we no longer have to scan for deleted inodes, but truncate was unfinished and that change left it broken.
This patch uses the new logged operations btree to fix truncate atomicity; we now log an operation that can be replayed at the start of a truncate.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.5, v6.5-rc7 |
|
| #
8e877caa |
| 16-Aug-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Split out snapshot.c
subvolume.c has gotten a bit large, this splits out a separate file just for managing snapshot trees - BTREE_ID_snapshots.
Signed-off-by: Kent Overstreet <kent.overst
bcachefs: Split out snapshot.c
subvolume.c has gotten a bit large, this splits out a separate file just for managing snapshot trees - BTREE_ID_snapshots.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc6, v6.5-rc5, v6.5-rc4, v6.5-rc3 |
|
| #
e8d2fe3b |
| 21-Jul-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Consolidate btree id properties
This refactoring centralizes defining per-btree properties.
bch2_key_types_allowed was also about to overflow a u32, so expand that to a u64.
Signed-off-b
bcachefs: Consolidate btree id properties
This refactoring centralizes defining per-btree properties.
bch2_key_types_allowed was also about to overflow a u32, so expand that to a u64.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
|
Revision tags: v6.5-rc2, v6.5-rc1 |
|
| #
8726dc93 |
| 07-Jul-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Change check for invalid key types
As part of the forward compatibility patch series, we need to allow for new key types without complaining loudly when running an old version.
This patch
bcachefs: Change check for invalid key types
As part of the forward compatibility patch series, we need to allow for new key types without complaining loudly when running an old version.
This patch changes the flags parameter of bkey_invalid to an enum, and adds a new flag to indicate we're being called from the transaction commit path.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
73bd774d |
| 07-Jul-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Assorted sparse fixes
- endianness fixes - mark some things static - fix a few __percpu annotations - fix silent enum conversions
Signed-off-by: Kent Overstreet <kent.overstreet@linux
bcachefs: Assorted sparse fixes
- endianness fixes - mark some things static - fix a few __percpu annotations - fix silent enum conversions
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|
| #
183e9c43 |
| 06-Jul-2023 |
Kent Overstreet <[email protected]> |
bcachefs: Allow for unknown key types
This adds a new helper for lookups bkey_ops for a given key type, which returns a null bkey_ops for unknown key types; various bkey_ops users are tweaked as wel
bcachefs: Allow for unknown key types
This adds a new helper for lookups bkey_ops for a given key type, which returns a null bkey_ops for unknown key types; various bkey_ops users are tweaked as well to handle unknown key types.
Signed-off-by: Kent Overstreet <[email protected]>
show more ...
|