#
dab18704 |
| 06-Jun-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: fix stack frame size in fsck.c
fsck.c always runs top of the stack so we're not too concerned here; noinline_for_stack is sufficient
Signed-off-by: Kent Overstreet <kent.overstreet@linux.
bcachefs: fix stack frame size in fsck.c
fsck.c always runs top of the stack so we're not too concerned here; noinline_for_stack is sufficient
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
08f50005 |
| 26-May-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Run check_key_has_snapshot in snapshot_delete_keys()
delete_dead_snapshots now runs before the main fsck.c passes which check for keys for invalid snapshots; thus, it needs those checks as
bcachefs: Run check_key_has_snapshot in snapshot_delete_keys()
delete_dead_snapshots now runs before the main fsck.c passes which check for keys for invalid snapshots; thus, it needs those checks as well.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
9e1a66e6 |
| 26-May-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix lookup_first_inode() when inode_generations are present
This function is used for finding the hash seed (which is the same in all versions of an inode in different snapshots): ff an in
bcachefs: Fix lookup_first_inode() when inode_generations are present
This function is used for finding the hash seed (which is the same in all versions of an inode in different snapshots): ff an inode has been deleted in a child snapshot we need to iterate until we find a live version.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
4da1713a |
| 26-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: check for inodes that should have backpointers in fsck
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
5a2d1521 |
| 17-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Rip bch2_snapshot_equiv() out of fsck
Originally, when deleting snapshots we didn't collapse redundant snapshot nodes; thus, the notion of a class of equivalent snapshot nodes leaked into
bcachefs: Rip bch2_snapshot_equiv() out of fsck
Originally, when deleting snapshots we didn't collapse redundant snapshot nodes; thus, the notion of a class of equivalent snapshot nodes leaked into fsck.
Now we do, so snapshot ID equivalence classes are purely local to snapshot deletion.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
5dd8c60e |
| 07-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: iter/update/trigger/str_hash flag cleanup
Combine iter/update/trigger/str_hash flags into a single enum, and x-macroize them for a to_text() function later.
These flags are all for a spec
bcachefs: iter/update/trigger/str_hash flag cleanup
Combine iter/update/trigger/str_hash flags into a single enum, and x-macroize them for a to_text() function later.
These flags are all for a specific iter/key/update context, so it makes sense to group them together - iter/update/trigger flags were already given distinct bits, this cleans up and unifies that handling.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
ac01928b |
| 07-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: bch2_hash_lookup() now returns bkey_s_c
small cleanup
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
09d4c2ac |
| 01-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: reconstruct_inode()
If an inode is missing, but corresponding extents and dirent still exist, it's well worth recreating it - this does so.
Signed-off-by: Kent Overstreet <kent.overstreet
bcachefs: reconstruct_inode()
If an inode is missing, but corresponding extents and dirent still exist, it's well worth recreating it - this does so.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
cc053290 |
| 31-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Subvolume reconstruction
We can now recreate missing subvolumes from dirents and/or inodes.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
fa14b504 |
| 02-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: ratelimit informational fsck errors
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
eab3a3ce |
| 30-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix overlapping extent repair
overlapping extent repair was colliding with extent past end of inode checks - don't update "extent ends at" until we know we have an extent.
Signed-off-by:
bcachefs: Fix overlapping extent repair
overlapping extent repair was colliding with extent past end of inode checks - don't update "extent ends at" until we know we have an extent.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
8ce1db80 |
| 01-Apr-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix remove_dirent()
We were missing an iter_traverse().
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
d2554263 |
| 24-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Split out recovery_passes.c
We've grown a fair amount of code for managing recovery passes; tracking which ones we're running, which ones need to be run, and flagging in the superblock whi
bcachefs: Split out recovery_passes.c
We've grown a fair amount of code for managing recovery passes; tracking which ones we're running, which ones need to be run, and flagging in the superblock which ones need to be run on the next recovery.
So it's worth splitting out into its own file, this code is pretty different from the code in recovery.c.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
dcc1c045 |
| 26-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix use after free in check_root_trans()
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
109ea419 |
| 14-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix spurious -BCH_ERR_transaction_restart_nested
We only need to return transaction_restart_nested when we're inside a context that's handling transaction restarts.
Also, add a missing ch
bcachefs: Fix spurious -BCH_ERR_transaction_restart_nested
We only need to return transaction_restart_nested when we're inside a context that's handling transaction restarts.
Also, add a missing check_subdir_count() call.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
3ff34756 |
| 16-Mar-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix check_key_has_snapshot() call
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
74406f66 |
| 16-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: check_path() now only needs to walk up to subvolume root
Now that checking subvolume structure is a separate pass, the main check_directory_connectivity() pass only needs to walk up to a g
bcachefs: check_path() now only needs to walk up to subvolume root
Now that checking subvolume structure is a separate pass, the main check_directory_connectivity() pass only needs to walk up to a given inode's subvolume root.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
663db5a5 |
| 16-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: bch2_check_subvolume_structure()
Now that we've got bch_subvolume.fs_path_parent, it's easy to write subvolume
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
b8628a25 |
| 08-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: bch_subvolume::fs_path_parent
Record the filesystem path heirarchy for subvolumes in bch_subvolume
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
56e23047 |
| 09-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Correctly reattach subvolumes
Subvolumes need special handling to reattach - we always reattach them in the root subvolume's lost+found, and they need a slightly different kind of dirent.
bcachefs: Correctly reattach subvolumes
Subvolumes need special handling to reattach - we always reattach them in the root subvolume's lost+found, and they need a slightly different kind of dirent.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
3a136177 |
| 09-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: check_path() now prints full inode when reattaching
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
688a7694 |
| 09-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Pass inode bkey to check_path()
prep work for improving logging/error messages
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
f5d58d0c |
| 09-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Fix path where dirent -> subvol missing and we don't fix
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
#
45b4ed52 |
| 21-Jan-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: Repair subvol dirents that point to non subvols
when repair switches d_type to or from DT_SUBVOL, we need to update the target accordingly
Signed-off-by: Kent Overstreet <kent.overstreet@
bcachefs: Repair subvol dirents that point to non subvols
when repair switches d_type to or from DT_SUBVOL, we need to update the target accordingly
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|
#
c60b7f80 |
| 07-Feb-2024 |
Kent Overstreet <kent.overstreet@linux.dev> |
bcachefs: check dirent->d_parent_subvol
Check that d_parent_subvol makes sense - the dirent's snapshot must be visible in d_parent_subvol (i.e. an ancestor of d_parent_subvol's snapshot) in order to
bcachefs: check dirent->d_parent_subvol
Check that d_parent_subvol makes sense - the dirent's snapshot must be visible in d_parent_subvol (i.e. an ancestor of d_parent_subvol's snapshot) in order to be visible.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
show more ...
|