Skip to content

Conversation

adam900710
Copy link
Collaborator

[BUG]
There is a bug report that, when using --chunk-root option, if the specified chunk root tree block has a different level than the one in the super block, btrfs check will reject the run:

ERROR: root [3 0] level 0 does not match 1
ERROR: cannot read chunk root
ERROR: cannot open file system
Opening filesystem to check...

[CAUSE]
During btrfs_setup_chunk_tree_and_device_map(), although it accepts a @chunk_root_bytenr parameter, it still uses the chunk root level from the super block.

Thus if the provided chunk root is at a different level, it will still be rejected.

[FIX]
Read out the tree block at @chunk_root_bytenr, and use the level from the tree block instead.

Link: https://lore.kernel.org/linux-btrfs/CAKZK7uxiRmDxk-1goC4yj7QZPSmL-=GAoAuF=OdekbSNVrG8fg@mail.gmail.com/

…ified

[BUG]
There is a bug report that, when using --chunk-root option, if the
specified chunk root tree block has a different level than the one in
the super block, btrfs check will reject the run:

  ERROR: root [3 0] level 0 does not match 1
  ERROR: cannot read chunk root
  ERROR: cannot open file system
  Opening filesystem to check...

[CAUSE]
During btrfs_setup_chunk_tree_and_device_map(), although it accepts a
@chunk_root_bytenr parameter, it still uses the chunk root level from
the super block.

Thus if the provided chunk root is at a different level, it will still
be rejected.

[FIX]
Read out the tree block at @chunk_root_bytenr, and use the level from
the tree block instead.

Link: https://lore.kernel.org/linux-btrfs/CAKZK7uxiRmDxk-1goC4yj7QZPSmL-=GAoAuF=OdekbSNVrG8fg@mail.gmail.com/
Signed-off-by: Qu Wenruo <[email protected]>
kdave pushed a commit that referenced this pull request Sep 25, 2025
…ified

[BUG]
There is a bug report that, when using --chunk-root option, if the
specified chunk root tree block has a different level than the one in
the super block, btrfs check will reject the run:

  ERROR: root [3 0] level 0 does not match 1
  ERROR: cannot read chunk root
  ERROR: cannot open file system
  Opening filesystem to check...

[CAUSE]
During btrfs_setup_chunk_tree_and_device_map(), although it accepts a
@chunk_root_bytenr parameter, it still uses the chunk root level from
the super block.

Thus if the provided chunk root is at a different level, it will still
be rejected.

[FIX]
Read out the tree block at @chunk_root_bytenr, and use the level from
the tree block instead.

Pull-request: #1037
Link: https://lore.kernel.org/linux-btrfs/CAKZK7uxiRmDxk-1goC4yj7QZPSmL-=GAoAuF=OdekbSNVrG8fg@mail.gmail.com/
Signed-off-by: Qu Wenruo <[email protected]>
@kdave kdave added this to the v6.17 milestone Sep 25, 2025
@kdave
Copy link
Owner

kdave commented Sep 25, 2025

Merged to devel, thanks.

@kdave kdave closed this Sep 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants