summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2026-03-14 03:00:39 +0300
committerDavid Sterba <dsterba@suse.com>2026-04-07 19:56:02 +0300
commit3c53ad7549ed80f4d27b6bee89425bb022ecfd32 (patch)
treedf59266e385656839c83fbf90baeb0e446178849
parent232770bcf3aa65ae83fd7389961fa651f09f7b3a (diff)
downloadlinux-3c53ad7549ed80f4d27b6bee89425bb022ecfd32.tar.xz
btrfs: output more info when duplicated ordered extent is found
During development of a new feature, I triggered that btrfs_panic() inside insert_ordered_extent() and spent quite some unnecessary before noticing I'm passing incorrect flags when creating a new ordered extent. Unfortunately the existing error message is not providing much help. Enhance the output to provide file offset, num bytes and flags of both existing and new ordered extents. Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/ordered-data.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c
index de6b60c52292..d39f1c49d1cf 100644
--- a/fs/btrfs/ordered-data.c
+++ b/fs/btrfs/ordered-data.c
@@ -253,10 +253,15 @@ static void insert_ordered_extent(struct btrfs_ordered_extent *entry)
spin_lock(&inode->ordered_tree_lock);
node = tree_insert(&inode->ordered_tree, entry->file_offset,
&entry->rb_node);
- if (unlikely(node))
+ if (unlikely(node)) {
+ struct btrfs_ordered_extent *exist =
+ rb_entry(node, struct btrfs_ordered_extent, rb_node);
+
btrfs_panic(fs_info, -EEXIST,
- "inconsistency in ordered tree at offset %llu",
- entry->file_offset);
+"overlapping ordered extents, existing oe file_offset %llu num_bytes %llu flags 0x%lx, new oe file_offset %llu num_bytes %llu flags 0x%lx",
+ exist->file_offset, exist->num_bytes, exist->flags,
+ entry->file_offset, entry->num_bytes, entry->flags);
+ }
spin_unlock(&inode->ordered_tree_lock);
spin_lock(&root->ordered_extent_lock);