On Tue, Sep 11, 2018 at 01:38:16PM +0800, Qu Wenruo wrote: > Reloc tree doesn't contribute to qgroup numbers, as we have > accounted them at balance time (check replace_path()). > > Skip such unneeded subtree trace should reduce some performance > overhead. > > Signed-off-by: Qu Wenruo <w...@suse.com> > --- > fs/btrfs/extent-tree.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c > index de6f75f5547b..4588153f414c 100644 > --- a/fs/btrfs/extent-tree.c > +++ b/fs/btrfs/extent-tree.c > @@ -8643,7 +8643,13 @@ static noinline int do_walk_down(struct > btrfs_trans_handle *trans, > parent = 0; > } > > - if (need_account) { > + /* > + * Tree reloc tree doesn't contribute to qgroup numbers, and
As you're going to send another iteration, please update the 'tree reloc tree' references here and in other patches too. > + * we have already accounted them at merge time (replace_path), > + * thus we could skip expensive subtree trace here. > + */ > + if (root->root_key.objectid != BTRFS_TREE_RELOC_OBJECTID && > + need_account) { > ret = btrfs_qgroup_trace_subtree(trans, next, > generation, level - 1); > if (ret) { > -- > 2.18.0