Skip to content

Commit 196e024

Browse files
Liu Bokdave
authored andcommitted
Btrfs: remove unnecessary btrfs_mark_buffer_dirty in split_leaf
When we're not able to get enough space through splitting leaf, we'd create a new sibling leaf instead, and it's possible that we return a zero-nritem sibling leaf and mark it dirty before it's in a consistent state. With CONFIG_BTRFS_FS_CHECK_INTEGRITY=y, the integrity check of check_leaf will report panic due to this zero-nritem non-root leaf. This removes the unnecessary btrfs_mark_buffer_dirty. Reported-by: Filipe Manana <fdmanana@gmail.com> Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: David Sterba <dsterba@suse.com>
1 parent 4867268 commit 196e024

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

fs/btrfs/ctree.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4311,7 +4311,11 @@ static noinline int split_leaf(struct btrfs_trans_handle *trans,
43114311
if (path->slots[1] == 0)
43124312
fixup_low_keys(fs_info, path, &disk_key, 1);
43134313
}
4314-
btrfs_mark_buffer_dirty(right);
4314+
/*
4315+
* We create a new leaf 'right' for the required ins_len and
4316+
* we'll do btrfs_mark_buffer_dirty() on this leaf after copying
4317+
* the content of ins_len to 'right'.
4318+
*/
43154319
return ret;
43164320
}
43174321

0 commit comments

Comments
 (0)