Commit c5304dd5 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'for-5.7-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull btrfs fix from David Sterba:
 "A regression fix for a warning caused by running balance and snapshot
  creation in parallel"

* tag 'for-5.7-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
  btrfs: fix setting last_trans for reloc roots
parents 5a32fe48 aec7db3b
...@@ -1527,8 +1527,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans, ...@@ -1527,8 +1527,7 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
int clear_rsv = 0; int clear_rsv = 0;
int ret; int ret;
if (!rc || !rc->create_reloc_tree || if (!rc)
root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
return 0; return 0;
/* /*
...@@ -1538,12 +1537,28 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans, ...@@ -1538,12 +1537,28 @@ int btrfs_init_reloc_root(struct btrfs_trans_handle *trans,
if (reloc_root_is_dead(root)) if (reloc_root_is_dead(root))
return 0; return 0;
/*
* This is subtle but important. We do not do
* record_root_in_transaction for reloc roots, instead we record their
* corresponding fs root, and then here we update the last trans for the
* reloc root. This means that we have to do this for the entire life
* of the reloc root, regardless of which stage of the relocation we are
* in.
*/
if (root->reloc_root) { if (root->reloc_root) {
reloc_root = root->reloc_root; reloc_root = root->reloc_root;
reloc_root->last_trans = trans->transid; reloc_root->last_trans = trans->transid;
return 0; return 0;
} }
/*
* We are merging reloc roots, we do not need new reloc trees. Also
* reloc trees never need their own reloc tree.
*/
if (!rc->create_reloc_tree ||
root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID)
return 0;
if (!trans->reloc_reserved) { if (!trans->reloc_reserved) {
rsv = trans->block_rsv; rsv = trans->block_rsv;
trans->block_rsv = rc->block_rsv; trans->block_rsv = rc->block_rsv;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment