]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: change how we track dirty roots
authorJosef Bacik <jbacik@fb.com>
Tue, 16 Dec 2014 16:54:43 +0000 (08:54 -0800)
committerChris Mason <clm@fb.com>
Thu, 22 Jan 2015 01:35:49 +0000 (17:35 -0800)
commitb298b6f49c309bd1a681386611bb17deed599ec3
treea51e6fa1170a2a5b3a3c0aa3e38626287904070f
parente6fc7c0e7fe1c9c8d93d2cc7a477bb74a684758c
Btrfs: change how we track dirty roots

I've been overloading root->dirty_list to keep track of dirty roots and which
roots need to have their commit roots switched at transaction commit time.  This
could cause us to lose an update to the root which could corrupt the file
system.  To fix this use a state bit to know if the root is dirty, and if it
isn't set we go ahead and move the root to the dirty list.  This way if we
re-dirty the root after adding it to the switch_commit list we make sure to
update it.  This also makes it so that the extent root is always the last root
on the dirty list to try and keep the amount of churn down at this point in the
commit.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/ctree.c
fs/btrfs/ctree.h
fs/btrfs/transaction.c