diff options
author | Liu Bo <bo.li.liu@oracle.com> | 2016-09-07 14:48:28 -0700 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2016-09-26 19:50:44 +0200 |
commit | 196e02490c934398f894e5cb0ee1ac8ad13ca576 (patch) | |
tree | e519263bb651174598da94d80f35f90e6bf635af /fs/btrfs/ctree.c | |
parent | 4867268c57ff709a7b6b86ae6f6537d846d1443a (diff) | |
download | talos-op-linux-196e02490c934398f894e5cb0ee1ac8ad13ca576.tar.gz talos-op-linux-196e02490c934398f894e5cb0ee1ac8ad13ca576.zip |
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>
Diffstat (limited to 'fs/btrfs/ctree.c')
-rw-r--r-- | fs/btrfs/ctree.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 8f67a14fa974..f6ba165d3f81 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -4311,7 +4311,11 @@ again: if (path->slots[1] == 0) fixup_low_keys(fs_info, path, &disk_key, 1); } - btrfs_mark_buffer_dirty(right); + /* + * We create a new leaf 'right' for the required ins_len and + * we'll do btrfs_mark_buffer_dirty() on this leaf after copying + * the content of ins_len to 'right'. + */ return ret; } |