]> git.baikalelectronics.ru Git - 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)
commit8448bf6db0eb7a199f55645f84fcee4ecc895d01
tree6f2cc1bb65ab472f6cec7106c7b3fa2c04277163
parent11d180e01f4bfc943e0f712c16ec208a26378726
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