]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: show correct warning if can't read data reloc tree
authorMark Harmstone <mark@harmstone.com>
Fri, 19 Dec 2025 18:15:28 +0000 (18:15 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 6 Jan 2026 00:23:00 +0000 (01:23 +0100)
If a filesystem is missing its data reloc tree, we get something like
this in dmesg:

  BTRFS warning (device loop11): failed to read root (objectid=4): -2
  BTRFS error (device loop11): open_ctree failed: -2

objectid is BTRFS_DEV_TREE_OBJECTID, but this should actually be the
value of BTRFS_DATA_RELOC_TREE_OBJECTID.

btrfs_read_roots() prints location.objectid on failure, but this isn't
set when reading the data reloc tree. Set location.objectid to the
correct value on failure, so that the error message makes sense.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Mark Harmstone <mark@harmstone.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 89149fac804c80d24c6408d4e91e5341dbeacc6c..d8ca5b6e88e0dfc70791555ad757a25efb1310a4 100644 (file)
@@ -2255,6 +2255,7 @@ static int btrfs_read_roots(struct btrfs_fs_info *fs_info)
                                 BTRFS_DATA_RELOC_TREE_OBJECTID, true);
        if (IS_ERR(root)) {
                if (!btrfs_test_opt(fs_info, IGNOREBADROOTS)) {
+                       location.objectid = BTRFS_DATA_RELOC_TREE_OBJECTID;
                        ret = PTR_ERR(root);
                        goto out;
                }