]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commit
btrfs: introduce BTRFS_NESTING_SPLIT for split blocks
authorJosef Bacik <josef@toxicpanda.com>
Thu, 20 Aug 2020 15:46:06 +0000 (11:46 -0400)
committerDavid Sterba <dsterba@suse.com>
Wed, 7 Oct 2020 10:12:16 +0000 (12:12 +0200)
commit4dff97e69005ea90266f3e3dda295264e854c15d
tree6f2cc1bb65ab472f6cec7106c7b3fa2c04277163
parentbf59a5a21604ef79da9105bef1bae817fd053e75
btrfs: introduce BTRFS_NESTING_SPLIT for split blocks

If we are splitting a leaf/node, we could do something like the
following

lock(leaf)  BTRFS_NESTING_NORMAL
  lock(left) BTRFS_NESTING_LEFT + BTRFS_NESTING_COW
    push from leaf -> left
      reset path to point to left
        split left
          allocate new block, lock block BTRFS_NESTING_SPLIT

at the new block point we need to have a different nesting level,
because we have already used either BTRFS_NESTING_LEFT or
BTRFS_NESTING_RIGHT when pushing items from the original leaf into the
adjacent leaves.

Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.c
fs/btrfs/locking.h