From patchwork Thu Jun 1 09:00:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kaher X-Patchwork-Id: 688041 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC2EAC7EE23 for ; Thu, 1 Jun 2023 09:01:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231493AbjFAJBN (ORCPT ); Thu, 1 Jun 2023 05:01:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56410 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232417AbjFAJBL (ORCPT ); Thu, 1 Jun 2023 05:01:11 -0400 Received: from DM4PR02CU002.outbound.protection.outlook.com (mail-centralusazon11013010.outbound.protection.outlook.com [52.101.64.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33846B3; Thu, 1 Jun 2023 02:01:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hhvKQKcUWqv5o0Jy7Cm8AFn5ECxGdJys13f9DfsryCFGAkzA8q1qxq5J5PCAj4DrPWhQEHjkL2aQPsNJETRWDDPZBJIbEF/t5LnQ7eYHeSFuVGNXsI+XNjpdwRUlP4vEYSANBy0OmW+epbn3TnZQSjdogQYhlGTulsAbmnlv5Pc4bQ4/qSyzMa5dqlYlFtctAzb/LFqY26AiHTAkXY0Q40jHrWBP6YnuB0OiJ5tFk0yONZPZb56m6BvjjxUsv19wAqXRpU8XJzWZjfOQ7BrJ1uVd6RIlmnVcsuIe13eNRSsHJhtstoAu6vOvd0EyD3adjxBM12QAmOEp1NTKvu/6xg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=odhXvJEkAt78N5rSyxi7b4WKu//jCy/HfoNyhQ1kxcE=; b=d5XHbFIHeZjQKdPKcgx9YwCTggufuLueubj5dKmFw/GuSZf/3SRce2u2AzDxvRoZfAaHhh8rRq+AJ9F9jtfxeRWoKcamAU0bbDGayrz27DrTsgcvAxWFWfimrpHPyc7GFViJTuTU6saiR91XInXLQrd3do8n8oqnJPvxHOPwc8mLN/ylewBgEblxW3MiktNEBG7OMv4SfOBKt3JdQUicDwZ+87iJiuoEUNvYAdWxN+p5dH8jHmmwa2Oh3u5TFPB5usTX0cD1uBHJG8B9dZ+5H6C9Cwun1uWb0j5d7x8A6kTTihBUjegn3xCvJx579X5HuvPDzmLIkjviVXHsVq5p+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=odhXvJEkAt78N5rSyxi7b4WKu//jCy/HfoNyhQ1kxcE=; b=tmNNKVZvg0v0M+4y5MYoZvsau7fNyTPPx5yJR2VB8xnV3vZo7qd4oNh5bSQtG1JJPw/94pXwRhVskyDJgjbBHSSyf3TuzOz/Rs7IAwJngucW1kFn4Bywe9cwXw7kuz3MsqrlKHpjkrgsfp7icWbCKjbwfZNWyVq43J04dRXhG44= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) by MW4PR05MB8617.namprd05.prod.outlook.com (2603:10b6:303:120::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 09:01:05 +0000 Received: from PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66]) by PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66%6]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 09:01:05 +0000 From: Ajay Kaher To: rostedt@goodmis.org, mhiramat@kernel.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, chinglinyu@google.com, namit@vmware.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, vsirnapalli@vmware.com, tkundu@vmware.com, er.ajay.kaher@gmail.com, Ajay Kaher Subject: [PATCH v3 01/10] tracing: Require all trace events to have a TRACE_SYSTEM Date: Thu, 1 Jun 2023 14:30:04 +0530 Message-Id: <1685610013-33478-2-git-send-email-akaher@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685610013-33478-1-git-send-email-akaher@vmware.com> References: <1685610013-33478-1-git-send-email-akaher@vmware.com> X-ClientProxiedBy: SJ0PR03CA0181.namprd03.prod.outlook.com (2603:10b6:a03:2ef::6) To PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR05MB8703:EE_|MW4PR05MB8617:EE_ X-MS-Office365-Filtering-Correlation-Id: 75a50397-3b12-4630-27ea-08db627ebb7e X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vVxtnxS/cQHF1zTyqa9Xg4WzyaD5eIpkKIHlpjIjeLeCSUBVqTgIKmvm8SpYzmzXKnIHeAacx0Unp1fYPjEJVHVA9bKa4waLM4wcjZgZugu3T4z+O0n85s/oNT7lfCU5OuxKq7mYOLe02W6wfNLsG/Ro72/sOr6c63yEf5Attdk9FGyLlJhfaWBCUpDPOAmd9pMyMOH2RPbjLckaMe9oXuyRr+CZ+uVhW3DIQqNM1yURFKjbl16qtrnf13R8alh4lWgBv6In9S7QvIc2VuhdeYd8kWOIwGxcfXm5I4m4Jw4SkrGdxx99rziln6gbXKwyR4Ga7ge9WvuZ+eWSm8mQNeY0bbHxFWfBfJyb/GzRTXFkJtQ8mrLHvY5I71N5KEIl0JpX56EV0NFm8ZnFEUcNx86AC39vxEGG5Fja4MDnTD916jranwUwf88gRLvQ8VnUGUH/0FwSgwkMHp9vdrneZ8ZW9IyRHK0UIlB+g44XQfBXhtoM2C/UUN3/TnTKOCpfvX6ELxkSX7bLF9SuGPu8Z/Ut+xPpmlA856jSptwM7WsBxzJAQAvAGpCBRiUgqDMNV3VGfOI/QhJwkAU7bPmgXE6Hrod4+1T8fvCKusUJsPDJiD8HWQiWiYWScdVdIvFp X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR05MB8703.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199021)(52116002)(6486002)(186003)(5660300002)(41300700001)(107886003)(36756003)(8676002)(38100700002)(8936002)(26005)(6506007)(38350700002)(83380400001)(4326008)(66946007)(2906002)(66556008)(478600001)(66476007)(2616005)(6512007)(86362001)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TKXRfn/QKf2VpDWQQ20CGNBy0thXzD4aqOxamPPmVrNZ5ksiyde+IFNRukBk8JpV3tCezstetkzEMG5wQZIxQt4rbeyQOGNwfe2kxah+VH7X/7i7s0yet5U/of2TBcd0fUu4DzntQhT/kye7hAfsgdKg79p9Re45mMswiZQ+ORzDZKFedeW/4KoLH4LKbgQ/9GIUb9lo3qPxP0aasoSeN3OmVc7F+i5F8sfVUj4zHv4LtUeT+6PNTEvRjDbywUL+w0zLYoBN5h+yEr9g6qt6muudLXQz4s7JM7+rAkcvRiVwEbm9HONWO5TqhZ5EbNR9/cLRgKVmipvK5iLGB9ZDQdBeJImiVqA5fF4sj2frRmB/lvS/OyEThR3xGPsXNdTjm4nfPkvNxx1Y4HToGkU35abFhWkFhfj3d4E7agomMg9RkFKKf6YYJKNONAF+spk1uDWSUfip26gEuK4yXaoHMsoloZ/KjwDhEiKjJiuWpSsPrBsTcJTI1XGDIHN/NxwWvu/jCrm62D6iPPVCMyLWCoh3UQ5z6S+YJKQwXqgrWgi1WO0LDM4Lbxs4QEOhDhbnIQ3D9DSgAnohTzjjVSljvTJxromo1oBQVKFiSmHissvMp19/Y9ateWyH3ZoW4sBYk0B6vsdzth6KSr/nV3mrFasK22ID/HM8Q1+nvyKaFTzNlIpjG71eFQd7gg6GH064/AFLLSbzPa1gd5O0qcYquIP/ryuzbmwEeT7uxf2lNTPx7xIVAJPCJRWblzhvPxiYAnhpmJJ8+n015s33tEI/EbaOqJDJ//qYrsa0nRnfh5qAa5cg5xsm/Xi2g37UppXUKOS36+Z0lDIRE7mAZVH5pTSnjwPQ1+KKqjSnrEIVVGC4pJp5+oubwIygSRnD9MIy4hcHGJ3pclsw4T1ammhIqpnrn5RZDsKwmev4BjPrp3IuCJYUP289W/0t/a6mSy7SgdOVTANotFcNHgqsem0ZqA4A/4ftqQWVTrHRUFK+6lXthBL29NH7b9klj4+yVzIDtYMD0d7hJjhT287EnifWAWH0YO757iwhH5tF99jbO5QI+u4WqFEGK5nItjvXCZ9kkUDMjykkjCL2+23xHqi7mMhgeyWTnZYD/FTz9QlxhK+DYbB/IK6fkmKu8IpHPOvhTs0jop1wK9h+yr+8lONZrc5yv6Ff2Au028Z/E58cJ2Jr2Qivi/zMu/fT+pgbu2pD5CQWSdcoDiemdcEjfMeoFLin1C0pZ2HmcaE1FXltDUIwWwj/Tdj121O2LiJ1RAfUmcyqTUgeN230iElYL+6+n5DbAFzJzNGDPreLWDsJW/twSqku3xyydKc0DVwDHIvzDjifxhWFpPNtEaoAhhipCfmThfWZXkhsTIfeXVprjAOPrDRLDkzNLK2B0htYqWrz7WPvmObdbKGIa+v58vDf3tfaeET79+W+Xg7TgTEr347JPvLQYGYp/OpEmw4awhreUc877n6KvO2hKK0H2BH51w5TPF0BFLPuzvWp0gku4MtDx+KrtrZxGoZQBypaNeVS6w0viU135GIP/QESPflwtOBwrYs2uOyX+DfrWiGrPYr0QzkSknB5iV0/J/5zo/8a X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75a50397-3b12-4630-27ea-08db627ebb7e X-MS-Exchange-CrossTenant-AuthSource: PH0PR05MB8703.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2023 09:01:05.5598 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1yXTtUdSNZcUD/pW93GEcHJkpgotJF0bMpr1ZU4pCjbKZr2rbW//LyVmSOiVB88H4R47prD8nvi0qPRYzdHxxw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR05MB8617 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org From: "Steven Rostedt (Google)" The creation of the trace event directory requires that a TRACE_SYSTEM is defined that the trace event directory is added within the system it was defined in. The code handled the case where a TRACE_SYSTEM was not added, and would then add the event at the events directory. But nothing should be doing this. This code also prevents the implementation of creating dynamic dentrys for the eventfs system. As this path has never been hit on correct code, remove it. If it does get hit, issues a WARN_ON_ONCE() and return ENODEV. Signed-off-by: Steven Rostedt (Google) Signed-off-by: Ajay Kaher --- kernel/trace/trace_events.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 654ffa404..16bc5ba45 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -2424,14 +2424,15 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file) /* * If the trace point header did not define TRACE_SYSTEM - * then the system would be called "TRACE_SYSTEM". + * then the system would be called "TRACE_SYSTEM". This should + * never happen. */ - if (strcmp(call->class->system, TRACE_SYSTEM) != 0) { - d_events = event_subsystem_dir(tr, call->class->system, file, parent); - if (!d_events) - return -ENOMEM; - } else - d_events = parent; + if (WARN_ON_ONCE(strcmp(call->class->system, TRACE_SYSTEM) == 0)) + return -ENODEV; + + d_events = event_subsystem_dir(tr, call->class->system, file, parent); + if (!d_events) + return -ENOMEM; name = trace_event_name(call); file->dir = tracefs_create_dir(name, d_events); From patchwork Thu Jun 1 09:00:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kaher X-Patchwork-Id: 688040 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EE80C7EE23 for ; Thu, 1 Jun 2023 09:01:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232464AbjFAJBX (ORCPT ); Thu, 1 Jun 2023 05:01:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232471AbjFAJBW (ORCPT ); Thu, 1 Jun 2023 05:01:22 -0400 Received: from DM4PR02CU002.outbound.protection.outlook.com (mail-centralusazon11013010.outbound.protection.outlook.com [52.101.64.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 98C0313E; Thu, 1 Jun 2023 02:01:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JiOy7XiUkYNMYv8q9t2390swVr/GPFtsJe9tDbjyA1nrJp3xC8znb48hKRfJgGYU0SfhZDmIRCABNU4BCrOnSdFy20v+HvhvG/2zZdF6SXGeq9Z/jW/qVQg89BW5LgKOjFdQ+fh4nZ+PTZcZjTi+9/Be5qa+7Jq4NlpfL1yKhEVaJ+a6dcG7iC2qOC4JD0/TntgnhytjjaGYEyM6HBmxLYAnS5F4+FXbAPvA+tU7TXVGp6b9jxrPVww/LyCahog3YSMGjyo9Z48N/y4br4a6vCS7BylUlrbQ+joe8ew8w65sJ+SYnQHFVwl7rXpGyZgbMNEpQ9WXGYwULZHKiPRSAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IJd11CAc5dheYgkR3ktRnnrrHtK+8Ah9gcB1WzL+714=; b=l5MpVT/H7jDDg1ES9lpAAlirQf4st/H5iQeFggbAMkzjoYKeK2zrEg2JYMR+Fx7wWqVRNCiNvUBSdZ/SVortQ+dFbLCBcnayx0STy1EoZt9CTQyQPCCX/pYej07MRU1HXJxruvXzC2o/owk53iEkaZMq8kqU2/WGRWt8TZRFFwTWVUIgxnQwGIHDoxWXQTlxTksz8AKQ94jJ38z/NjVO5Kcefo8/ZGXRcoMRtthPXXCioKuUCoPz9fBrDKDRvhfQwQA1bDGpqP5c/e0GMJTQQoDBnHlczN32YkEj60pSqK/VSsioYfkDfcIkHFLvgHK4bpqEc+R3DE1LhU2qgYyw7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IJd11CAc5dheYgkR3ktRnnrrHtK+8Ah9gcB1WzL+714=; b=ZAkQVMIXV92l2zwqOdlSLyC2mMd5yYRz7vizvpBEE/N3qsflg+Kc0oZrWk/mB1fJAgWzuhuvFg5lv8Ug6ViqDSeDgxIRNIm0oWxu3BoFANnJMZ7DN3be7lFJHnNbTfAabY3upbtRBVm1fq8RkGTlaQ71eDJM7jCGINre0KMmyvE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) by MW4PR05MB8617.namprd05.prod.outlook.com (2603:10b6:303:120::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 09:01:07 +0000 Received: from PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66]) by PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66%6]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 09:01:07 +0000 From: Ajay Kaher To: rostedt@goodmis.org, mhiramat@kernel.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, chinglinyu@google.com, namit@vmware.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, vsirnapalli@vmware.com, tkundu@vmware.com, er.ajay.kaher@gmail.com, Ajay Kaher Subject: [PATCH v3 03/10] eventfs: adding eventfs dir add functions Date: Thu, 1 Jun 2023 14:30:06 +0530 Message-Id: <1685610013-33478-4-git-send-email-akaher@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685610013-33478-1-git-send-email-akaher@vmware.com> References: <1685610013-33478-1-git-send-email-akaher@vmware.com> X-ClientProxiedBy: SJ0PR03CA0181.namprd03.prod.outlook.com (2603:10b6:a03:2ef::6) To PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR05MB8703:EE_|MW4PR05MB8617:EE_ X-MS-Office365-Filtering-Correlation-Id: 11bc62d2-f35f-4ce4-e418-08db627ebcac X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0CB78mF8vG5vRqOm7CXzp5XO6ccKb5yXKCSv8vMyKr2ip+lL8qp1bh0XMO4ExhQ9Z46kfkWooePX0XB5xAoF6bgLqPN1ivdCuLzLPdegOqVhxEIENPcUjpuF8wShVds2KpbKnCQmqOdc+sExM/bn3A2aKn0KYYo8LnT8HRmJ40cliTNtN8FOTWpdMtbETt87sYla/bhbvXWsALdXhEFMY0Rawc5bHxsUqjoB+HVg6nHm3VRhLjI/OXz9O0aqSKT1+48rb7IoOQO8aZekTmo/wRknlezTsPsylTYzbGocvtycbPo90uZfaFv0+FAVON+aheSE1MnlDF70qWOX15XTo7AURzCq7QkwdQSDhqLvgJaRpGu1aof4TL2g1iwz6aDEP0IF3jhMHjYnMM+W2HZ7ifZxbQy8ERzvwFqm8fyzUpVj/8fNqdu0FWJJsi3flAPUH+6MQeJfRTJ7IHlzHTLiNaShw+GqzGrs6gF8MPj6hjYHKoVTA2HoRB/dt9PbY46PfYP2fXglKdhM805KemKRq+xa1ZYNZnfojzNHRVxCyiWzrEiM84ruG+Vxx7Wpye0XBCGk3zVlANxAbcsYLko/txcJkwgzG9+zu44M2qdhuV3DFmjHvlPhYP71+GEf/82eLCP6ubFAjEvFoCF8QcB5cIGutEVHPyKYkvOQey8CHac= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR05MB8703.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199021)(52116002)(6486002)(186003)(5660300002)(41300700001)(107886003)(36756003)(8676002)(38100700002)(8936002)(26005)(6506007)(38350700002)(966005)(83380400001)(4326008)(66946007)(30864003)(2906002)(66556008)(478600001)(66476007)(2616005)(6512007)(86362001)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cR1D4IIeVKLPAgK+FVZtBvkWLKc1pVh+DK2icgJ77m7OhYXy2VdvqoBMGVprjSl9NaMnjvZTNjoVFgUlciGtS0VekbyviwBZ+H0C+DWPKfI4yqWSYSitVCv9+UOvZnosB74NFVVn5HMsgIPY8E5AuX2UaVQ3focLAo66nmsRvX8uWscJvd/xbvsRG4cwGmX/1SFZ7Fa2JkUWsyJF7Cy6PnWjJRBLQCkhq9zbVYLbFSEXOB4NkSPzWcUN/s2Db+FEwEww84XoQptEX7g7yVaAKARRjgNj58gyWoNbjTuRu8CYpC0vWUEtUcJ39PmKeEOQ74Z8DgB3wPJY1FpXroamn1k5YWXwg5rgujo663dS27/nJe1Q5XNlh/bwJVc8jGcXonvCI/JecjkpBPAlZ6SvXj1vwBQk94ReFgfyJbnkh5sDj5BPCXEQCNW24DUqSqHeAlU9SfCML5i7bJdiMQI6yJBhofx8FN8mY86lGgKlLjwCsN4/xSuR0gThWebobV0ozvcDnUGhseJKVEFkl5M6cIRcH06/yj/BR2ERarYAntTCWPPtfFJpDCCGWu2PvqRSm8E5oHPWkb2jBsGNOtkUNTqW3l9k8zOJiSzCCt5TTsU5DAsTw4nudEZOTOgrkECO5bl2xvnjiKp0ZzvfOuIFna2Bp/pR/qTOcrrqEO5se98Qp1c4Hfxuo3ZM3ZtqGjtC7N5/FzTrxOT7+b/foHG45hgOxVQbLq750Lwv1OC28w2YVp13wEwbc9dBMttvCAiXIlhzgEOtR5F9Mhm2+AYovyDwiN5E+ry6+Qi6evP6bzamZxn7TIrzKPQ8pE68ekKitr0iJj7waLDjkSnOxhfRKxAHETtqnb/FWUBxcbMCKdb0ITCc5Ab5V3DjS0nKLX/wRGBU6OsO2HmJF1Dir7tLLbRuYUQLk223KNRAWQDSk1KNryuMSQaN/FG9H5Bqk2vdS9yD8C3UeJMbe7OvljB1L511oaVcd48ANppI29EvkBx6D13zKcGFEdMVjfpjdt2XsCaPD16bSvDxNCrk385gW2wrjZs5blQ3weNA6BUJRqlRuI7ReRpglT0vuBfIu4gwald6sLY9nihWNvl/HbqJTekkV7DJG9VOMFn7zOrqaenpVbRiD/QuEp1mIDXCZOPH/Gb9BCRH4nNKhpho7wdDeedNaOy7rEXMHTaiy9fDUi7EH8ENrIoWQAdZUbHcobHCa0HJ1qstv6EdpOBtJREEhlvu+88ptesFD+AbZsAug2ilR/Df66Y+T2/tfOYNJu5fSOYf9M1iJkB8Ii2HqG4d9UAicuV/RBwiGdtEdvGu8iaIgEN3DiPLl60NS9NjFt4Wip+XpJCe6NBD0QQgW76ZdSw9/x4TuzQlclxsuK5GNs1Xo5WbpKgCp5ESylbWNWLID0WPx1/waNyvz3e1irCD1T+0LwzyN/WlkY0xIh29AN/WDJzhmpCoIt0K/oVVeIdofOcYiUxScJP8TrflYmBzpub2eOUNhHCCYtpq3XM/18vHNm6UOw/HdSIlzqGqKcPCN+Ccupv5bapTOWSX9jiTpkWPl74Vk9qot4BNafmVEzzXpmHiK8q2cm52flRzvIl3 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11bc62d2-f35f-4ce4-e418-08db627ebcac X-MS-Exchange-CrossTenant-AuthSource: PH0PR05MB8703.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2023 09:01:07.6305 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CBMT6FQM2bYaxPWkQdFxQyqX1MvBLNOq6fq6vazEp4R7uOBedSI2Dm6ittMoV8KbP5j6QzFn5Apj8yWwTTu7ZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR05MB8617 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Adding eventfs_file structure which will hold properties of file or dir. Adding following functions to add dir in eventfs: eventfs_create_events_dir() directly creates events dir with-in tracing folder. eventfs_add_subsystem_dir() adds the information of subsystem_dir to eventfs and dynamically creates subsystem_dir as and when requires. eventfs_add_dir() adds the information of dir (which is with-in subsystem_dir) to eventfs and dynamically creates these dir as and when requires. Signed-off-by: Ajay Kaher Co-developed-by: Steven Rostedt (VMware) Signed-off-by: Steven Rostedt (VMware) Tested-by: Ching-lin Yu Reported-by: kernel test robot Link: https://lore.kernel.org/oe-lkp/202305051619.9a469a9a-yujie.liu@intel.com --- fs/tracefs/Makefile | 1 + fs/tracefs/event_inode.c | 272 +++++++++++++++++++++++++++++++++++++++ include/linux/tracefs.h | 29 +++++ kernel/trace/trace.h | 1 + 4 files changed, 303 insertions(+) create mode 100644 fs/tracefs/event_inode.c diff --git a/fs/tracefs/Makefile b/fs/tracefs/Makefile index 7c35a282b..73c56da8e 100644 --- a/fs/tracefs/Makefile +++ b/fs/tracefs/Makefile @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only tracefs-objs := inode.o +tracefs-objs += event_inode.o obj-$(CONFIG_TRACING) += tracefs.o diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c new file mode 100644 index 000000000..a48ce23c0 --- /dev/null +++ b/fs/tracefs/event_inode.c @@ -0,0 +1,272 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * event_inode.c - part of tracefs, a pseudo file system for activating tracing + * + * Copyright (C) 2020-22 VMware Inc, author: Steven Rostedt (VMware) + * Copyright (C) 2020-22 VMware Inc, author: Ajay Kaher + * + * eventfs is used to show trace events with one set of dentries + * + * eventfs stores meta-data of files/dirs and skip to create object of + * inodes/dentries. As and when requires, eventfs will create the + * inodes/dentries for only required files/directories. Also eventfs + * would delete the inodes/dentries once no more requires but preserve + * the meta data. + */ +#include +#include +#include +#include +#include +#include +#include +#include "internal.h" + +/** + * eventfs_dentry_to_rwsem - Return corresponding eventfs_rwsem + * @dentry: a pointer to dentry + * + * helper function to return crossponding eventfs_rwsem for given dentry + */ +static struct rw_semaphore *eventfs_dentry_to_rwsem(struct dentry *dentry) +{ + if (S_ISDIR(dentry->d_inode->i_mode)) + return (struct rw_semaphore *)dentry->d_inode->i_private; + else + return (struct rw_semaphore *)dentry->d_parent->d_inode->i_private; +} + +/** + * eventfs_down_read - acquire read lock function + * @eventfs_rwsem: a pointer to rw_semaphore + * + * helper function to perform read lock. Nested locking requires because + * lookup(), release() requires read lock, these could be called directly + * or from open(), remove() which already hold the read/write lock. + */ +static void eventfs_down_read(struct rw_semaphore *eventfs_rwsem) +{ + down_read_nested(eventfs_rwsem, SINGLE_DEPTH_NESTING); +} + +/** + * eventfs_up_read - release read lock function + * @eventfs_rwsem: a pointer to rw_semaphore + * + * helper function to release eventfs_rwsem lock if locked + */ +static void eventfs_up_read(struct rw_semaphore *eventfs_rwsem) +{ + up_read(eventfs_rwsem); +} + +/** + * eventfs_down_write - acquire write lock function + * @eventfs_rwsem: a pointer to rw_semaphore + * + * helper function to perform write lock on eventfs_rwsem + */ +static void eventfs_down_write(struct rw_semaphore *eventfs_rwsem) +{ + while (!down_write_trylock(eventfs_rwsem)) + msleep(10); +} + +/** + * eventfs_up_write - release write lock function + * @eventfs_rwsem: a pointer to rw_semaphore + * + * helper function to perform write lock on eventfs_rwsem + */ +static void eventfs_up_write(struct rw_semaphore *eventfs_rwsem) +{ + up_write(eventfs_rwsem); +} + +static const struct file_operations eventfs_file_operations = { +}; + +static const struct inode_operations eventfs_root_dir_inode_operations = { +}; + +/** + * eventfs_prepare_ef - helper function to prepare eventfs_file + * @name: a pointer to a string containing the name of the file/directory + * to create. + * @mode: the permission that the file should have. + * @fop: a pointer to a struct file_operations that should be used for + * this file/directory. + * @iop: a pointer to a struct inode_operations that should be used for + * this file/directory. + * @data: a pointer to something that the caller will want to get to later + * on. The inode.i_private pointer will point to this value on + * the open() call. + * + * This function allocate the fill eventfs_file structure. + */ +static struct eventfs_file *eventfs_prepare_ef(const char *name, umode_t mode, + const struct file_operations *fop, + const struct inode_operations *iop, + void *data) +{ + struct eventfs_file *ef; + + ef = kzalloc(sizeof(*ef), GFP_KERNEL); + if (!ef) + return ERR_PTR(-ENOMEM); + + ef->name = kstrdup(name, GFP_KERNEL); + if (!ef->name) { + kfree(ef); + return ERR_PTR(-ENOMEM); + } + + if (S_ISDIR(mode)) { + ef->ei = kzalloc(sizeof(*ef->ei), GFP_KERNEL); + if (!ef->ei) { + kfree(ef->name); + kfree(ef); + return ERR_PTR(-ENOMEM); + } + INIT_LIST_HEAD(&ef->ei->e_top_files); + } else { + ef->ei = NULL; + } + + ef->iop = iop; + ef->fop = fop; + ef->mode = mode; + ef->data = data; + ef->dentry = NULL; + ef->d_parent = NULL; + ef->created = false; + return ef; +} + +/** + * eventfs_create_events_dir - create the trace event structure + * @name: a pointer to a string containing the name of the directory to + * create. + * @parent: a pointer to the parent dentry for this file. This should be a + * directory dentry if set. If this parameter is NULL, then the + * directory will be created in the root of the tracefs filesystem. + * @eventfs_rwsem: a pointer to rw_semaphore + * + * This function creates the top of the trace event directory. + */ +struct dentry *eventfs_create_events_dir(const char *name, + struct dentry *parent, + struct rw_semaphore *eventfs_rwsem) +{ + struct dentry *dentry = tracefs_start_creating(name, parent); + struct eventfs_inode *ei; + struct tracefs_inode *ti; + struct inode *inode; + + if (IS_ERR(dentry)) + return dentry; + + ei = kzalloc(sizeof(*ei), GFP_KERNEL); + if (!ei) + return ERR_PTR(-ENOMEM); + inode = tracefs_get_inode(dentry->d_sb); + if (unlikely(!inode)) { + kfree(ei); + tracefs_failed_creating(dentry); + return ERR_PTR(-ENOMEM); + } + + init_rwsem(eventfs_rwsem); + INIT_LIST_HEAD(&ei->e_top_files); + + ti = get_tracefs(inode); + ti->flags |= TRACEFS_EVENT_INODE; + ti->private = ei; + + inode->i_mode = S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO; + inode->i_op = &eventfs_root_dir_inode_operations; + inode->i_fop = &eventfs_file_operations; + inode->i_private = eventfs_rwsem; + + /* directory inodes start off with i_nlink == 2 (for "." entry) */ + inc_nlink(inode); + d_instantiate(dentry, inode); + inc_nlink(dentry->d_parent->d_inode); + fsnotify_mkdir(dentry->d_parent->d_inode, dentry); + return tracefs_end_creating(dentry); +} + +/** + * eventfs_add_subsystem_dir - add eventfs subsystem_dir to list to create later + * @name: a pointer to a string containing the name of the file to create. + * @parent: a pointer to the parent dentry for this dir. + * @eventfs_rwsem: a pointer to rw_semaphore + * + * This function adds eventfs subsystem dir to list. + * And all these dirs are created on the fly when they are looked up, + * and the dentry and inodes will be removed when they are done. + */ +struct eventfs_file *eventfs_add_subsystem_dir(const char *name, + struct dentry *parent, + struct rw_semaphore *eventfs_rwsem) +{ + struct tracefs_inode *ti_parent; + struct eventfs_inode *ei_parent; + struct eventfs_file *ef; + + if (!parent) + return ERR_PTR(-EINVAL); + + ti_parent = get_tracefs(parent->d_inode); + ei_parent = ti_parent->private; + + ef = eventfs_prepare_ef(name, + S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO, + &eventfs_file_operations, + &eventfs_root_dir_inode_operations, + (void *) eventfs_rwsem); + + if (IS_ERR(ef)) + return ef; + + eventfs_down_write(eventfs_rwsem); + list_add_tail(&ef->list, &ei_parent->e_top_files); + ef->d_parent = parent; + eventfs_up_write(eventfs_rwsem); + return ef; +} + +/** + * eventfs_add_dir - add eventfs dir to list to create later + * @name: a pointer to a string containing the name of the file to create. + * @ef_parent: a pointer to the parent eventfs_file for this dir. + * @eventfs_rwsem: a pointer to rw_semaphore + * + * This function adds eventfs dir to list. + * And all these dirs are created on the fly when they are looked up, + * and the dentry and inodes will be removed when they are done. + */ +struct eventfs_file *eventfs_add_dir(const char *name, + struct eventfs_file *ef_parent, + struct rw_semaphore *eventfs_rwsem) +{ + struct eventfs_file *ef; + + if (!ef_parent) + return ERR_PTR(-EINVAL); + + ef = eventfs_prepare_ef(name, + S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO, + &eventfs_file_operations, + &eventfs_root_dir_inode_operations, + (void *) eventfs_rwsem); + + if (IS_ERR(ef)) + return ef; + + eventfs_down_write(eventfs_rwsem); + list_add_tail(&ef->list, &ef_parent->ei->e_top_files); + ef->d_parent = ef_parent->dentry; + eventfs_up_write(eventfs_rwsem); + return ef; +} diff --git a/include/linux/tracefs.h b/include/linux/tracefs.h index 999124459..aeca6761f 100644 --- a/include/linux/tracefs.h +++ b/include/linux/tracefs.h @@ -21,6 +21,35 @@ struct file_operations; #ifdef CONFIG_TRACING +struct eventfs_inode { + struct list_head e_top_files; +}; + +struct eventfs_file { + const char *name; + struct dentry *d_parent; + struct dentry *dentry; + struct list_head list; + struct eventfs_inode *ei; + const struct file_operations *fop; + const struct inode_operations *iop; + void *data; + umode_t mode; + bool created; +}; + +struct dentry *eventfs_create_events_dir(const char *name, + struct dentry *parent, + struct rw_semaphore *eventfs_rwsem); + +struct eventfs_file *eventfs_add_subsystem_dir(const char *name, + struct dentry *parent, + struct rw_semaphore *eventfs_rwsem); + +struct eventfs_file *eventfs_add_dir(const char *name, + struct eventfs_file *ef_parent, + struct rw_semaphore *eventfs_rwsem); + struct dentry *tracefs_create_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 79bdefe92..b895c3346 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -359,6 +359,7 @@ struct trace_array { struct dentry *options; struct dentry *percpu_dir; struct dentry *event_dir; + struct rw_semaphore eventfs_rwsem; struct trace_options *topts; struct list_head systems; struct list_head events; From patchwork Thu Jun 1 09:00:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kaher X-Patchwork-Id: 688039 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50124C77B7E for ; Thu, 1 Jun 2023 09:01:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232507AbjFAJBo (ORCPT ); Thu, 1 Jun 2023 05:01:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56986 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232494AbjFAJBl (ORCPT ); Thu, 1 Jun 2023 05:01:41 -0400 Received: from DM4PR02CU002.outbound.protection.outlook.com (mail-centralusazon11013010.outbound.protection.outlook.com [52.101.64.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 642B6129; Thu, 1 Jun 2023 02:01:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ChreMwsM1mAKDoSy4HQvX+hGWKyK/sWugxNMg3w6lnaQVQndWoFrAlSTVXQ89t40oneWXwTwnYiVrlsFqOipYrFxP6AsxQnLzc4DjsURyBJSIZwoFtbfuYCDV1dnftMhNwyn6T2PpXdz/D85F0OjuY8sISdehZx7uItcouB426tk6rGjnfoiuBIOh/haOP6gi9R4zaUlqg+ZsDYQ7oLzVLcS4DCXSiCwNH+TtWhE11tG9UvTEKxHMlxGkrxeFRlQe59eplW8D/Syh+KC3X5+Hr0Cg6vIwPH9rITMzZs0djrZTweyDp434PQKsuc92yorm2wxOMDBb4NwGn2wzEDH5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OKQ39MLJrYfw3rrOHuty+6vC4CA9YsPn8r5/EP5y9V8=; b=dGccKH6pdLAdLZnAtOn1LlXEBB8J5SNSI0jjoklAnDgGNgdP4mqNn7rFTehQmdsmmU2nSR6ZgIi8qkJqhmoG/kt7S7iyGZqkKy2tO/1BJLwjzDuhzOSEFgnPJsyJ05V16jwyBneF5xUy7+B8NdykZVGCoNjmF135863Xxgywyd5JrwgaEJV5AZXm9E1qoaGpd4e4X9tv6tx8IysYhbNe/dbaecK2pb0dSA+mDx0MIkmwAFwcGExjzaG3WRdkgcuKOip5G+sjgt+VV9/CssedpbfQrdDhHSiu7Pc7vVTPnd0BPJLJPzQgGi6SeKlNoPdhwfYeil+rjl2pJqjJ0kcw7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OKQ39MLJrYfw3rrOHuty+6vC4CA9YsPn8r5/EP5y9V8=; b=I2KsqTBtzLgXej5cKIUYCQKgn9r/fSSHtG9M9ugJNuMQs1FWWgW2VyEegCBfLmHKnSxMnH+LFHXV/UKBo1H4+wsCQCTwgZi9GWskk9Hmi3r3ACUcVh4u+xvkJJvaQq/reIBeIU4o1kM0cGAGNkWehVovMBHeLpfK/r4TQ9sG5NE= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) by MW4PR05MB8617.namprd05.prod.outlook.com (2603:10b6:303:120::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 09:01:10 +0000 Received: from PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66]) by PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66%6]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 09:01:09 +0000 From: Ajay Kaher To: rostedt@goodmis.org, mhiramat@kernel.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, chinglinyu@google.com, namit@vmware.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, vsirnapalli@vmware.com, tkundu@vmware.com, er.ajay.kaher@gmail.com, Ajay Kaher Subject: [PATCH v3 05/10] eventfs: adding eventfs file, directory remove function Date: Thu, 1 Jun 2023 14:30:08 +0530 Message-Id: <1685610013-33478-6-git-send-email-akaher@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685610013-33478-1-git-send-email-akaher@vmware.com> References: <1685610013-33478-1-git-send-email-akaher@vmware.com> X-ClientProxiedBy: SJ0PR03CA0181.namprd03.prod.outlook.com (2603:10b6:a03:2ef::6) To PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR05MB8703:EE_|MW4PR05MB8617:EE_ X-MS-Office365-Filtering-Correlation-Id: a8bde3f0-1f5f-4217-2960-08db627ebde5 X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TXf8Q5wI63j3XCVnJMLa5z+1MGKh7Tdz6JkXwM8OXol6GpIgr6MvjEaKlAboTgi+f2XKGAAbsfSWGzsoVVX1TJpmHPlXVrrfAzqHpzMoUuFY8LUWF/TWaanK41bbwuaNay2CV7LCLr/gpbR8lXFZg1w6mai0faH5HVr7JJ7Xp3j5ltbuJWRXQGUMAxJhrfRtH57KsFToOGJqd/shlD3IiWUdfwyJwIzcbTwB1Xj8h4kVH+sVFI3mUZWQmq2RXmzU3T+q7cdVB6eqYGhmbdBeMqInhKUqyFHer4+4uEWMvv4T57cXKmMP8xNfgOz7AbhllUAKnmKAO3RqdWdtENMRUNICcnxgg55OMDDXsxpTBX1KpMyhcSLhBPsw5jyTAxPacF3kuR56uMf1D97xF3mqG7D7RbdtN6LbOexXFUdHrQ8xj3ds82sYjBnguIg72ReCCSfTRLdE+4dcd/zglgqva2z/Koo/yq03pJ+MNceDADFdhuydsplpJzpGNg/Uix6CNtMgWBaTOMVASVgLw9v3O7W8N1anDqp9A7eZ9WWvnuy7e4/6TH26hckfYxc+vtyMpOSWZA7dQoxyqtZIoscIHmsDM5qHim/CQYgKD2RV944vdpQOezri1hAkIDXw1i9RhnzCUXi7Sb+XHD+Hn/TNjPLWmc7+wjcVzBrljZRua6c= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR05MB8703.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199021)(52116002)(6486002)(186003)(5660300002)(41300700001)(107886003)(36756003)(8676002)(38100700002)(8936002)(26005)(6506007)(38350700002)(966005)(83380400001)(4326008)(66946007)(2906002)(66556008)(478600001)(66476007)(2616005)(6512007)(86362001)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: FlsSsJnKDRnQIqLwcHM38euJaU/6gWUzOPtv4/Kw5Vqp59BsVUE5ADP9YwoCU81TnfeFJAOvFBxV+mh1yvAqYjgb+YDIfojMAwsT+4/it1bdKwisDI7GoLmwjg8cK9FUAKbkuZw5DqQoVfORtR0DuWmfO40rAYNdeXGuFUIpS0HLqWrUgdGTPMgRQQ4PS7y/Pg0kdQ/EcCjdQjHLDfAB3CrApYxprTEEftTRs6kvq3ZF8A3ooAjklpOnfIDtdonfaPOLHjeGR75LG0pOTEEEeycQtPIoLWivEZAt3T+7KNmXHc45dGXRv+Y0sb8IdRJk+IPGT5Ta+Furf0U2zK+ZTxBAPyPKCC+8zN4YN1ThtoZBhKmZvbME6jAGBB5skEQpxI8jCCWDnyzK//2GUPeeQ3utqgW/4fEduUrp8cEjkDBY/cZYcBYyRrc3w7n1bHeyRtVsfY8dywlaybFR/eGvAvOyzaMXXgYOB5JlU0hzewvybuI4CRFj2HtYm4F3ZCdm+27FfFVTzS3JYEQG3/UywVzX1VP1NpcczhGkwUiRMe4sdKo008AT1nSfXuQmuexyD6GrdqUUuFokb0BR8dwW5BONVvqYNj3jISaF2nUAEYA/vttvJ2hyKPA8S+bUDiAZ9r85Mae0LYwgI3krAVML/2zPOstPZuzKSI7pAx0ceUeJ2W+hXmBCdCwXLG5XpaSyhslWGnih0GQeVd3PiJLKPsi6CnwhH3TUl1i4+zEbSZkB1v6lCI6GgWd1CMtNLkE8k6jq/4kL7HK9dRsntPLo41d11ibw+WnpE7tSksHWtoCVCRopDuncZS+GnSR8LfsDn6U1qV6T82Ot4NoSZ1POqWfxPXZaQzMw7bIV3uaWO2HfVyhswddZOwKLN36b8Azu0bKj4HR+kcn6lsm9HWpec006gWwwAP9n1bZnb2ZbpKc0ehT8n3v27LY+iqsAcIe3in9/90zo077I4TiwYM2Km2AvXp59AM4TneEcdHrURrKw6WTB3lpZv3qrMO5zt6HEnQYyDXEgeUq1owaA7h6iN4jXiuM12kdZ2tcNYcEuN81TcGcA7XzryJ3e9B5BpgEiKVuxvxxQGWPiE0ak+DGaVhetauPWws/S9+1oAW/WVN8iXxODFplaHFB0POek0zxRfHZrt0H8T9+BXYpNo4rLV7MfDEJyWKHe3reWJHxnPa6IjZCp02dhdMNaQfkM3LFILqKcb82Ct3bT93kKumAdWYt240NkXgh983+NYdTQQUhrGHn9K8HA3bY80caIO3ZCxWrphatMRfpbySDJouZQcxAdHtP4eRpMsskkgGIYcsOV8pY2DdkkIyel9FxD7XYcGW2giGQA58IzxmBvhmQCrrsfhF7jJM/kTOtzN+3VtCCpzN8LAPirP6+Ikn8un1oJUE1zfb0AUZtcHHrsxSsRd38oI3qAYmdMAKrNu4P65mrhEZTtfqrJ+qeuQfoIvnAh0hMJBaDQ18MdMBE6NPOTdy2T469h6TH+yCsuSwMEbAZSeByY2hnwjVMARsaZRzN57FgNmYdDJRt6ixkoYP63QjRIW8kbPSTSwoCOJyBpX5i6j3i91DhQ4Dde2fMJJwOO X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: a8bde3f0-1f5f-4217-2960-08db627ebde5 X-MS-Exchange-CrossTenant-AuthSource: PH0PR05MB8703.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2023 09:01:09.8600 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Kncdd5r/GlqhjAnLbt68O9MxfEk8w0Wqihmby8oB3enroWx5Yh3jkeA97h6suPppMqndOXPWIiufgaM1E+Benw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR05MB8617 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Adding eventfs_remove(), this function will recursively remove dir or file info from eventfs. Signed-off-by: Ajay Kaher Co-developed-by: Steven Rostedt (VMware) Signed-off-by: Steven Rostedt (VMware) Tested-by: Ching-lin Yu Reported-by: kernel test robot Link: https://lore.kernel.org/oe-kbuild-all/202305030611.Kas747Ev-lkp@intel.com/ --- fs/tracefs/event_inode.c | 78 ++++++++++++++++++++++++++++++++++++++++ include/linux/tracefs.h | 4 +++ 2 files changed, 82 insertions(+) diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c index 17afb7476..874ef88bd 100644 --- a/fs/tracefs/event_inode.c +++ b/fs/tracefs/event_inode.c @@ -364,3 +364,81 @@ int eventfs_add_file(const char *name, umode_t mode, eventfs_up_write(eventfs_rwsem); return 0; } + +/** + * eventfs_remove_rec - remove eventfs dir or file from list + * @ef: a pointer to eventfs_file to be removed. + * + * This function recursively remove eventfs_file which + * contains info of file or dir. + */ +static void eventfs_remove_rec(struct eventfs_file *ef) +{ + struct eventfs_file *ef_child, *n; + + if (!ef) + return; + + if (ef->ei) { + /* search for nested folders or files */ + list_for_each_entry_safe(ef_child, n, &ef->ei->e_top_files, list) { + eventfs_remove_rec(ef_child); + } + kfree(ef->ei); + } + + if (ef->created && ef->dentry) { + d_invalidate(ef->dentry); + dput(ef->dentry); + } + list_del(&ef->list); + kfree(ef->name); + kfree(ef); +} + +/** + * eventfs_remove - remove eventfs dir or file from list + * @ef: a pointer to eventfs_file to be removed. + * + * This function acquire the eventfs_rwsem lock and call eventfs_remove_rec() + */ +void eventfs_remove(struct eventfs_file *ef) +{ + struct rw_semaphore *eventfs_rwsem; + + if (!ef) + return; + + if (ef->ei) + eventfs_rwsem = (struct rw_semaphore *) ef->data; + else + eventfs_rwsem = (struct rw_semaphore *) ef->d_parent->d_inode->i_private; + + eventfs_down_write(eventfs_rwsem); + eventfs_remove_rec(ef); + eventfs_up_write(eventfs_rwsem); +} + +/** + * eventfs_remove_events_dir - remove eventfs dir or file from list + * @dentry: a pointer to events's dentry to be removed. + * + * This function remove events main directory + */ +void eventfs_remove_events_dir(struct dentry *dentry) +{ + struct tracefs_inode *ti; + struct eventfs_inode *ei; + + if (!dentry || !dentry->d_inode) + return; + + ti = get_tracefs(dentry->d_inode); + if (!ti || !(ti->flags & TRACEFS_EVENT_INODE)) + return; + + ei = ti->private; + d_invalidate(dentry); + dput(dentry); + kfree(ei); +} diff --git a/include/linux/tracefs.h b/include/linux/tracefs.h index 1e1780a61..ea10ccc87 100644 --- a/include/linux/tracefs.h +++ b/include/linux/tracefs.h @@ -58,6 +58,10 @@ int eventfs_add_top_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); +void eventfs_remove(struct eventfs_file *ef); + +void eventfs_remove_events_dir(struct dentry *dentry); + struct dentry *tracefs_create_file(const char *name, umode_t mode, struct dentry *parent, void *data, const struct file_operations *fops); From patchwork Thu Jun 1 09:00:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kaher X-Patchwork-Id: 688038 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B2ACC77B7E for ; Thu, 1 Jun 2023 09:02:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232576AbjFAJCF (ORCPT ); Thu, 1 Jun 2023 05:02:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232519AbjFAJBo (ORCPT ); Thu, 1 Jun 2023 05:01:44 -0400 Received: from DM4PR02CU002.outbound.protection.outlook.com (mail-centralusazon11013013.outbound.protection.outlook.com [52.101.64.13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A69591BB; Thu, 1 Jun 2023 02:01:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bNtnqzgu3WztXdm09NW9akRh+O9iDwXFJCQwXrhFxLP6KBzLqQrnSsj6L2HQtLuNF380RcxjJ1w7+TBR8Edc3LYD7DoXsfRHwpnpTRHhT307vshStvAQeuGOJ0+FoKWKDVd0LR+TFJ8sMxKXoVXIBNgrAol8MsZhbSjgLc5xrEErCYV0YEzEifoVuZhfMT90+IOErToyGApHO0O/u0Fa6Jr5dpJ42y1L0Li50M4m+a4NbO2RCjhsQCHvs8gU7bKW19fImgpm+A56dLPxljhndDfj0bacjTRzqTCkXRQG4RkSSjJyHF4HNuvqXJuk/J0aYkAOtnBXHzCaxU/fCjHeyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KKcBE/cygiHxi/0/RQWaU+BoIShwEEohRRcN1Oc7Y0s=; b=XqeYetn9ocWGskDZLduMBIrKugYK8FQmG2V0lGMsLl4uhajlB3OJylVwtYSQl3ybM9quENM98G7jZIF6S0diOAVb2fNuqx4wfK2lmsCs1cH5CrdDrdx6v2VgC1sMPqmFk8T3E+GfI8+beAJtVoUFfsTjKOcT2pSZOOZgQXuSL4a2Dl0KdpKmmQwbLEMt4CH+ElRARW4ZPriGIM2D3j67OsyORfSl8NzKSwzagR//M2z+5w3ZJTRwtPXpyzC9pEkZ2bnQHnyh9N5tpu7QW5gW42K9MD9BcwSErMvU8qjluyV49Bjbsz6JGOvknsSWU8/x6L8uUM/xeyuJczeJQz4oDw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KKcBE/cygiHxi/0/RQWaU+BoIShwEEohRRcN1Oc7Y0s=; b=t1bpzWaMIJvig6yN/PkTa6WkjSuKtMAsaubI3Rz1eFLkNhuIVInGGqd+qj4i6YisBXZ3eazKy2VN7dsJlKfe1Rh9B9n6isSaZ59dGvAePJE2FcG4CP4FNSQAN/yNipUbaEC/zt1gJSp7WrOg4BTxTROxelzWg6n3GdbH2fXdC8I= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) by MW4PR05MB8617.namprd05.prod.outlook.com (2603:10b6:303:120::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 09:01:13 +0000 Received: from PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66]) by PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66%6]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 09:01:13 +0000 From: Ajay Kaher To: rostedt@goodmis.org, mhiramat@kernel.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, chinglinyu@google.com, namit@vmware.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, vsirnapalli@vmware.com, tkundu@vmware.com, er.ajay.kaher@gmail.com, Ajay Kaher Subject: [PATCH v3 08/10] eventfs: creating tracefs_inode_cache Date: Thu, 1 Jun 2023 14:30:11 +0530 Message-Id: <1685610013-33478-9-git-send-email-akaher@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685610013-33478-1-git-send-email-akaher@vmware.com> References: <1685610013-33478-1-git-send-email-akaher@vmware.com> X-ClientProxiedBy: SJ0PR03CA0181.namprd03.prod.outlook.com (2603:10b6:a03:2ef::6) To PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR05MB8703:EE_|MW4PR05MB8617:EE_ X-MS-Office365-Filtering-Correlation-Id: c32eaa0f-46b1-439d-92ce-08db627ec010 X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YakZ2LURSnyoKba0mTJUc+3Io+a0RH9MROIaIxpa2HrDetpVhD24/2xMP0LIK+fI3Huys9HwVeX/OtG6o8xOgg3SmTIaHKsvzLZvbW+uDb/0QjdVTEA4lzhXtrD0IEgtSTZcUnlodZg3IDeUBHdFntXPg3/1q0t/251G/Ihzf2AQ6oeQ7XO6zbhFoJmE528ZbR561Mo5neMOn+fWirbzHw7MR/uG1dgmB8jtufdKeTmooJXQG3WEDwkmDmHDIVAxDTUZus/uHoq48c2+Qbz10E5PxCazxWwrvBcWfhd+Fp5h/6TSsPU1dtZvxCr3SzXpY8lCf6FpLoLfO8ZueaukYleX+rOiItn0HNsGPrXT2PM/WuAbmuhClDDxO7WN7PzeekuM7EgP1eWcHyAlxSMGxETmmlRNU9/jS0cySD2vLwdRTgcvUEm9WPEltn6rDNOq4BnSKU5EX+n9tjQvevMMCTTc5/A6TGkE2xcU22it0tWvAAPaEz7ByeG0tA/z3ZGQQlRkRgimKNBqvKC7gE9cgFZG69FekkLosxY71N8il5AHfx5VblKmvSIu4azLxSiEDi2KuIFF5f9t+Pr4TLwsAGJ4x9hhFn/Tn1yJx6I2QwYk5bBsBGCLS2A4bfsFlL0J X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR05MB8703.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199021)(52116002)(6486002)(186003)(5660300002)(41300700001)(107886003)(36756003)(8676002)(38100700002)(8936002)(26005)(6506007)(38350700002)(83380400001)(4326008)(66946007)(2906002)(66556008)(478600001)(66476007)(2616005)(6512007)(86362001)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9swLPnYLmckwlLGPd464+QyDXHiqZ0Woz89N6n8nNJ48AH7Ntmh02zs0oTHGr7qBi+8ErxdgaLGiwPryB1DIdbpd6F80T1Y0njHev2U7+oZmpa4H8h+6buwJpvabGh0/lenEzZReLrWQn1OZNdZoEMk0/SZJGVUF7Fm6eauZZ0YzbmH9o02LL2qteIqL2u0YX1gE5AVG52X0fFRjytcqQVKDz4OMkYPfrGZSLBsaxF7OlkZlxY7skVE86Uf4QnmrtbuY+547DxVt8z2N1NV5I1GW76ZXZH6oKKbwiZ6WH2jkSQ66N89jUqjwd+oyh3yjekTpCT1v45ACx1wVuWS1lJVlhwc692cmBQpdIrHTt2qjO/V5f/GFFS/U54rnIILeSbaEu6AQbbrP6YL91wclMCrE88Rr3ICTcesO3PaIICbuOxP+OXrY5TuthpVwSI8f/a886HG9rYH2zANcjJ2lqoHgtb2SZ4vnUHOd7jInjcTE8lIzxlL6+eGa76wgeNsde/qiCBvroo2ocbparnbTJjUE/8o2CF/kZYw8iy7+zcovEcHsyAFLn7NdO7KsAf9FiaWeLUwxxhETNXqBJTAMx6zb5BpmUJr9keiJJJczWpEegGmuxZXO4knsI4RH4mt8LHjaTqd8DbDyrXRKKJ0i7Q/WQjfo9DmJ2Omhznz/naSStDg2yfDnWeHiyI+dDhipFmZwrJs6lW0GlVZqJ3t+Xo+LbW5/podq73qvBh3kA5CNwPolTrTiEqx4iS78gDia7ItFosHLDmKJnynYjMbpdbi7CaQULV4rsy2SfiRt7IMmQb/eQEtra0e0fTEoRoiOlndxSuxd8n8EG/4np4bQabB7KCbBP6c0zzbub6CfRR8Fl9uYButqz384NY0l9//xXVz+w5jdR0gImn0ZoytS2ZXNDCkXEvBuqOLgt5iHLam60DyEzm5BmQfnRkK+QLoOZDFO+sy3ejWJgpln52eg2lLhlbQzB6ECoghf58rQKYS4KwywrI3uXNKH8hss1Ugvj/eiRrZq1wGX93aA8UIqG6d6+q396av2E3q3ZWo1b3LQ/2dJ106qQg1SWk7aPCjuWCdjgHhAR1kVAom6TeH1ZTLo4osdeGDqMKOwR7pbCCemdzfUwJYZY6sNJpLycxCnDcFnueENo+1iLuexYYIJjyVHSAF+pyGIAYKgfcfz2RQOMfOSOzV73F1OKtE+PuH1FvrGOBPJrAAE98vHAb+WwCYtdCBCA/rdPT/9r5voHQEYRZAJYK2Zy2CJzeJiLphSTHDh6bv9ro4BV3WekwiwCaO7f1AISp1b1f3Ng0LPWAe31QDGl3hRToqf9Vm+nPeRUPIiA5m/D3TzuEKaAeUctCqS2L96v8bFaDOz4U13Sqzf6DVqiXlqUD8e1njso8KvyH1Sr94aaPmigJQL6+CpD5m7ZRZ6pbBMEaOPb0wErffoV45K27VOUWR5CcL2xMUWOuKo7BhrBWhXfGmhLitVxGYN5Ut9wCD82QprSE1XP/o/kyKYX4J0tILQzVshPMu78nX2QBdDnc+OzMbNOqZqNnkoM16hfpk8t059RJIwUvn2CsWA1tm3jV69SOQ/HwGb X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: c32eaa0f-46b1-439d-92ce-08db627ec010 X-MS-Exchange-CrossTenant-AuthSource: PH0PR05MB8703.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2023 09:01:13.2165 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: USMoihawouqkpeblLsjobu/le3T4AKOXso5mKDAe/vMfayRrAnYJ3ZOYfI+hvd3V9DV0MMOtrSmHXgjxnQaePA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR05MB8617 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Creating tracefs_inode_cache which is a cache of tracefs_inode. Adding helping functions: tracefs_alloc_inode() tracefs_free_inode() Signed-off-by: Ajay Kaher Co-developed-by: Steven Rostedt (VMware) Signed-off-by: Steven Rostedt (VMware) Tested-by: Ching-lin Yu --- fs/tracefs/inode.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index 66c4df734..76820d3e9 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c @@ -24,11 +24,30 @@ #include "internal.h" #define TRACEFS_DEFAULT_MODE 0700 +static struct kmem_cache *tracefs_inode_cachep __ro_after_init; static struct vfsmount *tracefs_mount; static int tracefs_mount_count; static bool tracefs_registered; +static struct inode *tracefs_alloc_inode(struct super_block *sb) +{ + struct tracefs_inode *ti; + + ti = kmem_cache_alloc(tracefs_inode_cachep, GFP_KERNEL); + if (!ti) + return NULL; + + ti->flags = 0; + + return &ti->vfs_inode; +} + +static void tracefs_free_inode(struct inode *inode) +{ + kmem_cache_free(tracefs_inode_cachep, get_tracefs(inode)); +} + static ssize_t default_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos) { @@ -347,6 +366,9 @@ static int tracefs_show_options(struct seq_file *m, struct dentry *root) } static const struct super_operations tracefs_super_operations = { + .alloc_inode = tracefs_alloc_inode, + .free_inode = tracefs_free_inode, + .drop_inode = generic_delete_inode, .statfs = simple_statfs, .remount_fs = tracefs_remount, .show_options = tracefs_show_options, @@ -676,10 +698,26 @@ bool tracefs_initialized(void) return tracefs_registered; } +static void init_once(void *foo) +{ + struct tracefs_inode *ti = (struct tracefs_inode *) foo; + + inode_init_once(&ti->vfs_inode); +} + static int __init tracefs_init(void) { int retval; + tracefs_inode_cachep = kmem_cache_create("tracefs_inode_cache", + sizeof(struct tracefs_inode), + 0, (SLAB_RECLAIM_ACCOUNT| + SLAB_MEM_SPREAD| + SLAB_ACCOUNT), + init_once); + if (!tracefs_inode_cachep) + return -ENOMEM; + retval = sysfs_create_mount_point(kernel_kobj, "tracing"); if (retval) return -EINVAL; From patchwork Thu Jun 1 09:00:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kaher X-Patchwork-Id: 688037 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 775FFC7EE29 for ; Thu, 1 Jun 2023 09:02:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232524AbjFAJCc (ORCPT ); Thu, 1 Jun 2023 05:02:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232531AbjFAJCQ (ORCPT ); Thu, 1 Jun 2023 05:02:16 -0400 Received: from DM4PR02CU002.outbound.protection.outlook.com (mail-centralusazon11013013.outbound.protection.outlook.com [52.101.64.13]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5824E10CB; Thu, 1 Jun 2023 02:01:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ebe22mjj3nUxZ3NGmqze897OHzv8HyYBVlCIYLcsfZv4lmq3s4qE3pSKVnh9bao7Auag7aNZeHo09qLggzuBXoz0B7sTJAEuRv3g5OX1m6eMk7XkSW8ajsr1VtlfpLv6NVPEQwkB3vDeohdasixjpxruN7sZvEXCyd84Oc5Kqd6FqMyRa1LP0D0pbVklgXG8TWm/m8MsXUthhuORTAPl0kXQxGj5yED6YlJcuZdi4pdkF7CAD4R7BjnjlW+4fUpmTBdfqr/GERMWahvTgr7ngfVZ2WUjRS0K1ZybAWiaE0Szaa++9sB2ZitlxJN3T9QrLCbswORyP8Rfqx2pWbQIFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vfeFNhpRQruvCiJ19V7ar/8DL4+EfHjmUsxLaI9S1jc=; b=E9M/vdYqNISSGynIuZJ6uZ0M3TXd3w9e98e0T902uQgYw91FPbnFFKMhDtyJDTdxBnZCSnkhUN+FivkVFuAwZRhzTrk1qOAUtx9L0dciJwbhKUOJaQK3wr72vqJQ7DCQGsfRvdoami4Bnul61F0R+pPevUfT/FE56n7Jv/dR3jqoWf7orltHpgSSkeX5YmdESrg2zhcHQAbCyQAeds1dZWUvYiqvpVYd+W8kzi4vyEneQTyF4vEEG/cokcMGnalLun+hGwEC5q6QRO+J6KSYFhz8YMr2vAU23SXKBZIWfZc5KEYEmjbbBCYvsLRo60SChXeYB/gsu9GX2bG2qNRTWA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vfeFNhpRQruvCiJ19V7ar/8DL4+EfHjmUsxLaI9S1jc=; b=FyPXZNcgQyNIhx6PQy87FcwpJGPVPmAcb6CjR2ZYICdcC6pnEqBEDOxiiIEo5B7g7X3380s5GhJpIquRWfzsxkNyXqwG+mJwwcBwNO523b4zmXMxEM+VUgzupyZUiUKlvlKvIzKZ6yJFH5DB2MokQU/buZ29M5CfzZ+hfwz4erk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; Received: from PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) by MW4PR05MB8617.namprd05.prod.outlook.com (2603:10b6:303:120::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22; Thu, 1 Jun 2023 09:01:14 +0000 Received: from PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66]) by PH0PR05MB8703.namprd05.prod.outlook.com ([fe80::5631:475a:58d4:cf66%6]) with mapi id 15.20.6455.020; Thu, 1 Jun 2023 09:01:14 +0000 From: Ajay Kaher To: rostedt@goodmis.org, mhiramat@kernel.org, shuah@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, chinglinyu@google.com, namit@vmware.com, srivatsa@csail.mit.edu, amakhalov@vmware.com, vsirnapalli@vmware.com, tkundu@vmware.com, er.ajay.kaher@gmail.com, Ajay Kaher Subject: [PATCH v3 09/10] eventfs: moving tracing/events to eventfs Date: Thu, 1 Jun 2023 14:30:12 +0530 Message-Id: <1685610013-33478-10-git-send-email-akaher@vmware.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1685610013-33478-1-git-send-email-akaher@vmware.com> References: <1685610013-33478-1-git-send-email-akaher@vmware.com> X-ClientProxiedBy: SJ0PR03CA0181.namprd03.prod.outlook.com (2603:10b6:a03:2ef::6) To PH0PR05MB8703.namprd05.prod.outlook.com (2603:10b6:510:bd::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR05MB8703:EE_|MW4PR05MB8617:EE_ X-MS-Office365-Filtering-Correlation-Id: 0bddf763-7c08-49b2-5d6c-08db627ec0a4 X-LD-Processed: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cVfLVatDAq3X24lBHsBmBteb++YaRqmLVcGyuXVgD3tiOnZWWKm5539S18ou0aGAmv0wFAZv5l1qSFRInv4ld1fbnPVSCKa1dN13f2H7a+M5/zzy14Rk/8rQYgkFtkwFBLb+oTqB9pDMsRLnsODO/Vp7fC1kJYFsTkcnv0GFzXhykdZ8yBFdIfeKHiI5bFg8niyPCktNZtfoftxK3luiSPXZ1AkE41OMA3BLPG9j56C+OgLCQscrs5vkGWZvEfnc1SWTgA3qC6qGb4a5/5z6Jf8Oeg1WefXrfWYgl3Xn67NgU2cj+eRBEsXocqcNnNilnIDBhL46WZ+5X7k3p6Lq6IzUgSPX8MuZ8PpflLvWH+olnpW0iSdKSe1hc/uSuVTLOU0++JMRspCY7E7kTRT1Sa5lGltoiI0M2eDPnjlImOd+ESd1LzaxU6zcdcSygLfdmkWkas/DItlrEPka5pQRhiL92JaYoKhW1KAknlYuJoI5XciSazrc9zpBWUMLorPk0tDybtD+SSy+6x1uoZPaTDGaVjdQIFGrj9dMAYhtHK8aeMMZbZXQmG8I0r9L7wbm78NRcZYj4zpTFbiKGEjvfoj0vhxNFDT4twIYgLgDm5O14jAJ5ERGTrAEsaEcia87 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR05MB8703.namprd05.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(396003)(39860400002)(346002)(136003)(376002)(366004)(451199021)(52116002)(6486002)(186003)(5660300002)(41300700001)(107886003)(36756003)(8676002)(38100700002)(8936002)(26005)(6506007)(38350700002)(83380400001)(4326008)(66946007)(2906002)(66556008)(478600001)(66476007)(2616005)(6512007)(86362001)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 3HGu23MqcM4+92DSyAL//hUqbrepE8evatn/wG8fLhqPKmU/uK/+wL66atGNoUeUdElRzfNkkyHX4uDEgF4Z86JLl9obirG/zqZFuIJ9QfPHo+X86tuv9p+/2iFT9aXhZqYSv+5Vm7ByYXcblkv7ZevxqkAs743Hv6a3YFjGcgcIbJwJOkUQb5VqTYTRqH4dk2/2VeqLa4WvVxzZ/nyUrjQrmCd6uyhG99QQuw0NUJkIiSQvlKzo8skMe582/9xBe9JCZxTfWF4ICRVvE1bDDIKyD/H/26RDamhKmrvWvcwWWklq/QcMEbElMjt1FdK2pZvq+DcLztPE36UfxnXfImveBYHvoKscUOBJH/gE7WtUHlBsdQ1c85Ot+p45mAQxl7bUL/hCRFTIdi+cC6VEp/ENwhAVfzFx3UaN6omYbYNa2DTvMssxbZJQkIJx60Nh+Y5iVllhYlFZ5SCmtMK3X5z5Q6ZoLTvArdXrw2f9c82ck7b33PazISCJQuIBntUvmuMjOdRk2AmRq5ythW5YRXUxY80guHzW4o+AB3OHGOjzyPn+YUvsaXGWFUdoWHHgOvI0t08rGFngISGDQZI64rp7Oh7mmAP40eAnYiQNqyJ8tNNmwC2ZBAHQNugtyEJD3Wdh2QVO2wJ8wXCdpVg5RTknfT56jx/P+9yMHe5kCUBdDMuE/xPy0wuW1VB69b8vhW7shsFzuteY/DiRopFJoWA8pmQsoVPAdXsanLpZVLee5vM/xIaDJV+jI99Ee1g4WNX5guKgngn4CQA8/O5hbnFBk6D3pB6uuK/l9oz0mBhOhqSBmntFlSyruXfJGwotAGOwhUjKzpIYw7UFTE+t6qUaDbAFKftfgTFhb3IkCHUz7xpevpCxqF8EWG8Z5X/owtKyXw34Bp8EIj1hBfXCIu+TAcj4AhdOof1ak5R/aAWMbyDZW1umX7L2rAbSmb2Sq7DW5KU3APOcBeOx6FTNEYqF38mBjI2+OdY+9dJ7g9KsjncIToaoRGfP/2xbF0nK93Yy8ALCOVGzu+plV07gPx6Xze/rT/jgI77nFIHaoathy0XGp5Hp4vJOxwYgQhdEmxn+W/HOGivYuz3ahXTSfqpLyXibNiOzGO5Vwihs1lBk2I4baSh4B8VWHFJ6lW6n02VOosmES3toHtMzs11JUH+NEu5UX1eNLZsqCxAANA2pSbEIX2dZCbQNFThUIPiLLi4tomv5ueMZyNCXAzE1MCGiLqxka/7KpVCPNwf1i30zoJ//fNGIzLN6gUyWAjBN+Ab8MjlGAzXXquRWLHPS6y7zyjvxE48HN0+eouJ3jlby4xy4ByIeZRwnVkzzsn92RJIP3PXoTjas4p4NUqBr6psNHehUo5t9+neykF3WEPZCTdVu0tC3Ff21mMzbpihMpSRVmuSMjdty49ZpFkWdytY1Rs11TU7RjfJt4XmladzGu+oVlHCXLG8an2DZcNnw3jV010fvD+fKvfUZqLETt9/CeGV7sShSNhib3VU0eXCIRLyoePpVaCR8NEhogP1mXjMZmgBQe3iU/5ZeWRIPFNkLNSJykTHRW/6xJKA/xCoYK/uSh33y1tEwAeQ3D0L0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0bddf763-7c08-49b2-5d6c-08db627ec0a4 X-MS-Exchange-CrossTenant-AuthSource: PH0PR05MB8703.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2023 09:01:14.2121 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: teyeobMJuEm8LdnlsXlooLqlb50IxHFKj4kK8lFOERZwThaE4UPFB2qcUAM3mMuNOQWskL625BWKeMKNbFEJ2A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR05MB8617 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Till now /sys/kernel/debug/tracing/events is a part of tracefs, with-in this patch creating 'events' and it's sub-dir as eventfs. Basically replacing tracefs calls with eventfs calls for 'events'. Signed-off-by: Ajay Kaher Co-developed-by: Steven Rostedt (VMware) Signed-off-by: Steven Rostedt (VMware) Tested-by: Ching-lin Yu --- fs/tracefs/inode.c | 18 ++++++++++ include/linux/trace_events.h | 1 + kernel/trace/trace.h | 2 +- kernel/trace/trace_events.c | 67 +++++++++++++++++++----------------- 4 files changed, 55 insertions(+), 33 deletions(-) diff --git a/fs/tracefs/inode.c b/fs/tracefs/inode.c index 76820d3e9..a098d7153 100644 --- a/fs/tracefs/inode.c +++ b/fs/tracefs/inode.c @@ -374,6 +374,23 @@ static const struct super_operations tracefs_super_operations = { .show_options = tracefs_show_options, }; +static void tracefs_dentry_iput(struct dentry *dentry, struct inode *inode) +{ + struct tracefs_inode *ti; + + if (!dentry || !inode) + return; + + ti = get_tracefs(inode); + if (ti && ti->flags & TRACEFS_EVENT_INODE) + eventfs_set_ef_status_free(dentry); + iput(inode); +} + +static const struct dentry_operations tracefs_dentry_operations = { + .d_iput = tracefs_dentry_iput, +}; + static int trace_fill_super(struct super_block *sb, void *data, int silent) { static const struct tree_descr trace_files[] = {{""}}; @@ -396,6 +413,7 @@ static int trace_fill_super(struct super_block *sb, void *data, int silent) goto fail; sb->s_op = &tracefs_super_operations; + sb->s_d_op = &tracefs_dentry_operations; tracefs_apply_options(sb, false); diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h index 0e373222a..696843d46 100644 --- a/include/linux/trace_events.h +++ b/include/linux/trace_events.h @@ -635,6 +635,7 @@ struct trace_event_file { struct list_head list; struct trace_event_call *event_call; struct event_filter __rcu *filter; + struct eventfs_file *ef; struct dentry *dir; struct trace_array *tr; struct trace_subsystem_dir *system; diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index b895c3346..b265ae2df 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -1310,7 +1310,7 @@ struct trace_subsystem_dir { struct list_head list; struct event_subsystem *subsystem; struct trace_array *tr; - struct dentry *entry; + struct eventfs_file *ef; int ref_count; int nr_events; }; diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c index 16bc5ba45..94aa6f9c9 100644 --- a/kernel/trace/trace_events.c +++ b/kernel/trace/trace_events.c @@ -988,7 +988,8 @@ static void remove_subsystem(struct trace_subsystem_dir *dir) return; if (!--dir->nr_events) { - tracefs_remove(dir->entry); + if (dir->ef) + eventfs_remove(dir->ef); list_del(&dir->list); __put_system_dir(dir); } @@ -1009,7 +1010,8 @@ static void remove_event_file_dir(struct trace_event_file *file) tracefs_remove(dir); } - + if (file->ef) + eventfs_remove(file->ef); list_del(&file->list); remove_subsystem(file->system); free_event_filter(file->filter); @@ -2295,13 +2297,13 @@ create_new_subsystem(const char *name) return NULL; } -static struct dentry * +static struct eventfs_file * event_subsystem_dir(struct trace_array *tr, const char *name, struct trace_event_file *file, struct dentry *parent) { struct event_subsystem *system, *iter; struct trace_subsystem_dir *dir; - struct dentry *entry; + int res; /* First see if we did not already create this dir */ list_for_each_entry(dir, &tr->systems, list) { @@ -2309,7 +2311,7 @@ event_subsystem_dir(struct trace_array *tr, const char *name, if (strcmp(system->name, name) == 0) { dir->nr_events++; file->system = dir; - return dir->entry; + return dir->ef; } } @@ -2333,8 +2335,8 @@ event_subsystem_dir(struct trace_array *tr, const char *name, } else __get_system(system); - dir->entry = tracefs_create_dir(name, parent); - if (!dir->entry) { + dir->ef = eventfs_add_subsystem_dir(name, parent, &tr->eventfs_rwsem); + if (IS_ERR(dir->ef)) { pr_warn("Failed to create system directory %s\n", name); __put_system(system); goto out_free; @@ -2349,22 +2351,22 @@ event_subsystem_dir(struct trace_array *tr, const char *name, /* the ftrace system is special, do not create enable or filter files */ if (strcmp(name, "ftrace") != 0) { - entry = tracefs_create_file("filter", TRACE_MODE_WRITE, - dir->entry, dir, + res = eventfs_add_file("filter", TRACE_MODE_WRITE, + dir->ef, dir, &ftrace_subsystem_filter_fops); - if (!entry) { + if (res) { kfree(system->filter); system->filter = NULL; pr_warn("Could not create tracefs '%s/filter' entry\n", name); } - trace_create_file("enable", TRACE_MODE_WRITE, dir->entry, dir, + eventfs_add_file("enable", TRACE_MODE_WRITE, dir->ef, dir, &ftrace_system_enable_fops); } list_add(&dir->list, &tr->systems); - return dir->entry; + return dir->ef; out_free: kfree(dir); @@ -2418,7 +2420,7 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file) { struct trace_event_call *call = file->event_call; struct trace_array *tr = file->tr; - struct dentry *d_events; + struct eventfs_file *ef_subsystem = NULL; const char *name; int ret; @@ -2430,24 +2432,24 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file) if (WARN_ON_ONCE(strcmp(call->class->system, TRACE_SYSTEM) == 0)) return -ENODEV; - d_events = event_subsystem_dir(tr, call->class->system, file, parent); - if (!d_events) + ef_subsystem = event_subsystem_dir(tr, call->class->system, file, parent); + if (!ef_subsystem) return -ENOMEM; name = trace_event_name(call); - file->dir = tracefs_create_dir(name, d_events); - if (!file->dir) { + file->ef = eventfs_add_dir(name, ef_subsystem, &tr->eventfs_rwsem); + if (IS_ERR(file->ef)) { pr_warn("Could not create tracefs '%s' directory\n", name); return -1; } if (call->class->reg && !(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) - trace_create_file("enable", TRACE_MODE_WRITE, file->dir, file, + eventfs_add_file("enable", TRACE_MODE_WRITE, file->ef, file, &ftrace_enable_fops); #ifdef CONFIG_PERF_EVENTS if (call->event.type && call->class->reg) - trace_create_file("id", TRACE_MODE_READ, file->dir, + eventfs_add_file("id", TRACE_MODE_READ, file->ef, (void *)(long)call->event.type, &ftrace_event_id_fops); #endif @@ -2463,27 +2465,27 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file) * triggers or filters. */ if (!(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE)) { - trace_create_file("filter", TRACE_MODE_WRITE, file->dir, + eventfs_add_file("filter", TRACE_MODE_WRITE, file->ef, file, &ftrace_event_filter_fops); - trace_create_file("trigger", TRACE_MODE_WRITE, file->dir, + eventfs_add_file("trigger", TRACE_MODE_WRITE, file->ef, file, &event_trigger_fops); } #ifdef CONFIG_HIST_TRIGGERS - trace_create_file("hist", TRACE_MODE_READ, file->dir, file, + eventfs_add_file("hist", TRACE_MODE_READ, file->ef, file, &event_hist_fops); #endif #ifdef CONFIG_HIST_TRIGGERS_DEBUG - trace_create_file("hist_debug", TRACE_MODE_READ, file->dir, file, + eventfs_add_file("hist_debug", TRACE_MODE_READ, file->ef, file, &event_hist_debug_fops); #endif - trace_create_file("format", TRACE_MODE_READ, file->dir, call, + eventfs_add_file("format", TRACE_MODE_READ, file->ef, call, &ftrace_event_format_fops); #ifdef CONFIG_TRACE_EVENT_INJECT if (call->event.type && call->class->reg) - trace_create_file("inject", 0200, file->dir, file, + eventfs_add_file("inject", 0200, file->ef, file, &event_inject_fops); #endif @@ -3636,21 +3638,22 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr) { struct dentry *d_events; struct dentry *entry; + int error = 0; entry = trace_create_file("set_event", TRACE_MODE_WRITE, parent, tr, &ftrace_set_event_fops); if (!entry) return -ENOMEM; - d_events = tracefs_create_dir("events", parent); - if (!d_events) { + d_events = eventfs_create_events_dir("events", parent, &tr->eventfs_rwsem); + if (IS_ERR(d_events)) { pr_warn("Could not create tracefs 'events' directory\n"); return -ENOMEM; } - entry = trace_create_file("enable", TRACE_MODE_WRITE, d_events, + error = eventfs_add_top_file("enable", TRACE_MODE_WRITE, d_events, tr, &ftrace_tr_enable_fops); - if (!entry) + if (error) return -ENOMEM; /* There are not as crucial, just warn if they are not created */ @@ -3663,11 +3666,11 @@ create_event_toplevel_files(struct dentry *parent, struct trace_array *tr) &ftrace_set_event_notrace_pid_fops); /* ring buffer internal formats */ - trace_create_file("header_page", TRACE_MODE_READ, d_events, + eventfs_add_top_file("header_page", TRACE_MODE_READ, d_events, ring_buffer_print_page_header, &ftrace_show_header_fops); - trace_create_file("header_event", TRACE_MODE_READ, d_events, + eventfs_add_top_file("header_event", TRACE_MODE_READ, d_events, ring_buffer_print_entry_header, &ftrace_show_header_fops); @@ -3755,7 +3758,7 @@ int event_trace_del_tracer(struct trace_array *tr) down_write(&trace_event_sem); __trace_remove_event_dirs(tr); - tracefs_remove(tr->event_dir); + eventfs_remove_events_dir(tr->event_dir); up_write(&trace_event_sem); tr->event_dir = NULL;