summaryrefslogtreecommitdiff
path: root/scripts/lib/kdoc/kdoc_output.py
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2025-06-02 19:48:27 -0400
committerKent Overstreet <kent.overstreet@linux.dev>2025-06-04 16:45:41 -0400
commit29cc6fb7c068c773049d3bde14b939033893eff4 (patch)
treeb7ec869ff26cbfb0f58875e01d756432b6366c0c /scripts/lib/kdoc/kdoc_output.py
parent09fb85ae565645b982e9030dbb2ff6707f2cdddc (diff)
bcachefs: Fix subvol to missing root repair
We had a bug where the root inode of a subvolume was erronously deleted: bch2_evict_inode() called bch2_inode_rm(), meaning the VFS inode's i_nlink was somehow set to 0 when it shouldn't have - the inode in the btree indicated it clearly was not unlinked. This has been addressed with additional safety checks in bch2_inode_rm() - pulling in the safety checks we already were doing when deleting unlinked inodes in recovery - but the really disastrous bug was in check_subvols(), which on finding a dangling subvol (subvol with a missing root inode) would delete the subvolume. I assume this bug dates from early check_directory_structure() code, which originally handled subvolumes and normal paths - the idea being that still live contents of the subvolume would get reattached somewhere. But that's incorrect, and disastrously so; deleting a subvolume triggers deleting the snapshot ID it points to, deleting the entire contents. The correct way to repair is to recreate the root inode if it's missing; then any contents will get reattached under that subvolume's lost+found. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'scripts/lib/kdoc/kdoc_output.py')
0 files changed, 0 insertions, 0 deletions