]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: introduce a head ref rbtree
authorLiu Bo <bo.li.liu@oracle.com>
Mon, 14 Oct 2013 04:59:45 +0000 (12:59 +0800)
committerChris Mason <clm@fb.com>
Tue, 28 Jan 2014 21:19:22 +0000 (13:19 -0800)
commit7adce15c33bdd981c13ebf089a5df55d34570c1a
tree7aa114c1a78e1834950a34524c8ada82569af50b
parente0400576d746b8d6ace98f9826c438f36492d7ee
Btrfs: introduce a head ref rbtree

The way how we process delayed refs is
1) get a bunch of head refs,
2) pick up one head ref,
3) go one node back for any delayed ref updates.

The head ref is also linked in the same rbtree as the delayed ref is,
so in 1) stage, we have to walk one by one including not only head refs, but
delayed refs.

When we have a great number of delayed refs pending to process,
this'll cost time a lot.

Here we introduce a head ref specific rbtree, it only has head refs, so troubles
go away.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/delayed-ref.c
fs/btrfs/delayed-ref.h
fs/btrfs/disk-io.c
fs/btrfs/extent-tree.c
fs/btrfs/transaction.c