From patchwork Thu Apr 3 13:05:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14036728 Received: from outbound-ip191b.ess.barracuda.com (outbound-ip191b.ess.barracuda.com [209.222.82.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C39CF24C068 for ; Thu, 3 Apr 2025 13:05:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=209.222.82.124 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685527; cv=fail; b=lmKtJ7Hf/heAA/xxP8uPcd0hr5KEyspwlgHwA0/u1h2aVDkyW9Jo9LQ7/4DFeDEZ+7fW/aMR/oZ+6K65mkz2Y5JxmFi7r+C8lxyK5KnRVzyaR0ZyyKUq3r03fyeb/HanPm4kE1ZcJ/nxLgwJRxikIP6m8QFMWYz/mFqWqtNGahI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685527; c=relaxed/simple; bh=xw8CYtw/BxVT7RQ1DTa2mGGJBa99u8ScajoqWeFv6Ew=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oKpyo4JRaccTc0ywFB5DP7PbEvbH2u/cBCR/uZNdQ3PluJLzzbwssWVBp77+rglZcMjLqLMiRKjAyvxxyEsUJOFnuHIMSEhYqLyig2fT1GH0H0/6hKjffBfFvyNz2WVDn4/9/ibqSoLdwZ9stfopefEqSytt94RxyueB7riuKAc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com; spf=pass smtp.mailfrom=ddn.com; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b=eYQZZKt0; arc=fail smtp.client-ip=209.222.82.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ddn.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b="eYQZZKt0" Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2044.outbound.protection.outlook.com [104.47.51.44]) by mx-outbound21-128.us-east-2b.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 13:05:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ruyv+xsa6BGgarMgOk4vOFJb4Shgb0aeYZlGWnLZeNbJ5gFoFhAkUt+cNb9eXfR9VmaQw3D+mTjHSxw0MMlO0sQizyuud0qizOJ3t6B72zDMmXz7eLP1QwxgzO1yrygCNOR5e22YPHFFmcAkOBhoVA/mFGtbGNu5iK2iC+bmZhZVPRYymgRrDvNpwDlafE88nr6cIfCfts2ky6HomgWxO2uzOFCP3undMPk/PUqEZmfamZXJ521vAI+TxfPFbQZNQSxUVR4jseEv28LqPf7bgsYAWMPVuDOsO2pfbnQgBYI+WXpXrHa8SbDWSvSpDu524e+TGytokN49WIUc5fX0gQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=yhbpBkTujXp33txi2/QTwqyKBWmaQs/jyijNlZr/TJQ=; b=wQ4hOxVkThhZ7/OnYRC1rp2MI9YZ5Ma53D7C1P4wgkOBeW18u9nbQypkvs0AzGhd/XtpbL9e4Y3hNvVfSItbzY3jZbKxz9uG+mZ4gQTxebbc7I8DVvVYUOJfaU1VgdWoXaIudBpMEoQRhXNYwFoFz2xxbzB3MepBYTC4AaAfHTHJ+OS89zqtpHFMwW9Nh05jwFMASjOWfOxrT3m4XsOv3bQ3Ka80LIdddBjP0CeY2Fs0bTlVy11h6FzN7i7TQJBijmqW26I1WRoi/2tBfprYinKOIE7zRfvERQt7g2iYBW3wytWdIaD1XZnz8g+rB1Wil4BEOuFOPf9pongcE4xxCQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 50.222.100.11) smtp.rcpttodomain=ddn.com smtp.mailfrom=ddn.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ddn.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ddn.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yhbpBkTujXp33txi2/QTwqyKBWmaQs/jyijNlZr/TJQ=; b=eYQZZKt0/FV2LhVyxueMJXv8CPou8HoqiksDr7+d5wbLUcZQqevI3YWtIXNeY9Q+JUaJbR0QD4U0zwvybHx8fwHd9Mqrkpxbm7h49wV89HBXrb0Xogmu+O43YjqNZbm3E89CUrpTe4mt8AQXE4GJGzWXbMKlEDOjKHprGRd5FZE= Received: from BL1P223CA0029.NAMP223.PROD.OUTLOOK.COM (2603:10b6:208:2c4::34) by SJ1PR19MB6164.namprd19.prod.outlook.com (2603:10b6:a03:489::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.44; Thu, 3 Apr 2025 13:05:13 +0000 Received: from BL6PEPF0001AB75.namprd02.prod.outlook.com (2603:10b6:208:2c4:cafe::c6) by BL1P223CA0029.outlook.office365.com (2603:10b6:208:2c4::34) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.26 via Frontend Transport; Thu, 3 Apr 2025 13:05:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 50.222.100.11) smtp.mailfrom=ddn.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ddn.com; Received-SPF: Pass (protection.outlook.com: domain of ddn.com designates 50.222.100.11 as permitted sender) receiver=protection.outlook.com; client-ip=50.222.100.11; helo=uww-mrp-01.datadirectnet.com; pr=C Received: from uww-mrp-01.datadirectnet.com (50.222.100.11) by BL6PEPF0001AB75.mail.protection.outlook.com (10.167.242.168) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.22 via Frontend Transport; Thu, 3 Apr 2025 13:05:12 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 567264D; Thu, 3 Apr 2025 13:05:11 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 15:05:06 +0200 Subject: [PATCH v2 1/4] fuse: Make the fuse unique value a per-cpu counter Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250403-fuse-io-uring-trace-points-v2-1-bd04f2b22f91@ddn.com> References: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> To: Miklos Szeredi , Vivek Goyal , Stefan Hajnoczi , =?utf-8?q?Eugenio_P=C3=A9rez?= Cc: linux-fsdevel@vger.kernel.org, Joanne Koong , Josef Bacik , Bernd Schubert X-Mailer: b4 0.15-dev-2a633 X-Developer-Signature: v=1; a=ed25519-sha256; t=1743685510; l=5049; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=xw8CYtw/BxVT7RQ1DTa2mGGJBa99u8ScajoqWeFv6Ew=; b=G4Kmws6NZNluQuUJ3vDe/k2Og68SBxbmUt9gZ/ykPAenfxCm6EJ+7MK4bys1DMTTs3QO35zc8 fcD94LBxkHbBLIDKqcnHbuENlzc3DhfALfhH65k4NSjWn4VmxodI5Nd X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB75:EE_|SJ1PR19MB6164:EE_ X-MS-Office365-Filtering-Correlation-Id: a8ba6cc4-10da-4eb4-1604-08dd72b02b86 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?mFxtX1alDvkazyi8rvYzNemjuaHQEQx?= =?utf-8?q?wI1R1wjJyhjVvcq5d3ZxcshN55dQt1hi4+Ez/CH65zxpiG6U2eEMgtmlANqQXbTJb?= =?utf-8?q?KZDU47A1yBrn6CPXwOrTgKpb4i1SrfI9m2NAx3KG+qOaN4XQ3NMWCjDWeXOVtmhXe?= =?utf-8?q?jAS9g++U3BzZRK2Ae+ZT3ao2rMtFR7iEpS62Eg1Q26z2wEO2tV8KonAAxTnZYPRmn?= =?utf-8?q?R8K0rcpt5CAfOvCG0NmiJ5MKfPaPHHkWVfCz7WUuvZ4kpkpG4RrBXKAawTi90rA3d?= =?utf-8?q?RiHdFKc8dKSp5Aqcd2sGbWsUjtEH0jLnF0CPHDoKUG4vVmK0P/t3rytWRrDc4cqnI?= =?utf-8?q?pWiS8MGa+3QBcNtSkv/LwGmy4brSOKbW3iIR6YpPpUXggNsZ7dKvbtKKQD6MDsQBD?= =?utf-8?q?zXOh5D0rc4Pe3m2QaJfS/2TlxQiMB3mOMvEv4kQm0Z0QUzYShKKpA55bauckC+hD+?= =?utf-8?q?Hp01b/yi+sWa/UypUtcJ0cvHAvZC1c3QkdDUjKVzwsHg2lG3/+RVxQ+mvlGCZ8UiE?= =?utf-8?q?EKKX5EX2KKd+mDj6ZzQ6TWN/Oc9bBMCYCGDvyQm/AZPmpawYU/taxWPVN9Q6RbygC?= =?utf-8?q?LI1oltoIzWDZ3b+L/aFk5cYyge+aDI5dUrvneYvRreODuvbzezQVFahUg4uM2TjsL?= =?utf-8?q?zTmcFhXEc0cs5QcOiNTBDT+nAEvhSvCTe3u+q0NnhwaNbpHqdmF8R0xQqcGbHaBDg?= =?utf-8?q?IrhOFApTaQxRuLjEh9T1p7EkRapGXEd/an+vXQOAZu8zFq+olz3yImn4TpGRXQImF?= =?utf-8?q?qysk5Tkhyc2fvrUIAYKBpE3cG9k0E4/SOi9iL+yR2ESGsYJq76N9+CSJ0aEOC2nlL?= =?utf-8?q?Pzq176LgpzMJyoqSo3c1iPbLo9J5ZLPEtaWYSiDhYCOIhiJAeqreiowLadxAtQEE7?= =?utf-8?q?D2s87xYt3YA7q7HjeU1BPxDiyc4xlXOzRQwoUhREP0+IDKqQ/t42oyCs6a4drf8Eh?= =?utf-8?q?+IHisjXEPDfLELrMb1ljG5DX3POpa6p+25wkfWUpdYybaBZrhHbZsI0sgfGbrgZD6?= =?utf-8?q?ucSOfhn5UFWITr8XJ3aWqMbHcYyR+0ARyomuhf4HKQlGGer0maY8Kg6Qib1Pmx1M6?= =?utf-8?q?IX9gaQoheSEInoMbsJ/rxIzX0mYrdIhpBI1dUKc9VBWU2apvlsvV9C3HPx5o0wWXg?= =?utf-8?q?3WEDc+fOtkewK+p4VRuhKOZekZwk/VFpywxwo2/RdesaA+etm0AyTdwP2xh4FujSJ?= =?utf-8?q?mv94VSEpChcYBUAPGEoxMN58xXGUnzqFedX8HV++aBBOaFOofOn4o1E8VMrTIo5SA?= =?utf-8?q?qaLSFSrSenUvKAmTSAX9iVJ17Ho807b3Ybz8HeFaWednycQ1AnukS7hM/NB7ls9aC?= =?utf-8?q?YD7oonZM8TM1FjmIuAsCsL1EI69JkW4QrMZsmeVLCZfrUr05sacjgr/calawEIk+8?= =?utf-8?q?sge4Gdlo6sZLzFsI1pZGAMK40Ciw3y7JRT0TAF/Q/pIEC3+my2jbsA=3D?= X-Forefront-Antispam-Report: CIP:50.222.100.11;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:uww-mrp-01.datadirectnet.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: o3G+bQ5Y3S+KZv5Pmo9cTFlgNM68a7pKOBxIYFYepCY8MwHaV9GhaKcmRkDGa+z3mQEg7heo6E06Kih2KLQ4PuSmavY64AxtSpo7wqg9hJr/Ees+MZXEtzEG6yJkrdIdvnBMZ+7+qM5N0Sk//Vnh+UeRLFyv1HGr71kD+IOfFOMNlh7lABa1qA3ES9b1JHFiIIkfCABzYLI2Fwpk7nOC+3uqJrEaoa5hMfZWJAVqDbP0bcs5pftogryB5szo7Xt/hvz6IZzt9pVvnNDy83ERPtCTd1lORXWsNCalqNSRrjCeFxBz+DpF18wu55POoNhSlFQuFp0hGZChVZG+Ib1SU6OjUjVDDZZz/NEwGsxv+/3fQbpLGNidam9tpF3FSmBM98EoMTCYxyJgN9FD3PdwZKjlCGEIQm3bpYuxtSuO8L1XNJhZf9RDV76cjPQz6NdKJYVjhZDt/U521K9okX5wzOaten0K9e8S8ivtQD2ybITaMI1fSxMLHUELyTEis2Hvden+aw/li9sloIYY3NpJVqEYxDWfFiR1xO0LB+Qqfn1jRBxezMp1Hb378eYLApqTi7Vcf6S34dKfM1CJQlFHcHj/U+GJq0KJKrtf2y1NIeNonlyfJjMX/PC1C5klpZ9BBiTpFJxXny1fvyY+h0QCmA== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 13:05:12.5090 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a8ba6cc4-10da-4eb4-1604-08dd72b02b86 X-MS-Exchange-CrossTenant-Id: 753b6e26-6fd3-43e6-8248-3f1735d59bb4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=753b6e26-6fd3-43e6-8248-3f1735d59bb4;Ip=[50.222.100.11];Helo=[uww-mrp-01.datadirectnet.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB75.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR19MB6164 X-BESS-ID: 1743685518-105504-7636-3322-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.51.44 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKViYWFhZAVgZQ0MLMMM0g0czCIi 3F2CAt2cgiNdXcGEglpyanJlmkGCrVxgIAATDFVkEAAAA= X-BESS-Outbound-Spam-Score: 0.50 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.263622 [from cloudscan22-59.us-east-2b.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.50 BSF_RULE7568M META: Custom Rule 7568M 0.00 BSF_BESS_OUTBOUND META: BESS Outbound X-BESS-Outbound-Spam-Status: SCORE=0.50 using account:ESS124931 scores of KILL_LEVEL=7.0 tests=BSF_RULE7568M, BSF_BESS_OUTBOUND X-BESS-BRTS-Status: 1 No need to take lock, we can have that per cpu and add in the current cpu as offset. fuse-io-uring and virtiofs especially benefit from it as they don't need the fiq lock at all. Signed-off-by: Bernd Schubert --- fs/fuse/dev.c | 24 +++--------------------- fs/fuse/fuse_dev_i.h | 4 ---- fs/fuse/fuse_i.h | 23 ++++++++++++++++++----- fs/fuse/inode.c | 1 + 4 files changed, 22 insertions(+), 30 deletions(-) diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 51e31df4c54613280a9c295f530b18e1d461a974..e9592ab092b948bacb5034018bd1f32c917d5c9f 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -204,24 +204,6 @@ unsigned int fuse_len_args(unsigned int numargs, struct fuse_arg *args) } EXPORT_SYMBOL_GPL(fuse_len_args); -static u64 fuse_get_unique_locked(struct fuse_iqueue *fiq) -{ - fiq->reqctr += FUSE_REQ_ID_STEP; - return fiq->reqctr; -} - -u64 fuse_get_unique(struct fuse_iqueue *fiq) -{ - u64 ret; - - spin_lock(&fiq->lock); - ret = fuse_get_unique_locked(fiq); - spin_unlock(&fiq->lock); - - return ret; -} -EXPORT_SYMBOL_GPL(fuse_get_unique); - unsigned int fuse_req_hash(u64 unique) { return hash_long(unique & ~FUSE_INT_REQ_BIT, FUSE_PQ_HASH_BITS); @@ -278,7 +260,7 @@ static void fuse_dev_queue_req(struct fuse_iqueue *fiq, struct fuse_req *req) spin_lock(&fiq->lock); if (fiq->connected) { if (req->in.h.opcode != FUSE_NOTIFY_REPLY) - req->in.h.unique = fuse_get_unique_locked(fiq); + req->in.h.unique = fuse_get_unique(fiq); list_add_tail(&req->list, &fiq->pending); fuse_dev_wake_and_unlock(fiq); } else { @@ -1177,7 +1159,7 @@ __releases(fiq->lock) struct fuse_in_header ih = { .opcode = FUSE_FORGET, .nodeid = forget->forget_one.nodeid, - .unique = fuse_get_unique_locked(fiq), + .unique = fuse_get_unique(fiq), .len = sizeof(ih) + sizeof(arg), }; @@ -1208,7 +1190,7 @@ __releases(fiq->lock) struct fuse_batch_forget_in arg = { .count = 0 }; struct fuse_in_header ih = { .opcode = FUSE_BATCH_FORGET, - .unique = fuse_get_unique_locked(fiq), + .unique = fuse_get_unique(fiq), .len = sizeof(ih) + sizeof(arg), }; diff --git a/fs/fuse/fuse_dev_i.h b/fs/fuse/fuse_dev_i.h index 3b2bfe1248d3573abe3b144a6d4bf6a502f56a40..e0afd837a8024450bab77312c7eebdcc7a39bd36 100644 --- a/fs/fuse/fuse_dev_i.h +++ b/fs/fuse/fuse_dev_i.h @@ -8,10 +8,6 @@ #include -/* Ordinary requests have even IDs, while interrupts IDs are odd */ -#define FUSE_INT_REQ_BIT (1ULL << 0) -#define FUSE_REQ_ID_STEP (1ULL << 1) - struct fuse_arg; struct fuse_args; struct fuse_pqueue; diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h index fee96fe7887b30cd57b8a6bbda11447a228cf446..73c612dd58e45ecde0b8f72fd58ac603d12cf202 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -9,6 +9,8 @@ #ifndef _FS_FUSE_I_H #define _FS_FUSE_I_H +#include "linux/percpu-defs.h" +#include "linux/threads.h" #ifndef pr_fmt # define pr_fmt(fmt) "fuse: " fmt #endif @@ -44,6 +46,10 @@ /** Number of dentries for each connection in the control filesystem */ #define FUSE_CTL_NUM_DENTRIES 5 +/* Ordinary requests have even IDs, while interrupts IDs are odd */ +#define FUSE_INT_REQ_BIT (1ULL << 0) +#define FUSE_REQ_ID_STEP (1ULL << 1) + /** Maximum of max_pages received in init_out */ extern unsigned int fuse_max_pages_limit; @@ -490,7 +496,7 @@ struct fuse_iqueue { wait_queue_head_t waitq; /** The next unique request id */ - u64 reqctr; + u64 __percpu *reqctr; /** The list of pending requests */ struct list_head pending; @@ -1065,6 +1071,17 @@ static inline void fuse_sync_bucket_dec(struct fuse_sync_bucket *bucket) rcu_read_unlock(); } +/** + * Get the next unique ID for a request + */ +static inline u64 fuse_get_unique(struct fuse_iqueue *fiq) +{ + int step = FUSE_REQ_ID_STEP * (task_cpu(current) + 1); + u64 cntr = this_cpu_inc_return(*fiq->reqctr); + + return cntr * FUSE_REQ_ID_STEP * NR_CPUS + step; +} + /** Device operations */ extern const struct file_operations fuse_dev_operations; @@ -1415,10 +1432,6 @@ int fuse_readdir(struct file *file, struct dir_context *ctx); */ unsigned int fuse_len_args(unsigned int numargs, struct fuse_arg *args); -/** - * Get the next unique ID for a request - */ -u64 fuse_get_unique(struct fuse_iqueue *fiq); void fuse_free_conn(struct fuse_conn *fc); /* dax.c */ diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index e9db2cb8c150878634728685af0fa15e7ade628f..12012bfbf59a93deb9d27e0e0641e4ea2ec4c233 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c @@ -930,6 +930,7 @@ static void fuse_iqueue_init(struct fuse_iqueue *fiq, memset(fiq, 0, sizeof(struct fuse_iqueue)); spin_lock_init(&fiq->lock); init_waitqueue_head(&fiq->waitq); + fiq->reqctr = alloc_percpu(u64); INIT_LIST_HEAD(&fiq->pending); INIT_LIST_HEAD(&fiq->interrupts); fiq->forget_list_tail = &fiq->forget_list_head; From patchwork Thu Apr 3 13:05:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14036727 Received: from outbound-ip191a.ess.barracuda.com (outbound-ip191a.ess.barracuda.com [209.222.82.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B583288DA for ; Thu, 3 Apr 2025 13:05:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=209.222.82.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685526; cv=fail; b=kuGRnfZhpXxezZYHPgWQ/4aANj2eiQ3sn5GsUJFB0yatLL6HyhNAW0SEWXwXVyBaPHY8lmY4z6kt1ZqWbFBuSI6pjt2hxxikaqrSUV896kKDjAfjW93pR177+i7ES9NKerdmPQMkPakf/IocMfTAB++zf0eZeRg5icwSKRrlaZ0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685526; c=relaxed/simple; bh=ziYZV/W/d52W8kKfIYz5/3su24KBpyjnMK0qQasJq7c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SX15QaKadoxUdOGTLBVp38OngXMotjKvmYHSCqjm7r4aVHpKJnn6ReumXk6W/N/bI7uVaj8VcWn1hEvOeIh19EUldHp57lMe15BDKVhz/pUBH+i+XifC5DjImExUuapXHtS6LgnoRu/b7rF8qEE4PmkHtpP0wnsPXcL6KpxNMgA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com; spf=pass smtp.mailfrom=ddn.com; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b=VXju6uof; arc=fail smtp.client-ip=209.222.82.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ddn.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b="VXju6uof" Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2173.outbound.protection.outlook.com [104.47.59.173]) by mx-outbound42-120.us-east-2c.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 13:05:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=DQOI7MaNctg0S2kd9S9627Q1V8tqYGJ7rljw0eFohv0BMO7XRyHzE26hyboaSIcKeK4w6MnU6TpBjLL3G6PtmYRfBIqSObVgR4oNaO6pJhSnoekRs+EvqWmAwMuo0QsKiI54qYXapuXabmgtgCQwpZk81yI6C6wUuEcSdIOjO9kY3o/gRFUFKW+zFvEB71VJx3UEh/CprBIfefziwPl0pSw0lYq29HjjymrWagilz5Dy88P5P46Jb67l+l8FWZf7EalRKzO+WPia1ODglmBpB7jAM/L9tLi1fOUDnp6n+7fvJodlYDg8nETBTZW0bz7Dp10/+Oopo3HscCs+MpQXOA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=Y/tm93HuADKuq/51kxy83RJV/L4xXQ5WraSoBE7nzxg=; b=wKAKBzFmuq428PI+2GF7W+0UGuwVM3KPONZsb3kheU2/tVe1Sk7oPGYobtOVtRbAjD0PEE3RPZZUcUGA+69n05nzL5lGvCq8c3qN8qR858L1K89HB8P1JD0hC5BLN5vLr3kMs813KI0l8j4lavmMnxxt4HTEAR1kFFV10XnaiBvOnd77BnQ4qsTDynJvIWSIzxlYekuzxcTSh35qUWAofLJSJSjAwN9Fxlj2PRGcj6exLcwLPLZUmOgOFZEXEvxoqkUjQZE+BrdVojru4K1bNEmLGVIaBCSVnLbHeTUwwD3OBb36vkDgerL9W1deHfZCWrIhwg1YIhgv6khfuCBj6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 50.222.100.11) smtp.rcpttodomain=ddn.com smtp.mailfrom=ddn.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ddn.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ddn.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y/tm93HuADKuq/51kxy83RJV/L4xXQ5WraSoBE7nzxg=; b=VXju6uofI+2mqW0dnTcw2RGTPW8ypitQpUkNOAbZ272nfz7HjbBH9s+jXZ81F6fqNtEQCugb99Rd3vyLcOZ772s7P2cY95GlbVZl+e7UoU+8/XlPpBqJ/GDsNNAr+G2LqnhQEkeBrTcw4TynpbmzEK27Bk0nLAwZC/1L5FtJ1dE= Received: from CH0PR03CA0015.namprd03.prod.outlook.com (2603:10b6:610:b0::20) by CY5PR19MB6517.namprd19.prod.outlook.com (2603:10b6:930:37::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.41; Thu, 3 Apr 2025 13:05:14 +0000 Received: from CH2PEPF0000009C.namprd02.prod.outlook.com (2603:10b6:610:b0:cafe::4c) by CH0PR03CA0015.outlook.office365.com (2603:10b6:610:b0::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.26 via Frontend Transport; Thu, 3 Apr 2025 13:05:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 50.222.100.11) smtp.mailfrom=ddn.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ddn.com; Received-SPF: Pass (protection.outlook.com: domain of ddn.com designates 50.222.100.11 as permitted sender) receiver=protection.outlook.com; client-ip=50.222.100.11; helo=uww-mrp-01.datadirectnet.com; pr=C Received: from uww-mrp-01.datadirectnet.com (50.222.100.11) by CH2PEPF0000009C.mail.protection.outlook.com (10.167.244.24) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.22 via Frontend Transport; Thu, 3 Apr 2025 13:05:13 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 4CBC84A; Thu, 3 Apr 2025 13:05:12 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 15:05:07 +0200 Subject: [PATCH v2 2/4] fuse: Set request unique on allocation Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250403-fuse-io-uring-trace-points-v2-2-bd04f2b22f91@ddn.com> References: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> To: Miklos Szeredi , Vivek Goyal , Stefan Hajnoczi , =?utf-8?q?Eugenio_P=C3=A9rez?= Cc: linux-fsdevel@vger.kernel.org, Joanne Koong , Josef Bacik , Bernd Schubert X-Mailer: b4 0.15-dev-2a633 X-Developer-Signature: v=1; a=ed25519-sha256; t=1743685510; l=2914; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=ziYZV/W/d52W8kKfIYz5/3su24KBpyjnMK0qQasJq7c=; b=mpeLP5dAXB1rvQDoUfrMWHGRVx4mMQJt2EkvRDIBGSeXKfD4Oo94vzoQHYRlRuLDmb9X4M+5M Z5Kr3G/Oh/7DuJ1LEkFopEsFiN16XvFsCLUOnuZgujz7FTL6lbqCHuM X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF0000009C:EE_|CY5PR19MB6517:EE_ X-MS-Office365-Filtering-Correlation-Id: 3f8a0aa3-4383-4301-0333-08dd72b02bf3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|36860700013|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?q?/ksp7xgPyUX9AvwVXnQdvuGCLtBXcjT?= =?utf-8?q?xybHT8qR1dYMuRFexBquF5l5ywd5VJcFHQOIN8iy5oUJgiihF9kFN9fCNuW5VrQ8I?= =?utf-8?q?NzxjctEPBeXmNxBQLQX01v7j2J5gAey/iOX1QL+/QzPMh60VxFHoakm5UYnIhaNB8?= =?utf-8?q?D+091razREdQ7IWJOF5Tt49m3XV+xTf1F3WGkgRUYOiQ/wnJbsstGXrAWWgkFEz0Y?= =?utf-8?q?SxiWBDMDJDquzRs+lPzoLqQMQizBZueokuIIhEa+VUXe/eaTx3A3YWNFrG4SgI0c3?= =?utf-8?q?OzheRiZQeU48kOj5xZNlXzd3hoz7o0sK7ebiHqSlhEwJj+0T1QPg/9sDINqE4HUd6?= =?utf-8?q?na29dVuUJ7lD8EiVWxWwqqRR0PLSglSvEJkHDfIfHa86Iv4PZC5XHq3ahDsM9eJiy?= =?utf-8?q?F5PvYnP/DE5SqBksWixiqV0YpkH6eQbYStmvV0CuyqvIVg4RlLCoFWKgt6izXdxsn?= =?utf-8?q?+Nrq9pRzXNrvYk+C4wdfQUUbM7qCJn0LoCeqFr6cN3LH1/oXrLnEjAAKcDPpy9oV4?= =?utf-8?q?pNi7XpeCNK+8yyjiDHHoeCuwzXERtuxdQEh9nWY1g3KleRqnKdQ359vxFyWvSG3tp?= =?utf-8?q?8NHO8PbdJ9WtWkTrxTFrMql1lC2UtH7RJP9nuzivwAV0a4QFtYyEerN67QlT2g+k+?= =?utf-8?q?GjQStuyOpbRZtpnFuH2h1/Qdh8dBvtQ5M3RPMXGxLrfV0a4dnsR372zR4CHe1GAY4?= =?utf-8?q?t4qWUEFGoQqje+N4cdyB479OvhttwgosWikw8BJTmvvIAQRXXoYaQGuukS91n6II9?= =?utf-8?q?RJIOBpWhzgUZPKnwq+nuyzrPQ56kPVWWnk/FHlkAXcRVwpXyUp7Z+6GPmQw8vd8qz?= =?utf-8?q?qVFe6fWIg71Gka7OIovWDqcOXGLk8EJT3gYS0L8BC6bJnQrFmQLK/+0yn2Jhkm5oy?= =?utf-8?q?SeR2lXuet2TSvC8LBgVt6Y6bvYK+AdH1rpCgRT8pHn7mVLrgi2JXMaDUsC6MqHu66?= =?utf-8?q?D04A0QPAV9jrYYAHNUdwVItZdVAAmo9i56YKqq9YhtKd4rSTyBwxiKvqp+6fq4yb+?= =?utf-8?q?PYLUP57L8xWu9rLgD+mcrpfOCONie0Z+6e+/MU4s28Zz/q1ELupN9jOAbmpeN28Wi?= =?utf-8?q?DLA8WdBdll8TCBjyTt8oD2XHJp+zLiD4QcPbX0rNo6Mk4hAMqnCMPEiGT5OgL4ap0?= =?utf-8?q?EmTmYYz+HxQABIeBtkP7wH9QDsGARs4o16ooIP4ci7lFfEznR+nJnnyvc5qlVFLmC?= =?utf-8?q?EaztnuMe2l7ryY3tFE8O92ijRF+7xC40DBB9bPDElxiYyILXtATniIgsIMXYA1cnd?= =?utf-8?q?loLWhBxg0MgY476bt+YPvGiWn1I5vbNrHX6v9Y5OJGu2pJQlHXFX6BvtllmE3FvYZ?= =?utf-8?q?se/CFlpn4eXpCZAU90OYm2tzlN1MYoGExLjZ1TUtQLTYqrrMl/dGFaK3C3aCAZctn?= =?utf-8?q?xN6Ohh/SbccH0zxiHsvD2UobyUhr2mPSDcXsOsBKOfhqugguL7SsbA=3D?= X-Forefront-Antispam-Report: CIP:50.222.100.11;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:uww-mrp-01.datadirectnet.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(36860700013)(376014)(82310400026);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: LIwqIZWh27LIfXK7XUYeovtGkw6nTdhcg/rEwbySAAbbmbUnudPSOg0/8pOqWeb39vzCRo3VbRgyLaBEQJ1WfCKEpl+P2BIbzNpuAEqh41+qnZ8IdvykFhd/881hARdPqdCWGiTwQ/NUV2gxxdHzQaHkJo7wKQb5Xmja2fPSR2JnrjuWA6nO80pKkztDIiUC72ERYJMrpm9RNWBrhIgZv4pDFoM4fklL/CgQZOwmANnM6R0E1dTCOhq5xGYqvoDW4BCSuTH5mf4hyYTsD5QScuHBSTJX/qjU9f9s/+Q5AA/OwOAs+qbDml1hFBU3gskCXQT+b7vhGir1iyvD2mN5nyFDkmsVnPbJOV5zYmhgab41j4H/oejGQ99it4BbS5t0efnaCMVKf5KOOX2T+TNZ73L7lmLs/oCC+RCsVYqiH2CrsqftB/ubyKz4S1I71WOybaQjNsaN6vWyZvLR3eCIWK4RQiAtDfkJoVCONFG2YScw2IkyBgXEj6/B4rVGki3eR7XsH58qRbFIfHeP/No2NYRn5OiGV9+r/ngy8XmxFZ2KV5ZlWO5mPo4miBhA7iZMvNKcdaiyPJwoDfsZ/Yph8Yx74fceY7j/ZDonzifBF/E23M2lahgWQ4KRAjSFkoVcU8F6V6NSzz88KQzCPo3ung== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 13:05:13.2697 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3f8a0aa3-4383-4301-0333-08dd72b02bf3 X-MS-Exchange-CrossTenant-Id: 753b6e26-6fd3-43e6-8248-3f1735d59bb4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=753b6e26-6fd3-43e6-8248-3f1735d59bb4;Ip=[50.222.100.11];Helo=[uww-mrp-01.datadirectnet.com] X-MS-Exchange-CrossTenant-AuthSource: CH2PEPF0000009C.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR19MB6517 X-BESS-ID: 1743685516-110872-7686-13661-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.59.173 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVkYWxmZAVgZQMNUiMc0g2dA0Mc 3S2MQ8zSzZKM00Oc08KdHIwMIi0SxNqTYWAEQDCDNBAAAA X-BESS-Outbound-Spam-Score: 0.50 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.263622 [from cloudscan12-125.us-east-2a.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.50 BSF_RULE7568M META: Custom Rule 7568M 0.00 BSF_BESS_OUTBOUND META: BESS Outbound X-BESS-Outbound-Spam-Status: SCORE=0.50 using account:ESS124931 scores of KILL_LEVEL=7.0 tests=BSF_RULE7568M, BSF_BESS_OUTBOUND X-BESS-BRTS-Status: 1 This is especially needed for better ftrace analysis, for example to build histograms. So far the request unique was missing, because it was added after the first trace message. IDs/req-unique now might not come up perfectly sequentially anymore, but especially with cloned device or io-uring this did not work perfectly anyway. Signed-off-by: Bernd Schubert --- fs/fuse/dev.c | 8 +++----- fs/fuse/dev_uring.c | 3 --- fs/fuse/virtio_fs.c | 3 --- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index e9592ab092b948bacb5034018bd1f32c917d5c9f..1ccf5a9c61ae2b11bc1d0b799c08e6da908a9782 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -259,8 +259,6 @@ static void fuse_dev_queue_req(struct fuse_iqueue *fiq, struct fuse_req *req) { spin_lock(&fiq->lock); if (fiq->connected) { - if (req->in.h.opcode != FUSE_NOTIFY_REPLY) - req->in.h.unique = fuse_get_unique(fiq); list_add_tail(&req->list, &fiq->pending); fuse_dev_wake_and_unlock(fiq); } else { @@ -508,6 +506,9 @@ static void fuse_args_to_req(struct fuse_req *req, struct fuse_args *args) req->in.h.total_extlen = args->in_args[args->ext_idx].size / 8; if (args->end) __set_bit(FR_ASYNC, &req->flags); + + if (req->in.h.opcode != FUSE_NOTIFY_REPLY) + req->in.h.unique = fuse_get_unique(&req->fm->fc->iq); } ssize_t __fuse_simple_request(struct mnt_idmap *idmap, @@ -555,9 +556,6 @@ ssize_t __fuse_simple_request(struct mnt_idmap *idmap, static bool fuse_request_queue_background_uring(struct fuse_conn *fc, struct fuse_req *req) { - struct fuse_iqueue *fiq = &fc->iq; - - req->in.h.unique = fuse_get_unique(fiq); req->in.h.len = sizeof(struct fuse_in_header) + fuse_len_args(req->args->in_numargs, (struct fuse_arg *) req->args->in_args); diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c index 82bf458fa9db5b2357ae2d1cf5621ed4db978892..5a05b76249d6fe6214e948955f23eed1e40bb751 100644 --- a/fs/fuse/dev_uring.c +++ b/fs/fuse/dev_uring.c @@ -1230,9 +1230,6 @@ void fuse_uring_queue_fuse_req(struct fuse_iqueue *fiq, struct fuse_req *req) if (!queue) goto err; - if (req->in.h.opcode != FUSE_NOTIFY_REPLY) - req->in.h.unique = fuse_get_unique(fiq); - spin_lock(&queue->lock); err = -ENOTCONN; if (unlikely(queue->stopped)) diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c index 82afe78ec542358e2db6f4d955d521652ae363ec..ea13d57133c335554acae33b22e1604424886ac9 100644 --- a/fs/fuse/virtio_fs.c +++ b/fs/fuse/virtio_fs.c @@ -1482,9 +1482,6 @@ static void virtio_fs_send_req(struct fuse_iqueue *fiq, struct fuse_req *req) struct virtio_fs_vq *fsvq; int ret; - if (req->in.h.opcode != FUSE_NOTIFY_REPLY) - req->in.h.unique = fuse_get_unique(fiq); - clear_bit(FR_PENDING, &req->flags); fs = fiq->priv; From patchwork Thu Apr 3 13:05:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14036730 Received: from outbound-ip168b.ess.barracuda.com (outbound-ip168b.ess.barracuda.com [209.222.82.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91670242905 for ; Thu, 3 Apr 2025 13:05:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=209.222.82.102 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685529; cv=fail; b=ik6MuAvnDMsxuEAznl+jwIUp7YLOBIhxj1dX3wl3VYzrSMNIVMAhbP3oMj5lGBbol1Rb3oEvEwt9GoxbFhHo6ZpmRXkatycEbMc2z2E82My2EYTTeSToLMxPUJJMSXi6cchKgxSJnC532lMw/wplRTAd9LIRIdE6dE4sDklVPIE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685529; c=relaxed/simple; bh=t/qWU7S8DFwFw1ltRPZymLwhxW9CiMD3+kpjL0lZZRE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cyEJYwn0DouzkgqyCZ3hBlw2emdRyCW3KLj4LEXIOQ9pYHQLSMT+IjQizpQvCvwfodlwm/0XP+bFd47i8+ZuMm8ERrbTR9bIK2mrnDxrsyHPq7awnT4cyldwIO3GAzvqzdXj0GLq/2ohHrkiHHWSm6wWyVh/o4hFgW42QiMuxXU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com; spf=pass smtp.mailfrom=ddn.com; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b=GpwqCVsY; arc=fail smtp.client-ip=209.222.82.102 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ddn.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b="GpwqCVsY" Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2174.outbound.protection.outlook.com [104.47.55.174]) by mx-outbound23-127.us-east-2b.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 13:05:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XH8UeHh/ORUE8g4taYEHYF8p4XEU+tfp9TvuwSP/WytN8DB32nfXnuT1ocKD/m1stNVjpdDIPomcF7WRE2IFu81XV2EDPbGyG7rBrNvVoOiCPruN3jibfBgmjvlCYn73960nVr2DUzoi6qduMamT0zj4IObag5ErcCmgj8iRnke371JpQ9kvxZZi7LCagNKwD+rUvoO3WgXpq7FIubWPIMZXnNer7kisy3W7m5itwTd1lR3gDT+858Z6b0jFf86QP6WCL3QShM2LcdRlfRc8DMQrJgCRF5s4jn+CybOAIqr+s3BIrvraGxxFDfBOYyhQFGn43slc1UJRnnUbjjJBwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=w9c4thro/65LNTQvw9TViG04eyuC/g4rHehyEfqiU64=; b=o7aZ0PEuuVUC1Z5b6HV1ebeDrYueZ70J5u7wTpdcCTj2RGZ6a/IcTuQSpawzrKiWabfP9fFmcnm3X8lGxvzEvj7XyLpjMpLzNim2+SNiV+yMQW+BWt+C8m5gIUBorWKo/egYZ1SRmnWTWwGhoKjrD0KkeD1InxoRPdvqGPG2J05SgvsxyszJrAfdhZfz3teS8jqS/BL0a1YjajTTbxQu0H4lkztk/uKmWIosbHK3AmzvwmhOTYNzYBXVZr2ajKLO61Mr+16i/u7ntWr1VBSs4ZgGjlnw/N+OTzAzZic4KRaFcH4A1pH6ibPiZo8VID1W/40/eObiqesmZNDZSNeuvw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 50.222.100.11) smtp.rcpttodomain=ddn.com smtp.mailfrom=ddn.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ddn.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ddn.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=w9c4thro/65LNTQvw9TViG04eyuC/g4rHehyEfqiU64=; b=GpwqCVsYEAn8gTu4p1BubQ9Vu9YDThZiFbSYFu7X/VVKP077fhj0qxDECBGqmMDts/2rqqxcWO7lTVNEfYPzwCyCrKcebcxILFV5gpy/gjWggEzD4pm6KhTNN4s1eNBoKBNd500KFyZFk17pjrpHMfPVjA7DjPPbXeb/9F3GUWM= Received: from BN0PR04CA0125.namprd04.prod.outlook.com (2603:10b6:408:ed::10) by CH2PR19MB3910.namprd19.prod.outlook.com (2603:10b6:610:a1::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8583.42; Thu, 3 Apr 2025 13:05:15 +0000 Received: from BN3PEPF0000B076.namprd04.prod.outlook.com (2603:10b6:408:ed:cafe::2e) by BN0PR04CA0125.outlook.office365.com (2603:10b6:408:ed::10) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8583.41 via Frontend Transport; Thu, 3 Apr 2025 13:05:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 50.222.100.11) smtp.mailfrom=ddn.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ddn.com; Received-SPF: Pass (protection.outlook.com: domain of ddn.com designates 50.222.100.11 as permitted sender) receiver=protection.outlook.com; client-ip=50.222.100.11; helo=uww-mrp-01.datadirectnet.com; pr=C Received: from uww-mrp-01.datadirectnet.com (50.222.100.11) by BN3PEPF0000B076.mail.protection.outlook.com (10.167.243.121) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.22 via Frontend Transport; Thu, 3 Apr 2025 13:05:14 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 43BDC4E; Thu, 3 Apr 2025 13:05:13 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 15:05:08 +0200 Subject: [PATCH v2 3/4] fuse: {io-uring} Avoid _send code dup Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250403-fuse-io-uring-trace-points-v2-3-bd04f2b22f91@ddn.com> References: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> To: Miklos Szeredi , Vivek Goyal , Stefan Hajnoczi , =?utf-8?q?Eugenio_P=C3=A9rez?= Cc: linux-fsdevel@vger.kernel.org, Joanne Koong , Josef Bacik , Bernd Schubert X-Mailer: b4 0.15-dev-2a633 X-Developer-Signature: v=1; a=ed25519-sha256; t=1743685510; l=2416; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=t/qWU7S8DFwFw1ltRPZymLwhxW9CiMD3+kpjL0lZZRE=; b=ailbvq51Lp7tHCWNh0RC8aMEuGn7BIl51m/hFL0lhiFZ9U192YbDh7VzH7KIg6HL1qDPoCDn2 TgHek6ghkH6BoPhbvQwCMSN8rwangBwxw/PRKJ2xa9qHlFJ57+bHoa6 X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN3PEPF0000B076:EE_|CH2PR19MB3910:EE_ X-MS-Office365-Filtering-Correlation-Id: 2c1abd76-f032-4611-b519-08dd72b02cc9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|82310400026|376014|36860700013; X-Microsoft-Antispam-Message-Info: =?utf-8?q?QulbUUa4xs7VL4gmWjqhnkMtvRBdK1I?= =?utf-8?q?H7Jm6JsWClPUBltWy/0BR+hN2IAV6yzRyIBocVJprEeb4+MsywtxOBUWRmZi0TH2b?= =?utf-8?q?n8EVFIV4QqQePgZGV/gnaQi1s9f5fD9C/7d+xaLXJ2kbqO+YzhXYFN4fa0vgxB0cJ?= =?utf-8?q?XTIWEmDBUBMRe1Qn4xHBMNFUVirdk4yHDUEr1YubzbHumIGsQZrlUIXl+KB5aaFRI?= =?utf-8?q?aX5JscAxetkG+xS+l5X53y26s1RBboit86TfJCn0lclXoh2WV+3rkbegKXWyYkqL7?= =?utf-8?q?JJ6IXhMY7ZFkFVnXk5jmuC9mSqaddWanq7BhNGOv7CV++Jc+7kQld3ZuEVoL7KQaq?= =?utf-8?q?4wrNWJNr7uoaObdOmR1yAhD38n9ov2m4TvOucMKfc2l9wLJZOg4kMXG+fS8kM1t7y?= =?utf-8?q?Ebnc3zJOOGjl/idbUKyAYuL72cQRiwVW/meTUhXtQq28WiinI2us6Kmh12m8Oo4TN?= =?utf-8?q?qtMDC4hAdoomISEhtXei126kH/zpb3Atp4Mdhnw4EXDLNAblHEyTIHek752lDNAnx?= =?utf-8?q?gYJ3YYHAKB2A4ddX+KQbrGQtvmBS2Ns1bROoKxULncNdyqJzN1LgSNWE+pmgDGHjm?= =?utf-8?q?woKG9MYTmWjwWXhHLVvmoU6+/p7F4lubbIZoeaOfMVI0TXu+Arbqpzd0Faj3dxCtx?= =?utf-8?q?WafAq9fX2mwG4RR/51bcxzA+IeqlwJBsJ7qEUAeUUFSLKb7lzXcJtu0pQ1gkcsR6S?= =?utf-8?q?/tGLh/HnpiRL+qg7nJnflwEXcOpeIoRQ61/oTTWSRp9SwFPafw/uZPOAYrzJ5LH3d?= =?utf-8?q?yrZyYi6RJO/Tv6fo7CX7WKyLR8hLSpC85RW2JymMcJV9VP0sdm9jHBXi/LkABEPzV?= =?utf-8?q?fSHGX2kDXq9WY/hrmVtIeuy3MnwwQiokLrd/bWFTl/u98iQHchFsXAxPzYbF2NkG0?= =?utf-8?q?gqtMm22LGD6k3nav48jo19XxCyNq4GgecfqV8kkq2H3uQJLj6bvkex42g/IC+QuvG?= =?utf-8?q?fanUFYfmRkj3JCztIQei1FZv8x+xp4zIpXc/PJLV/eBU54dRQ1QsVAfVqHxNS2uDh?= =?utf-8?q?pGXk83G5TUWHKWeHLIHcOQ27AEulvCUevLCOgrIN1/ULzjEJ8uAN94KoqWh4h2zTK?= =?utf-8?q?HzKpKqQ2kvHA2QNOMJ5r53KFzloT2ubHRpMc8g3mMNlQsqPmBaJ1jYojxf7Qz2Ne9?= =?utf-8?q?2meOWs3D+GKTSDoiieQAHd+ANAmGAFRREuHJjFXIwNSzxZNmaX5OtWtCCX+P5ocjY?= =?utf-8?q?B/2wm0Wcfp9foD5NhzuJG2eI5dOBH6THuFwsNrn1ZSHbZ4xdXIyyrH+hWFuD0aF9y?= =?utf-8?q?Y9ZBFeQwf6DKZIbbFcCFEJLLBCQyqOsL5GVz289v3B2lVVbfJgpYd7J67dOJgojUu?= =?utf-8?q?CK7viydrTqz25XTNQsAcTq4jxNqwNMefupemCKrhz648bUk7SMx/JDanBHx1mMuqt?= =?utf-8?q?rkqXGaf79F2Hn2pllXIt8RFXaV8aG+jBQ=3D=3D?= X-Forefront-Antispam-Report: CIP:50.222.100.11;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:uww-mrp-01.datadirectnet.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(82310400026)(376014)(36860700013);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: QfL/EjRKuEGLuFD7aQT8My8MQXvEX7ogOTWmgvFr5tWESBQGAHRqsOjJst1sqwWA9ppjCrGlig/BRsus5aN//UeYbu+TvVQu4uD0o3rEC6Jj+Xlzqt+Q3NKqIXV8K2I3pLY5+ewOZbQfZAOe/dOf1OKPOtyB9UckREqfxX6pG72lJ1kSua/TQUsyN+TOJFvG8aoy60RWL+XiZAXySkBgmnP0aghoV4r1/d/bDugnwxv/d3YU9B/FzOuT+F6BoRuCpWEk81842hxizaUjx2hzy6llNw4QA6+wWEKV4Rk7gfIqVP/I0+0z3v0te9mFdE3BX/aCbrP/5uCjvXW9OxPCZbpnt6zh5JyygurMBsX4dYhz3hM7U0SqN1vRur/k76YxQVlwHIyfqhV541Ki+uvUn5p3NFak49mOXU/3DA+sutPK94sZXfzSR367pz/q/zKkY+GWsXKc/HI4TxyerjZboiMR9wnvBXOBA6W4RVuzETLUE7Lu4fkKN4Mb87yT2HgXninuC1g3jk1ELG2bnmQh5nxmbsv82RcisgVa3Ed+Exn0EDkkiTaTC9URoqoOw5uZSnXtMjnCN0UG1v5RlnDNok7ud40K4sMQ8RWnpLn0Z30XgYzX8/gsSEgonIfH1WHWVYEdDq+y8cWa1J3/xv1IvA== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 13:05:14.5049 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2c1abd76-f032-4611-b519-08dd72b02cc9 X-MS-Exchange-CrossTenant-Id: 753b6e26-6fd3-43e6-8248-3f1735d59bb4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=753b6e26-6fd3-43e6-8248-3f1735d59bb4;Ip=[50.222.100.11];Helo=[uww-mrp-01.datadirectnet.com] X-MS-Exchange-CrossTenant-AuthSource: BN3PEPF0000B076.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR19MB3910 X-BESS-ID: 1743685520-106015-7818-637-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.55.174 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVkbGxmZAVgZQ0CDZyMLE2MDUwC TR1DIxNc0gLTHVJNkyzcQ8ydQiycxSqTYWAKVqchFBAAAA X-BESS-Outbound-Spam-Score: 0.50 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.263622 [from cloudscan21-94.us-east-2b.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.50 BSF_RULE7568M META: Custom Rule 7568M 0.00 BSF_BESS_OUTBOUND META: BESS Outbound X-BESS-Outbound-Spam-Status: SCORE=0.50 using account:ESS124931 scores of KILL_LEVEL=7.0 tests=BSF_RULE7568M, BSF_BESS_OUTBOUND X-BESS-BRTS-Status: 1 fuse_uring_send_next_to_ring() can just call into fuse_uring_send and avoid code dup. Signed-off-by: Bernd Schubert --- fs/fuse/dev_uring.c | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c index 5a05b76249d6fe6214e948955f23eed1e40bb751..c5cb2aea75af523e22f539c8e18cfd0d6e771ffc 100644 --- a/fs/fuse/dev_uring.c +++ b/fs/fuse/dev_uring.c @@ -667,6 +667,20 @@ static int fuse_uring_prepare_send(struct fuse_ring_ent *ent, return err; } +static void fuse_uring_send(struct fuse_ring_ent *ent, struct io_uring_cmd *cmd, + ssize_t ret, unsigned int issue_flags) +{ + struct fuse_ring_queue *queue = ent->queue; + + spin_lock(&queue->lock); + ent->state = FRRS_USERSPACE; + list_move(&ent->list, &queue->ent_in_userspace); + ent->cmd = NULL; + spin_unlock(&queue->lock); + + io_uring_cmd_done(cmd, ret, 0, issue_flags); +} + /* * Write data to the ring buffer and send the request to userspace, * userspace will read it @@ -676,22 +690,13 @@ static int fuse_uring_send_next_to_ring(struct fuse_ring_ent *ent, struct fuse_req *req, unsigned int issue_flags) { - struct fuse_ring_queue *queue = ent->queue; int err; - struct io_uring_cmd *cmd; err = fuse_uring_prepare_send(ent, req); if (err) return err; - spin_lock(&queue->lock); - cmd = ent->cmd; - ent->cmd = NULL; - ent->state = FRRS_USERSPACE; - list_move(&ent->list, &queue->ent_in_userspace); - spin_unlock(&queue->lock); - - io_uring_cmd_done(cmd, 0, 0, issue_flags); + fuse_uring_send(ent, ent->cmd, 0, issue_flags); return 0; } @@ -1151,20 +1156,6 @@ int fuse_uring_cmd(struct io_uring_cmd *cmd, unsigned int issue_flags) return -EIOCBQUEUED; } -static void fuse_uring_send(struct fuse_ring_ent *ent, struct io_uring_cmd *cmd, - ssize_t ret, unsigned int issue_flags) -{ - struct fuse_ring_queue *queue = ent->queue; - - spin_lock(&queue->lock); - ent->state = FRRS_USERSPACE; - list_move(&ent->list, &queue->ent_in_userspace); - ent->cmd = NULL; - spin_unlock(&queue->lock); - - io_uring_cmd_done(cmd, ret, 0, issue_flags); -} - /* * This prepares and sends the ring request in fuse-uring task context. * User buffers are not mapped yet - the application does not have permission From patchwork Thu Apr 3 13:05:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14036729 Received: from outbound-ip191a.ess.barracuda.com (outbound-ip191a.ess.barracuda.com [209.222.82.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2EDEE24E001 for ; Thu, 3 Apr 2025 13:05:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=209.222.82.58 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685528; cv=fail; b=pZQ8mbJVipClChfNjcwqOrOP7ms3vR5rQBtsU2kz9tdWU0hvM2JJJvUVzgKwS9F9WXwCC4Ukz5Mwz2v4/mKmHaCy1gEZrKBAZMF6Keon9T8uyaYRKTJVWLesN4j6146B6svKJZZLqLLp/wNiv9iUu+ivtnnxF+k5NcB4Z2kY0NQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743685528; c=relaxed/simple; bh=Dua8+hES0iXumoTTq1YQ89zt7sXm6RE3yEjmy3Dxfg8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cphPSDMbFrQNBV633yLdrWSLdJwTzr7SMAbzM/yb0jlzZQwR8L4Fo7s4OjNB+RvrutapAo+u9eLDGDxRL0nOjRnh31CDPeATR4kSLG23m272cUwedbI94pnbQBGGkxd+VZ0iNpgviiGSIfViuWQtOJX8AnCF4Na6Hhi384p23kU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com; spf=pass smtp.mailfrom=ddn.com; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b=sAJiiHJF; arc=fail smtp.client-ip=209.222.82.58 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=ddn.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ddn.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ddn.com header.i=@ddn.com header.b="sAJiiHJF" Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by mx-outbound42-120.us-east-2c.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 13:05:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ic3udTghpdm2ztZaWgVCRjezXyVHlFSB8gxChw8VJo+It3WW08pZ1DWamDSV/1+xoPukv3IDBKGma96PDd4grfVYfInpC6MckDGY0NNecLMibMeIG4RhI7d4hgVIXmeq+ExjwdhsXn0dnIzwWNY93z2zSf/D9mn+Png+/2w9a2GhbHQtAICbBA6gEJgD8lrF3uHC1sbjCfF8lFNGtaONQA0QZmoLBv/tGyg3SPKHAyO1zdALRVtefL99dCTP75J5gRpfZmvAXZtNquRKOJu9GFD5+cv/TRvKkHKhWudCzigC8Vx3gx0oe9aggEwAcwjCFtXUwbVWX84EwoWbnvHBcw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=906l0uz2nUjyJTIeUeXoSrOz5nvaEGy28z0fUxDyJ0M=; b=ZwwnQRaIVpdewaS59xzRi2Pmhhm1gedCD4LcdpZwadIDKnHgIvHZCx7Ezkoc3vjIq/EWar2rQ0YvMyeWp5Cd2q3G/ORaDcRFLRe1zmrRSBKu+X7soBL+C8IDOxEXZdDMmj6TCH8koiUZDI9hrqfOpEmLILmwCHBlZEh9x7GSrhUTK97Hamwwiww0becSrCwJ4FpH7DLZJGR/Z9JA1qjRwU0S9OEogsUMp1NzoK5mgW6Tm3N+KEIou1oDIvDckSW0nF0Y+MX6PDlIc4FOsaTbe3byrRh3rWcSnnhpKchW5yAIluB8DYIapIw0BzTvDIp8ubadbBvhwyjek6/tyWj6RQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 50.222.100.11) smtp.rcpttodomain=ddn.com smtp.mailfrom=ddn.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=ddn.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ddn.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=906l0uz2nUjyJTIeUeXoSrOz5nvaEGy28z0fUxDyJ0M=; b=sAJiiHJFj0VIIy/OpgQEaSgFunKdsOpTQWFzqr3HXUN3Sc9dH2mzLoPir+N/qAd0bxm11gQ/yIVAcTHOJjQGaJYAqpmhoy9mlvBzbUlvMNeCyiIJ1gI8FZABhhB+eR0/pwAmuUDRtxv0chRwZwJy96r9cpqo744OcAydYfYV11E= Received: from BL0PR05CA0021.namprd05.prod.outlook.com (2603:10b6:208:91::31) by MW6PR19MB8084.namprd19.prod.outlook.com (2603:10b6:303:246::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.44; Thu, 3 Apr 2025 13:05:17 +0000 Received: from BL6PEPF0001AB76.namprd02.prod.outlook.com (2603:10b6:208:91:cafe::12) by BL0PR05CA0021.outlook.office365.com (2603:10b6:208:91::31) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.25 via Frontend Transport; Thu, 3 Apr 2025 13:05:16 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 50.222.100.11) smtp.mailfrom=ddn.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=ddn.com; Received-SPF: Pass (protection.outlook.com: domain of ddn.com designates 50.222.100.11 as permitted sender) receiver=protection.outlook.com; client-ip=50.222.100.11; helo=uww-mrp-01.datadirectnet.com; pr=C Received: from uww-mrp-01.datadirectnet.com (50.222.100.11) by BL6PEPF0001AB76.mail.protection.outlook.com (10.167.242.169) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8606.22 via Frontend Transport; Thu, 3 Apr 2025 13:05:15 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 3A2954A; Thu, 3 Apr 2025 13:05:14 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 15:05:09 +0200 Subject: [PATCH v2 4/4] fuse: fine-grained request ftraces Precedence: bulk X-Mailing-List: linux-fsdevel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250403-fuse-io-uring-trace-points-v2-4-bd04f2b22f91@ddn.com> References: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v2-0-bd04f2b22f91@ddn.com> To: Miklos Szeredi , Vivek Goyal , Stefan Hajnoczi , =?utf-8?q?Eugenio_P=C3=A9rez?= Cc: linux-fsdevel@vger.kernel.org, Joanne Koong , Josef Bacik , Bernd Schubert X-Mailer: b4 0.15-dev-2a633 X-Developer-Signature: v=1; a=ed25519-sha256; t=1743685510; l=4634; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=Dua8+hES0iXumoTTq1YQ89zt7sXm6RE3yEjmy3Dxfg8=; b=JriWI+fPEFMOuKu0fjXj1yX+DRxu82y+JMciMRHOFaqseb/LKM9pEyohYvOdTa9HOMtBOgx4S gakp7VWxlzBBdWJXwcqqMFKBCp+sjC6K4HMCIq2jfopOmy3lNYtFn3M X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB76:EE_|MW6PR19MB8084:EE_ X-MS-Office365-Filtering-Correlation-Id: 506bbbe5-ac63-4036-621a-08dd72b02d59 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|82310400026|376014|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?nHJllqMin22639OBLt/jKVKHWP2rGJn?= =?utf-8?q?S0HxefOJ33+PCKNRc1eeVEc9I3Y6v/92WeXvPTow7lyakrJ3wyR9DJMnDxGuojI+9?= =?utf-8?q?xOSaQKUOWQinK3x+5MBSpCdEcNIRewm5bhmbMggYxv/A1Z7/WuEh2BeNH+w6kJ21/?= =?utf-8?q?DSmfY5KDqHEkWbgpU3axQEmAEA18Li2cM7Uu4FWPVlvk+PNJJtzvZGykmTwYIBAxO?= =?utf-8?q?Lhn/ndFXurDExaMcCEduWlfy7LweTHtdiK2R/sBLZMwyIEb9T+7h3zJrJs081Qd/V?= =?utf-8?q?0lLlqBqynn77/ni3z4VolXwZa+d70FlvPY+wdoa5djsnhhg82z9N/lvV9Ebe0LLF0?= =?utf-8?q?kWtmUZISTL1kDhXPDLiyLCCEieEMDF4h/5vysBVvPTEu5dm6zE5kB/ztY3Tc8OsYK?= =?utf-8?q?lswy3oKWwSk4tBQlmwCHBMftrFlOAUliP8P7oYAURuUZKFyo0p74ZprsrSGtLz80K?= =?utf-8?q?T/wLfLb3ZZHLYo+5MSuGaXU1/Lf30Fx5yEgMHk0Ro7NNC8qFSPdQSaM+jSe9PdHB8?= =?utf-8?q?Dglo6FNWbP+ng4KnKV0U0R/6kwzGu537HvvF7RyRC0BaDqYUh7yxwsY2AOUyynztL?= =?utf-8?q?RGz9mH9r7L+QYVC+i8/O4PiahbcJutrftTN61kImfVHqnHx0zO6IJ3oD5jksuthQ5?= =?utf-8?q?tfM9JZcOWn/rju3pvXYf/skuo5RcdcAvjQ538dEUtOQsAkqz07fSzTQTsWUKOYD3C?= =?utf-8?q?FJi4gA6kbX43Try47ns3cBimqU1HO3DYPQ3HCvNwodLvBQyiqB5ajEOAy/lpXrLB4?= =?utf-8?q?RBLncJdPxZLqqjRe4+j0aSVuZYwhj/3oTNBjiz5XfplmtRzSUXoRLPYyVlKiGGYE6?= =?utf-8?q?WJrrJILX+fp+mFBov6xiToUXbOfmZPse3Qeqt+yVyE1gVGE8FHaXndgURvZb1I8Id?= =?utf-8?q?d41wP3kYned9z8Kx5Eko9k9SEU/8Ls1iDp3ELEfm2Aarx4Yaa6Sxo3M3mJGZuJOpS?= =?utf-8?q?F50fVWbstfh4ve3ET7Q4a1hNXnuQX2UmhY9Ix/3tSs+LGgLajLyOLWtfHAXxIPRSz?= =?utf-8?q?+E+pDlBPF9awKUYw1EpTKBqRj+kVWJ2317/EnPTX7m2+phPDJRzTMd1KpXq45x+4S?= =?utf-8?q?MhrTyGguM3gc04LjWcwcp/GcpOP4PYpcQM2f3D9eXHdVUqfthiIZFXf7O2Wn1/kk5?= =?utf-8?q?gs2or+U347jAksiH04oB2p05N80/v1PFPOm+Dv8FDhNoyQyCcEcJF3xSLz/MW493R?= =?utf-8?q?9a/Q1Dn/txjKz5+nqrtoHsuLdFtFsYm7Tmov7G/mhP2B3HyXHUXONTFhcsrgmXnDk?= =?utf-8?q?uhiHzFZPoTdY38jKQfWn5zbg4A7NpnhtlYHZrkDAfEh4liE2/ZDoGBaEVpZ6o5/+8?= =?utf-8?q?ad9ejMgBT1cb9wBdIYYTyqrjcMbHZ//EbgF7+5OaHVZqqwCxxvpvz2Fmtz0P4hI2+?= =?utf-8?q?Lh8a3EHPKfXiwct+R30m5F7bqoCMv/bhnDZbXXvdzK+Zpww9Ck4EC4=3D?= X-Forefront-Antispam-Report: CIP:50.222.100.11;CTRY:US;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:uww-mrp-01.datadirectnet.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(36860700013)(82310400026)(376014)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: LemZRmT5IUGQWfpAsxYKVW6LAzRMaCTjSRXd7h/wyQnd7sbwL2ROHcTJNLC4REpu94C4VF740NYlA6iCq/htanl+rmfOFK8UjPgLRt1kpSgbS5Sb3u32ND2I7UkoxSfXLXNtXzDX9jIlL5lbc2P26/0nJJs9O9UMBR5RLEtW6WA2WHauiVpErqkLqhKXKIACnWY7uM7h24WGpmc1xlaVkrUVSiPk/0picgWfaSXs8GPd/ik3D+bmjU+LO6MzQMxjApzKgJ7+qSpA+u1NpLEssSjqC5e234MLt7f86H3euwOwEIeo7ml3FYnNHEe+zX6s7q6U02dDTHca/Lqvdzz2bRso2sBZI2sUjeZqPeBSClTfyXEzFfwCZ7p6KO6tD+xF1J9DORsxpuh4vrEcbMFS3C/3uiUo+mAaNGUrL+Ohta32X3wYXhzpUkWvGeAOoCBaEBi/RbBkdQExRXzzkUyAvjVGOqctFhNlw5xwneJtKJX1gUJekDV9GvWJU3zq7kZ/3aKNB0u7K5iQB73cffAo90YZklms0dvmPqtqb1c5AJgxbl8b1EIzMBbvHE4CeIhSXdr2LOHFlhw6pTE88cfMr9ZB9YhvgZmsG1meLMQijWFsQrwLcCmS0XPlKs/Rh7y+zoscxqbtxnFhfzV5FyVmyQ== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 13:05:15.4621 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 506bbbe5-ac63-4036-621a-08dd72b02d59 X-MS-Exchange-CrossTenant-Id: 753b6e26-6fd3-43e6-8248-3f1735d59bb4 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=753b6e26-6fd3-43e6-8248-3f1735d59bb4;Ip=[50.222.100.11];Helo=[uww-mrp-01.datadirectnet.com] X-MS-Exchange-CrossTenant-AuthSource: BL6PEPF0001AB76.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR19MB8084 X-BESS-ID: 1743685518-110872-10170-13523-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.59.169 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKViYmFpZAVgZQMMUoLdnczDAxJd EiydDA0MjcNMUo0Tw52cDYOMnAOClZqTYWAAQQG+xBAAAA X-BESS-Outbound-Spam-Score: 0.50 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.263622 [from cloudscan19-234.us-east-2b.ess.aws.cudaops.com] Rule breakdown below pts rule name description ---- ---------------------- -------------------------------- 0.50 BSF_RULE7568M META: Custom Rule 7568M 0.00 BSF_BESS_OUTBOUND META: BESS Outbound X-BESS-Outbound-Spam-Status: SCORE=0.50 using account:ESS124931 scores of KILL_LEVEL=7.0 tests=BSF_RULE7568M, BSF_BESS_OUTBOUND X-BESS-BRTS-Status: 1 Rename trace_fuse_request_send to trace_fuse_request_enqueue Add trace_fuse_request_send Add trace_fuse_request_bg_enqueue Add trace_fuse_request_enqueue This helps to track entire request time and time in different queues. Signed-off-by: Bernd Schubert --- fs/fuse/dev.c | 7 ++++++- fs/fuse/dev_uring.c | 2 ++ fs/fuse/fuse_trace.h | 57 +++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 49 insertions(+), 17 deletions(-) diff --git a/fs/fuse/dev.c b/fs/fuse/dev.c index 1ccf5a9c61ae2b11bc1d0b799c08e6da908a9782..8e1a95f80e5454d1351ecb90beacbb35779731bb 100644 --- a/fs/fuse/dev.c +++ b/fs/fuse/dev.c @@ -281,7 +281,9 @@ static void fuse_send_one(struct fuse_iqueue *fiq, struct fuse_req *req) req->in.h.len = sizeof(struct fuse_in_header) + fuse_len_args(req->args->in_numargs, (struct fuse_arg *) req->args->in_args); - trace_fuse_request_send(req); + + /* enqueue, as it is send to "fiq->ops queue" */ + trace_fuse_request_enqueue(req); fiq->ops->send_req(fiq, req); } @@ -580,6 +582,8 @@ static int fuse_request_queue_background(struct fuse_req *req) } __set_bit(FR_ISREPLY, &req->flags); + trace_fuse_request_bg_enqueue(req); + #ifdef CONFIG_FUSE_IO_URING if (fuse_uring_ready(fc)) return fuse_request_queue_background_uring(fc, req); @@ -1314,6 +1318,7 @@ static ssize_t fuse_dev_do_read(struct fuse_dev *fud, struct file *file, clear_bit(FR_PENDING, &req->flags); list_del_init(&req->list); spin_unlock(&fiq->lock); + trace_fuse_request_send(req); args = req->args; reqsize = req->in.h.len; diff --git a/fs/fuse/dev_uring.c b/fs/fuse/dev_uring.c index c5cb2aea75af523e22f539c8e18cfd0d6e771ffc..e5ed146b990e12c6cc2a18aaa9b527c276870aba 100644 --- a/fs/fuse/dev_uring.c +++ b/fs/fuse/dev_uring.c @@ -7,6 +7,7 @@ #include "fuse_i.h" #include "dev_uring_i.h" #include "fuse_dev_i.h" +#include "fuse_trace.h" #include #include @@ -678,6 +679,7 @@ static void fuse_uring_send(struct fuse_ring_ent *ent, struct io_uring_cmd *cmd, ent->cmd = NULL; spin_unlock(&queue->lock); + trace_fuse_request_send(ent->fuse_req); io_uring_cmd_done(cmd, ret, 0, issue_flags); } diff --git a/fs/fuse/fuse_trace.h b/fs/fuse/fuse_trace.h index bbe9ddd8c71696ddcbca055f6c4c451661bb4444..393c630e7726356da16add7da4b5913b9f725b25 100644 --- a/fs/fuse/fuse_trace.h +++ b/fs/fuse/fuse_trace.h @@ -77,30 +77,55 @@ OPCODES #define EM(a, b) {a, b}, #define EMe(a, b) {a, b} -TRACE_EVENT(fuse_request_send, +#define FUSE_REQ_TRACE_FIELDS \ + __field(dev_t, connection) \ + __field(uint64_t, unique) \ + __field(enum fuse_opcode, opcode) \ + __field(uint32_t, len) \ + +#define FUSE_REQ_TRACE_ASSIGN(req) \ + do { \ + __entry->connection = req->fm->fc->dev; \ + __entry->unique = req->in.h.unique; \ + __entry->opcode = req->in.h.opcode; \ + __entry->len = req->in.h.len; \ + } while (0) + + +TRACE_EVENT(fuse_request_enqueue, TP_PROTO(const struct fuse_req *req), - TP_ARGS(req), - - TP_STRUCT__entry( - __field(dev_t, connection) - __field(uint64_t, unique) - __field(enum fuse_opcode, opcode) - __field(uint32_t, len) - ), - - TP_fast_assign( - __entry->connection = req->fm->fc->dev; - __entry->unique = req->in.h.unique; - __entry->opcode = req->in.h.opcode; - __entry->len = req->in.h.len; - ), + TP_STRUCT__entry(FUSE_REQ_TRACE_FIELDS), + TP_fast_assign(FUSE_REQ_TRACE_ASSIGN(req)), TP_printk("connection %u req %llu opcode %u (%s) len %u ", __entry->connection, __entry->unique, __entry->opcode, __print_symbolic(__entry->opcode, OPCODES), __entry->len) ); +TRACE_EVENT(fuse_request_bg_enqueue, + TP_PROTO(const struct fuse_req *req), + TP_ARGS(req), + TP_STRUCT__entry(FUSE_REQ_TRACE_FIELDS), + TP_fast_assign(FUSE_REQ_TRACE_ASSIGN(req)), + + TP_printk("connection %u req %llu opcode %u (%s) len %u ", + __entry->connection, __entry->unique, __entry->opcode, + __print_symbolic(__entry->opcode, OPCODES), __entry->len) +); + +TRACE_EVENT(fuse_request_send, + TP_PROTO(const struct fuse_req *req), + TP_ARGS(req), + TP_STRUCT__entry(FUSE_REQ_TRACE_FIELDS), + TP_fast_assign(FUSE_REQ_TRACE_ASSIGN(req)), + + TP_printk("connection %u req %llu opcode %u (%s) len %u ", + __entry->connection, __entry->unique, __entry->opcode, + __print_symbolic(__entry->opcode, OPCODES), __entry->len) +); + + TRACE_EVENT(fuse_request_end, TP_PROTO(const struct fuse_req *req),