}
 
 static int update_qgroup_limit_item(struct btrfs_trans_handle *trans,
-                                   struct btrfs_root *root,
                                    struct btrfs_qgroup *qgroup)
 {
+       struct btrfs_root *quota_root = trans->fs_info->quota_root;
        struct btrfs_path *path;
        struct btrfs_key key;
        struct extent_buffer *l;
        if (!path)
                return -ENOMEM;
 
-       ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
+       ret = btrfs_search_slot(trans, quota_root, &key, path, 0, 1);
        if (ret > 0)
                ret = -ENOENT;
 
 
        spin_unlock(&fs_info->qgroup_lock);
 
-       ret = update_qgroup_limit_item(trans, quota_root, qgroup);
+       ret = update_qgroup_limit_item(trans, qgroup);
        if (ret) {
                fs_info->qgroup_flags |= BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT;
                btrfs_info(fs_info, "unable to update quota limit for %llu",
                if (ret)
                        fs_info->qgroup_flags |=
                                        BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT;
-               ret = update_qgroup_limit_item(trans, quota_root, qgroup);
+               ret = update_qgroup_limit_item(trans, qgroup);
                if (ret)
                        fs_info->qgroup_flags |=
                                        BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT;
                dstgroup->rsv_rfer = inherit->lim.rsv_rfer;
                dstgroup->rsv_excl = inherit->lim.rsv_excl;
 
-               ret = update_qgroup_limit_item(trans, quota_root, dstgroup);
+               ret = update_qgroup_limit_item(trans, dstgroup);
                if (ret) {
                        fs_info->qgroup_flags |= BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT;
                        btrfs_info(fs_info,