From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933418AbbDIT5E (ORCPT ); Thu, 9 Apr 2015 15:57:04 -0400 Received: from mail-qk0-f176.google.com ([209.85.220.176]:35290 "EHLO mail-qk0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933239AbbDIT5C convert rfc822-to-8bit (ORCPT ); Thu, 9 Apr 2015 15:57:02 -0400 MIME-Version: 1.0 In-Reply-To: <55262C8D.8080109@huawei.com> References: <1428468560-27401-1-git-send-email-hekuang@huawei.com> <1428468560-27401-2-git-send-email-hekuang@huawei.com> <20150408175947.GB20250@krava.redhat.com> <55262C8D.8080109@huawei.com> Date: Thu, 9 Apr 2015 15:57:01 -0400 X-Google-Sender-Auth: GmNzI62GpFuoQQuDSNEwLKjkkuM Message-ID: Subject: Re: [PATCH 2/2] perf data: Fix ctf_writer setupenv failure From: =?UTF-8?Q?J=C3=A9r=C3=A9mie_Galarneau?= To: He Kuang Cc: Jiri Olsa , Sebastian Andrzej Siewior , Jiri Olsa , acme@kernel.org, a.p.zijlstra@chello.nl, mingo@redhat.com, Wang Nan , linux-kernel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi He, This commit should fix the problem: commit a0d129162d2fdd1a99553a6cfbdf4e77ad3f7334 Author: Jérémie Galarneau Date: Thu Apr 9 14:57:44 2015 -0400 Fix: Allow the addition of environment fields to a frozen trace Commit 7f800dc7 introduced a behavior change which made it impossible to add environment fields to a frozen trace (after the creation of a stream). This fix makes it possible to add new fields to a trace's environment while making it impossible to modify existing fields hereby restoring CTF Writer's v1.2 behavior. Signed-off-by: Jérémie Galarneau Can you reproduce the problem with the latest Babeltrace master? Otherwise, is there a branch I can checkout to try it out? Jérémie On Thu, Apr 9, 2015 at 3:38 AM, He Kuang wrote: > On 2015/4/9 1:59, Jiri Olsa wrote: >> >> On Wed, Apr 08, 2015 at 12:49:20PM +0800, He Kuang wrote: >>> >>> Due to babeltrace commit: >>> 7f800dc7c2a1 ("ir: make trace environment use bt_object") >>> >>> The trace->frozen flag is set in bt_ctf_trace_create_stream(), this flag >>> is checked before adding environment field to trace, and causes >>> ctf_writer__setup_env() failed. Fix this by setting all environment >>> fields before bt_ctf_trace_create_stream(). >>> >>> Before this patch: >>> $ perf data convert --to-ctf=ctf >>> Error during CTF convert setup. >> >> have you tested with the latest babeltrace sources? >> this reminds me the bug they fixed recently, CCing Jeremie >> >> thanks, >> jirka > > > Yes, the latest babeltrace commit id: > dfdad2587b12d454e7235e01508a266d83e3e264 > >>> After this patch: >>> $ perf data convert --to-ctf=ctf >>> [ perf data convert: Converted 'perf.data' into CTF data 'ctf' ] >>> [ perf data convert: Converted and wrote 0.023 MB (596 samples) ] >>> >>> Signed-off-by: He Kuang >>> --- >>> tools/perf/util/data-convert-bt.c | 30 ++++++++++++++++++++---------- >>> 1 file changed, 20 insertions(+), 10 deletions(-) >>> >>> diff --git a/tools/perf/util/data-convert-bt.c >>> b/tools/perf/util/data-convert-bt.c >>> index a5b89b9..718dc8a 100644 >>> --- a/tools/perf/util/data-convert-bt.c >>> +++ b/tools/perf/util/data-convert-bt.c >>> @@ -604,6 +604,22 @@ static int setup_events(struct ctf_writer *cw, >>> struct perf_session *session) >>> return 0; >>> } >>> +static int ctf_writer__setup_stream(struct ctf_writer *cw) >>> +{ >>> + struct bt_ctf_stream *stream; >>> + >>> + /* CTF stream instance */ >>> + stream = bt_ctf_writer_create_stream(cw->writer, >>> cw->stream_class); >>> + if (!stream) { >>> + pr("Failed to create CTF stream.\n"); >>> + return -1; >>> + } >>> + >>> + cw->stream = stream; >>> + >>> + return 0; >>> +} >>> + >>> static int ctf_writer__setup_env(struct ctf_writer *cw, >>> struct perf_session *session) >>> { >>> @@ -725,7 +741,6 @@ static int ctf_writer__init(struct ctf_writer *cw, >>> const char *path) >>> { >>> struct bt_ctf_writer *writer; >>> struct bt_ctf_stream_class *stream_class; >>> - struct bt_ctf_stream *stream; >>> struct bt_ctf_clock *clock; >>> /* CTF writer */ >>> @@ -767,15 +782,6 @@ static int ctf_writer__init(struct ctf_writer *cw, >>> const char *path) >>> if (ctf_writer__init_data(cw)) >>> goto err_cleanup; >>> - /* CTF stream instance */ >>> - stream = bt_ctf_writer_create_stream(writer, stream_class); >>> - if (!stream) { >>> - pr("Failed to create CTF stream.\n"); >>> - goto err_cleanup; >>> - } >>> - >>> - cw->stream = stream; >>> - >>> /* CTF clock writer setup */ >>> if (bt_ctf_writer_add_clock(writer, clock)) { >>> pr("Failed to assign CTF clock to writer.\n"); >>> @@ -830,6 +836,10 @@ int bt_convert__perf2ctf(const char *input, const >>> char *path, bool force) >>> if (ctf_writer__setup_env(cw, session)) >>> goto free_session; >>> + /* CTF writer trace stream setup */ >>> + if (ctf_writer__setup_stream(cw)) >>> + goto free_session; >>> + >>> /* CTF events setup */ >>> if (setup_events(cw, session)) >>> goto free_session; >>> -- >>> 2.3.3.220.g9ab698f >>> >> > > -- Jérémie Galarneau EfficiOS Inc. http://www.efficios.com