From: Yan Zheng Date: Tue, 16 Jun 2009 00:01:02 +0000 (-0400) Subject: Btrfs: always update root items for fs trees at commit time X-Git-Tag: v2.6.31-rc1~315^2 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=978d910d31c5202e251298bf3f603300a54605dd;p=~emulex%2Finfiniband.git Btrfs: always update root items for fs trees at commit time commit_fs_roots skips updating root items for fs trees that aren't modified. This is unsafe now that relocation code modifies root item's last_snapshot field without modifying corresponding fs tree. Signed-off-by: Yan Zheng Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/transaction.c b/fs/btrfs/transaction.c index 2e177d7f4bb..4e83457ea25 100644 --- a/fs/btrfs/transaction.c +++ b/fs/btrfs/transaction.c @@ -543,13 +543,13 @@ static noinline int commit_fs_roots(struct btrfs_trans_handle *trans, btrfs_free_log(trans, root); btrfs_update_reloc_root(trans, root); - if (root->commit_root == root->node) - continue; - - free_extent_buffer(root->commit_root); - root->commit_root = btrfs_root_node(root); + if (root->commit_root != root->node) { + free_extent_buffer(root->commit_root); + root->commit_root = btrfs_root_node(root); + btrfs_set_root_node(&root->root_item, + root->node); + } - btrfs_set_root_node(&root->root_item, root->node); err = btrfs_update_root(trans, fs_info->tree_root, &root->root_key, &root->root_item);