Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp54417pxf; Tue, 6 Apr 2021 14:50:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzH1sN3JsuVzXcsTgkK0+Zah6ILj5RnLwkWRDEv4uA+jM6RRqMt1IVx3kaLjaRWw62kZhpf X-Received: by 2002:a17:906:6bd1:: with SMTP id t17mr75805ejs.319.1617745801585; Tue, 06 Apr 2021 14:50:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617745801; cv=none; d=google.com; s=arc-20160816; b=bvDa3n2oS9/ev0Sh6ND9I1rAtXfL+8sKSL9VwzOs3+KKzBcy6e0w5x76lQH1sJWCdg 9yo6fFrhu2kMmxmQCzPzznOlCE/jLnInGeWMVNrrWuNkD4VbnOH96Wwfl0znhN1pD7TQ cix0zr+kReYMCyvm0PPn9N3AlQ7bPOc1TnAjuCtDQm31if4ba/dWRgL+YndeSa3HSauf lPaGljDA9DDJquMSFXaf/5yBYrBrIGsAtOfd+5ozPnfST34gq94C1OiEQeQ7m9YVf4YF YFTAxeMyEuKXTZWkG0WGlYjdDdj3blztEO1A8SgntwoYvSO6e6CGAjqjzR6cBfPpXia6 gxsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=lIdUrkp5chiZabhxZBZwlF2+2ZnXF1CwFkHgsIPxDq0=; b=sdZ/WUOE43MEYXKcZ5ApXm/rqR0JWuDYww3slY5oQzBkEw6ggijxPVETORITZ+Cr42 KNBxygzNqqOqbR0MVVfHIXgPPILMQ6fazLHth6Orw/j5QS4ystaRSTWuuW+hxutQlX4H rE+IRmkCSN98upcQI3pwF+65m6Ob0kxmVRUj4JmQLe4MWpiYBzlkZGOCvh5yzFp598FO YqsG8Kh3aH3bzIZvvwAF8/JNPFG4jWm2jCND9rKCIshsHDcIXFSakhWGWJ63ZlN/FaHS tJDpUkYtZ3Nnfd4GKFeGTZu1uYFtuXETQMNWjlbPxQEZY8dhvOlushq6AYvk4A5vmw2L zQkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id da8si5565167edb.320.2021.04.06.14.49.38; Tue, 06 Apr 2021 14:50:01 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242216AbhDFMpv (ORCPT + 99 others); Tue, 6 Apr 2021 08:45:51 -0400 Received: from frasgout.his.huawei.com ([185.176.79.56]:2767 "EHLO frasgout.his.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241986AbhDFMps (ORCPT ); Tue, 6 Apr 2021 08:45:48 -0400 Received: from fraeml709-chm.china.huawei.com (unknown [172.18.147.206]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4FF6X04Jycz681X8; Tue, 6 Apr 2021 20:38:40 +0800 (CST) Received: from lhreml724-chm.china.huawei.com (10.201.108.75) by fraeml709-chm.china.huawei.com (10.206.15.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 6 Apr 2021 14:45:38 +0200 Received: from [10.210.166.136] (10.210.166.136) by lhreml724-chm.china.huawei.com (10.201.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 6 Apr 2021 13:45:36 +0100 Subject: Re: [PATCH v2 2/6] perf test: Handle metric reuse in pmu-events parsing test To: Jiri Olsa CC: , , , , , , , , , , , , , , , , References: <1616668398-144648-1-git-send-email-john.garry@huawei.com> <1616668398-144648-3-git-send-email-john.garry@huawei.com> From: John Garry Message-ID: Date: Tue, 6 Apr 2021 13:43:09 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.210.166.136] X-ClientProxiedBy: lhreml711-chm.china.huawei.com (10.201.108.62) To lhreml724-chm.china.huawei.com (10.201.108.75) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/04/2021 13:17, Jiri Olsa wrote: >>>> + ref = &metric->metric_ref; >>>> + ref->metric_name = pe->metric_name; >>>> + ref->metric_expr = pe->metric_expr; >>>> + list_add_tail(&metric->list, compound_list); >>>> + >>>> + rc = expr__find_other(pe->metric_expr, NULL, pctx, 0); >> Hi Jirka, >> >>> so this might add new items to pctx->ids, I think you need >>> to restart the iteration as we do it in __resolve_metric >>> otherwise you could miss some new keys >> I thought that I was doing this. Indeed, this code is very much like >> __resolve_metric();) >> >> So expr__find_other() may add a new item to pctx->ids, and we always iterate >> again, and try to lookup any pmu_events, *, above. If none exist, then we > hm, I don't see that.. so, what you do is: > > hashmap__for_each_entry_safe((&pctx->ids) ....) { > > rc = expr__find_other(pe->metric_expr, NULL, pctx, 0); > } > > and what I think we need to do is: > > hashmap__for_each_entry_safe((&pctx->ids) ....) { > > rc = expr__find_other(pe->metric_expr, NULL, pctx, 0); > > break; > } > > each time you resolve another metric, you need to restart > the pctx->ids iteration, because there will be new items, > and we are in the middle of it Sure, but we will restart anyway. Regardless of this, I don't think what I am doing is safe, i.e. adding new items in the middle of the iter, so I will change in the way you suggest. Thanks, John