From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753008AbbCIMD4 (ORCPT ); Mon, 9 Mar 2015 08:03:56 -0400 Received: from smtp3-g21.free.fr ([212.27.42.3]:44678 "EHLO smtp3-g21.free.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751396AbbCIMDs (ORCPT ); Mon, 9 Mar 2015 08:03:48 -0400 From: Yann Droneaud To: Peter Zijlstra , Paul Mackerras , Ingo Molnar , Arnaldo Carvalho de Melo , Jiri Olsa Cc: Yann Droneaud , Adrian Hunter , David Ahern , David Ahern , Frederic Weisbecker , Jiri Olsa , Namhyung Kim , Peter Zijlstra , Stephane Eranian , William Cohen , linux-kernel@vger.kernel.org Subject: [PATCH v1 1/2] perf tools: shortcut PERF_FLAG_FD_CLOEXEC probing in case of EBUSY error Date: Mon, 9 Mar 2015 13:01:15 +0100 Message-Id: <951bb1c83c07bae703a3ac70ea2cb459de8f8973.1425901229.git.ydroneaud@opteya.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch is a simplification of the logic introduced as part of commit 63914aca8f7e ("perf tools: Show better error message in case we fail to open counters due to EBUSY error"): if -EBUSY is reported by perf_event_open(), it will not be possible to probe PERF_FLAG_FD_CLOEXEC, so it's safe to leave early. It should be noted that -EBUSY errors are not really expected here since commit 038fa0b9739d ("perf tools: Fix PERF_FLAG_FD_CLOEXEC flag probing event type open counters due to EBUSY error"): the perf event type used now should be safe to use regarding -EBUSY error. Cc: Adrian Hunter Cc: David Ahern Cc: Frederic Weisbecker Cc: Jiri Olsa Cc: Namhyung Kim Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Stephane Eranian Cc: William Cohen Link: http://lkml.kernel.org/r/cover.1425901229.git.ydroneaud@opteya.com Signed-off-by: Yann Droneaud --- tools/perf/util/cloexec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/cloexec.c b/tools/perf/util/cloexec.c index 6da965bdbc2c..2f05f8f8c22e 100644 --- a/tools/perf/util/cloexec.c +++ b/tools/perf/util/cloexec.c @@ -46,7 +46,11 @@ static int perf_flag_probe(void) return 1; } - WARN_ONCE(err != EINVAL && err != EBUSY, + /* ignore busy errors */ + if (err == EBUSY) + return -1; + + WARN_ONCE(err != EINVAL, "perf_event_open(..., PERF_FLAG_FD_CLOEXEC) failed with unexpected error %d (%s)\n", err, strerror_r(err, sbuf, sizeof(sbuf))); @@ -64,7 +68,7 @@ static int perf_flag_probe(void) if (fd >= 0) close(fd); - if (WARN_ONCE(fd < 0 && err != EBUSY, + if (WARN_ONCE(fd < 0, "perf_event_open(..., 0) failed unexpectedly with error %d (%s)\n", err, strerror_r(err, sbuf, sizeof(sbuf)))) return -1; -- 2.1.0