From patchwork Thu Apr 3 20:22:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14037567 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 C1E0D1F03EE for ; Thu, 3 Apr 2025 20:23:04 +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=1743711788; cv=fail; b=LLbF+w867OaDn3jm0Pic1qlh6bQVpHLZGlio6R8cj/d75SFB31ipU03XtOZd/mD2of1FRDvQ4Ob/86AouWu60ERiL6wxDTUEGYJ4ie/GHdIPGleV5IfvD8TMmi6cAJHFagMX7eoA1jIVc/jqp26NXHT99+dK/p9EPbsyRLnylM4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743711788; c=relaxed/simple; bh=+H5d4+HjaXggM1OVhJ66708re3e0BUKtpHGh11I8B3E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EAU+1v8Q7iefrVmkw15HCBl2Y5nlJ7wzVw+67FKTH1m9pb3OLXWtz9SGv4TlWnowIzoixPXmcM/u4ycvnHQCUn1FvrNB3xwVrxbkcKLtfjAF96G22VgzZcgYeXzyu0coGWLDNRp97tmSEnirQIH9KTHNCkMETI4UuCyFeiSKlqM= 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=hKWQwvMY; 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="hKWQwvMY" Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04lp2176.outbound.protection.outlook.com [104.47.73.176]) by mx-outbound22-67.us-east-2b.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 20:22:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nHO3B+2KjACLpBANiLo3rda9+N2WRookNK92CE55jZ8X/xfs/PvstK1l8GSu5F+WzL8zWtw5E0/cNEfEXnQeQdY3jVE8bzEctrj0tfDOolm4vpncRO8tSLgj2sXadpmqeum+ttbMsTYPLnBK9rxHTUbfxRj+28HBGhln6DYACSew1B7+VSDOTQfXyY5z4wEP9CEUADj81xvFv6TH7UZk2fsM4B+qQolmvJYcD6zqNhsFP8NDgNElSUfSMPecRC8wIcSBWfXSo/G2VYNFwZjhXAbMBQ4bwV3PCjdwaMQa7uHkYgDClY1xR3H1cKHPoIq9hXgmaq2tQWLmQoYZhKfqIg== 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=mnWArgEZ/mERbronoBEh1oTWNMpbuidXjFCxeQHpW+U=; b=isLvRbT+dFgf79RNj6Dawp2lUqwMiiwxerSF01qzZR8modJ4xTT9qi01DaCGfujQDNMkw2k5l/86h3lHe6ydz9G8pUV0iEi/n/FyWfbNUG8yktTaZNTQ+EEkcPJxlytX8Wg11609ZOrwGuHK7OWnu+zY6yvrg3uNSc4Sq+eGb5PxohunIUkvXycXiWoL/8ie49zVVzjbrFikmE6b7G68ayjMkN2szQJYkrkRP7gtWW+sfUDUDPj8o21M53bsg/3+Wz9tFbqWx2XS+ICXq+eM0pBQOLvjPSrnKkiBceYGbYIreUmqc8AU0Qo1kqOQ3bpksQFbPZ43CQpAM6sOWrZPQA== 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=mnWArgEZ/mERbronoBEh1oTWNMpbuidXjFCxeQHpW+U=; b=hKWQwvMY1kj5zm4HM0kJ7/yG4FnlJk+/gGxzEUKpCacLdeuEofxgZYW3fgnT0QvwvNogtX3DJMBqs+G+o5KpTY63E5pn7DsOdmbHSox+buF+QsPaanW69ks7+5gvRDUOWKLSZZTlbOvPI3tmc/LCsOvuDCBXii2RYEEA3PZv0hU= Received: from MN0PR02CA0015.namprd02.prod.outlook.com (2603:10b6:208:530::16) by CY5PR19MB6243.namprd19.prod.outlook.com (2603:10b6:930:25::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.50; Thu, 3 Apr 2025 20:22:51 +0000 Received: from BN1PEPF00004684.namprd03.prod.outlook.com (2603:10b6:208:530:cafe::53) by MN0PR02CA0015.outlook.office365.com (2603:10b6:208:530::16) 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 20:22:51 +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 BN1PEPF00004684.mail.protection.outlook.com (10.167.243.90) 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 20:22:50 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 7194F4D; Thu, 3 Apr 2025 20:22:49 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 22:22:45 +0200 Subject: [PATCH v3 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-v3-1-35340aa31d9c@ddn.com> References: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@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=1743711768; l=5386; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=+H5d4+HjaXggM1OVhJ66708re3e0BUKtpHGh11I8B3E=; b=F7l4k4+s3In7gEId7C/PGWGtFRnXiCjfmqPVzwVEndukhqoHOZOngQ381YRZXrQsDmLGVsTqg nNCQlMi8s/3B6RnT1p+LY2DT0zMZUW403/7mqI9lTe33uBDVC+h3a54 X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN1PEPF00004684:EE_|CY5PR19MB6243:EE_ X-MS-Office365-Filtering-Correlation-Id: b449b176-d214-47d6-0f7f-08dd72ed4e7e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|376014|1800799024|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?q?2F38YvAtFLzhexupIKp9vw/vBmNWmOV?= =?utf-8?q?q7g/mfHbk6s3qkZfFRrLf2OdkqEEmAeQMuiyKcrmN7hxfeXOFHpbUikvsyLr2nZgl?= =?utf-8?q?5D3I9zxCW36y60RcXzqP0/IW8V8/S73G8tFVCisxgR8JFA5Djl6qoBeIUdh9dtFyW?= =?utf-8?q?wesWGYg1DNiEr53vUsfJHgbvqQZRsX88YSV+c/OsuyeCkfi587JHDbUGAGOLnnAgS?= =?utf-8?q?UbcSuimFto5hC1+C8zHJFLVq1jptTUCSDY4sYCIS2xEgQdNkiLCHxHqkJ+3+yRqIG?= =?utf-8?q?KeroArLcJw94Gf2IYGruRKH7+nkurJALTjlcw4SiQwClkbh1EKW9EncBFgt6j0SBJ?= =?utf-8?q?cXJxIW7IzdlX4XxVg2zbOCR32SD5xldnn8NPIMmXsvv+fCgflyBWj8ZK05Q/+VAkS?= =?utf-8?q?tIkh1RfK58AkW3ibDuh/UOj+ztFlKMmLd6yBhn5C7JD2RtLnajpYvJBj2Raii/a/m?= =?utf-8?q?hxD4SeHNNrIwzoUzYS/fYSI0ObNrcUJLE80bZCHOa39SBU2u0YYxlgOj/DBPpKS/4?= =?utf-8?q?CbBuPHothhXymrsyM87n+m7IevNzxAG1yRZ0J++pRN7fy4j37Ja9ebJSnBVK0oQtX?= =?utf-8?q?0tTkpJoc1veweQD8DteCEXq8o9tYcwSlNeypTGOslJlsGMsuRgzU438niTaNl94IS?= =?utf-8?q?zOIS/qr4HWkpgg71D/auWbpRbwX1l9AlgbXq2eGi7JGmqd72aBm+M/X5zeSDmjqCo?= =?utf-8?q?5WwRwnlLXiy+PaP2t79Dd25OtTq+Xo4CYPP8uyH/US2yHeYAmLK9LsirSndNvhd03?= =?utf-8?q?PQTH2ocqNYsMhGEWXIExUfAduR2Dil7yq4F4frj0rFUTVuH18S7XnXkk/JmeFpVGI?= =?utf-8?q?itp/AIDvvym9+eATJUsQ5UvyqBXKoykH8RD6Ee+QgqNeQOyQk6HE5cfqKcjVTSNJR?= =?utf-8?q?t5WoCESOoLcpQAZGh+WeRUhqhrpPEJXk4zdikDZ5C7z3Tn1HN5gJ0FcsOJ+YBKDOz?= =?utf-8?q?f/ZUjSNuAh6pcnGmom1FNvurJTwIgwqhjJR8AYV/Epj4G5GSBkimMUn/2yqSCxkFk?= =?utf-8?q?lRnuSPjSyB1QU97kPECy0x4kgKQcRb8UyHZETmtYC8awluWFtVgFiErQwzmCdcAza?= =?utf-8?q?zY3Za52po1q7/ApH42y4KfSnPS9GKHs14992ZyxoRGHow+BKX3ItctVJ40JC1O7PU?= =?utf-8?q?Apv8btUjuRdruMDsxdNgFRETJEVvmI6N1wfiBza+f2h6IPLSeCLT8q0zQjEzayzm0?= =?utf-8?q?sy9lmbP4g6ywKG7JD03QPmZtC9+nR8aOL61zdHeyt7EDM/5jxfe8fyA/ecfi/OyVE?= =?utf-8?q?goZYDrre/0BS2VDzRKQjeaVkf7luaXGU9WHkKRhde5V/nZ9CSVDKh0qGvVwa4Tqmz?= =?utf-8?q?i9mZUNClHH448NHqMXjkLzk2yL+zymTH2KTru1VkKosGpgMxyR/Nvy+WW6Qvg31DX?= =?utf-8?q?j2Ucx2ULY0ycjQtxwyFhzAydVOR6wGFzpGgebOyZn3CJhEW5taR3AI=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)(376014)(1800799024)(82310400026);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: bfyIMm+2Q+UGBKnU6RvUr4Hf0OWo2FiSlRm1ip7WnUvJcdVCHsa4Mifr/8tqYhOumWa7mzfePDaQqEv0Zy0SW7s+QuxXaF1s7D0b1xmEFMxGact2zpmfB8Jh51vEzuRGvyQyHgsNYJ17/UbkCmTlijatPPoNhWnaNh+3eDpy+JLK5KlLr0ChHGPJcIZJbO+cLGpRECQ6etvt5WPeFLPQYwv6b9KUXfPIUzwhB8qV15xWxsX9hvCTuIyapzkgWOvLPCUEPBDzRyIT5Lz5sGXL4tzpQt8MLHuSWI1aE7aI+ZSJLkuEeH1hVfzbluYMhXCMtiVWqe912wFaN9eRkUeYRW99IhR1yoxDgQCsTVKsRT+tyvrUJ1bN6+SqKYmb/MQzXC11hfbJn/WzjMvJ4zdlE6QRt6UC44nukzB9ZdY7oQ/AeOj6xJgAA5xjtKBtL0N7pztEA+c/zvOUWf3fo3mhnaowYyJFjkZvrr8UBVyk0Zu8rm4m5951pwn6lzbaxqi45qC/9UdqTVF3pKk6tTp2K/sUwd87Yv3r9Ry+n7OmqcWUMimuAHFpmZ+4ICWv5y9fY9Xj2yqEzNr2AV5pzyQTV3eaVqSR4+85FMaArSwt+a/S5Ypal8qGVZyJiUTOWzchDnh96mPXeVyyia2bB3U8eA== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 20:22:50.3678 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b449b176-d214-47d6-0f7f-08dd72ed4e7e 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: BN1PEPF00004684.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR19MB6243 X-BESS-ID: 1743711775-105699-9992-81-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.73.176 X-BESS-Parts: H4sIAAAAAAACA4uuVkqtKFGyUioBkjpK+cVKVqZGhiZAVgZQ0CQtKdkyOTXN3N LM0szQyCAlOdk0LTHNwtQ40TTJwMRIqTYWAHA+3YVBAAAA X-BESS-Outbound-Spam-Score: 0.50 X-BESS-Outbound-Spam-Report: Code version 3.2, rules version 3.2.2.263629 [from cloudscan22-245.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 | 21 ++++++++++++++++----- fs/fuse/inode.c | 7 +++++++ 4 files changed, 26 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..80a526eaba38aa97f6a6faa60e5276fcd7f2668f 100644 --- a/fs/fuse/fuse_i.h +++ b/fs/fuse/fuse_i.h @@ -44,6 +44,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 +494,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 +1069,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)); + 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 +1430,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..d2d850cca4c7bc3cd7158e773c5e602e15afe4e3 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; @@ -938,6 +939,11 @@ static void fuse_iqueue_init(struct fuse_iqueue *fiq, fiq->priv = priv; } +static void fuse_iqueue_destroy(struct fuse_iqueue *fiq) +{ + free_percpu(fiq->reqctr); +} + void fuse_pqueue_init(struct fuse_pqueue *fpq) { unsigned int i; @@ -994,6 +1000,7 @@ static void delayed_release(struct rcu_head *p) struct fuse_conn *fc = container_of(p, struct fuse_conn, rcu); fuse_uring_destruct(fc); + fuse_iqueue_destroy(&fc->iq); put_user_ns(fc->user_ns); fc->release(fc); From patchwork Thu Apr 3 20:22:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14037566 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 A8C371EF0AB for ; Thu, 3 Apr 2025 20:23:02 +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=1743711787; cv=fail; b=b/5k3u9QtoNhIY7Zt10rXPICr8iUkO3Cx2YE3mqdSMkgjTHBHjeuHkq3DTKZynmXH7IAVKiFi5o4apOMwTrsTeelS2mRMdPz1CLoVyOoV3mDzoHLqL+eyLZs3em9KcIijBDmqvRYemCWBopxZQEAVEq3ofxRe2TcD8cF6fGo120= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743711787; 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=ICzZxAhMWpG5aYH6TRg4FlFCc2hkdKrVaBFmAJYSWUN3MtlBBikikRkW+CuFPYW3EC2TzTOqhjorW1ypSIsDmIw0dewnFECz5OJXWSkHqIK71mdwB5E7inTuzo0xJCk0LRlXvR8iGpCLXl1CArYUit3yGeknfdV4uF7BTCssKuY= 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=VBPhzBzi; 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="VBPhzBzi" Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by mx-outbound47-169.us-east-2c.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 20:22:54 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Er5LxKlIujh8GroCAuavXKb5Cm1oweUqcQU99pAbsf9qAGUr8iRSK1c7wc5E7tK+xrRgKtHirZ1J51zDq5Z4X8H6mtYP7YAqtvESBT5ronlX4mXicyfBEpMb1RVacAJT9D3gH/lXdrqElGyMUKAwlCL9UiLB9NfyToJhv9eoVNWWl5e0IrxMEPQvPe4fWQdxca2xIJyTe1vpPkNmYewTxyWjiogATFlstmNT4l8WfXKMZ5Any0jc4wlqB+QDQqTCMTN5ddZUgrn7/F6ojlGTFxbqd1mtC7AWmPzguGbapnGTYsjklN4k3btuy7Eqeza5nL7eqgIBHXMj68fAiJhByA== 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=E22nIIdD8uoBF6O7zRAkq1t/xgoYh94oozA1bGc5odZ+xw6ACinxJyrPiUaXYDPIe7DPPqOM8rMCsQOrFdKYudhXdiO3DsutnTBYh4OoAX6GILUjytn/lX9yVuu00ojT0RWRBQYjuNP8Bfj/pd5d8kmyrJfWUVZ1CMAtonHAjYmsNQ9hMaU3uNA7zsdb25pv1/ztsBB64lJjt3M94JK1pN4l4ipZ8SHUNeN5H5/5cwDCoF4Hfu4eXYFPtehW6TOT0N3HsxLX/hLWIdO0sE7Tqw02CZP2MtNxPZL5/aAZQT2ChrbMTjXt+qXxvZMVYPxSJwFmZ8aVfK4w8ToSebASEA== 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=VBPhzBziJPD1Q9WqLmd6+FL92YAtomuwuvPTT7U/xCNJzvcQUqfSLtcR9sctFNsAq7xDkLhr10QPqzUBCTHCdwQHe+l8XGtpHniqcwDMcsTnmS8Q5ORnA9zFUEfTaEq9DpP+yZLPl/xiMxIHWffs9HN/AT+vpu6jbjYE+mF37I4= Received: from CH2PR08CA0005.namprd08.prod.outlook.com (2603:10b6:610:5a::15) by DM4PR19MB5980.namprd19.prod.outlook.com (2603:10b6:8:6c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.47; Thu, 3 Apr 2025 20:22:51 +0000 Received: from CH2PEPF00000146.namprd02.prod.outlook.com (2603:10b6:610:5a:cafe::88) by CH2PR08CA0005.outlook.office365.com (2603:10b6:610:5a::15) 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 20:22:51 +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 CH2PEPF00000146.mail.protection.outlook.com (10.167.244.103) 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 20:22:51 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 735544E; Thu, 3 Apr 2025 20:22:50 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 22:22:46 +0200 Subject: [PATCH v3 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-v3-2-35340aa31d9c@ddn.com> References: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@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=1743711768; l=2914; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=ziYZV/W/d52W8kKfIYz5/3su24KBpyjnMK0qQasJq7c=; b=MP072FjBgG1kwmxQ4GsItwMN2iw3Vi2Zbo/5I1mqCZ/Oc+lmape1SoQnumg6VJrVfvOn+7nOc qrUiISVDHsECbmgOVkSGdr9DsXtsFmhabBf4ftppnW2BgS0n7yWI/0u X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF00000146:EE_|DM4PR19MB5980:EE_ X-MS-Office365-Filtering-Correlation-Id: e8f5dc71-53f1-452f-3be0-08dd72ed4eec X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?utf-8?q?Nck3uGwLMZWHPzYWKvjz65jkMS6wEQ/?= =?utf-8?q?r4uC0F92Mxs3Er4M6FGFMiZW7/bJrE8u/HW2QU5Pu4a9q00TbHr2ykFFdqJblxFJi?= =?utf-8?q?xiYuRgUuE17PVRsERK4XWpQol3kT85DWCDHeaxOuGBM1b+qyUwgbrwOxwoijaAs59?= =?utf-8?q?bsdzTLMaMc0tREHKV9AA2n+tBcgHpAheqSV22H2TCFz6vXsnK6sWsjTKTE/Kq3Hx9?= =?utf-8?q?/FS72EBYC5ob8ziGN6p/EZgfZBQS6YI2e4aL6NP/cm//AQ93ne5pYFOaaD71IDKbF?= =?utf-8?q?v+3GgJtknzngbiWC5vDxAkAJg1W7U/NMfHGMAI7kjJ4sX+qunmCQew9peg+55lytE?= =?utf-8?q?J8c2lekFaDjBVOM0oGGkObk/SMzFnHtL1a0Vx5VomwvsY6OPA0jewNNSLm/RXXDiT?= =?utf-8?q?VhsxnQLafb21l3tsmMdYO+NSJyJZ4geHfMKOLOFezr+pMAgFFapEbdhYrVXFbO13a?= =?utf-8?q?mKEfRUbcETR0PU4bD7cULSauGkGrkeLmteZNE+sx6t6Xli5a//7EIhZBqdsYVS+gT?= =?utf-8?q?YtrTBNFd+c4ZzePzOmQVc5y0Vg0z/mCLs567QsLYHdL5leNKx4CBr4bJ93OmYdMCg?= =?utf-8?q?sEanbJKpqtp6S7KUR0XO/NV6moA2f/yGRfRBV2IJjboSULnUnfQRhc/SvsK8+Gl7L?= =?utf-8?q?9gBS75yY5znkYNMSeNjecHv5FIFPIXA1qkTy/YmN35CLmjXoOCFflWNQOW7yF0cmL?= =?utf-8?q?5FPoZR6Nyp/eiycREbXsDQ6qbXgBLte+yE4dYcfRLGMfT4FD9n+JLqXU0L0VAazgK?= =?utf-8?q?1wgooII3q2JxNJcsfmCn7J7DutHF63OYS1NNMEXowSI3elz4VoxwmYGlOXIBTirST?= =?utf-8?q?PkvogGf9cCu3JedZtnCxwmYA2p8Z0XMqxioqJfEVOegsyCuAWLxb0Lun25c8QHLDI?= =?utf-8?q?tGVroIrmF9wLLHjSrahfhbRYYjV03uATMgjSe8yxvbWop+QU5hWRHLIujfFyxme4A?= =?utf-8?q?+yUcLbw+YGNnwh6M9PYEpqUE5PXQWscQgcLMG1/9amv4rem9NQkjVxFExMgGqrEcX?= =?utf-8?q?hv0luWBITE+apbAnEW99ODwIBK9be2bDVgrB5/JBjNOt70JJo4l9DSdHurubidSTD?= =?utf-8?q?LBe4m7eL0F/hIuG1BDgoMrlP5m+MwFdmoRpiCTdgRecYCR8dUTuTUd421TybzBj2l?= =?utf-8?q?s0hXIDUojKmJc1DALvuDuuu57OwVZFhXZbU2FqnAAaM9Y3VQMAJA99d4U6iHBAnDH?= =?utf-8?q?cC1IEEj4BHtCJaog0Zhk64AQQ4e6DsKkhkMfaEp6a/mRLf/Nf5g6IxcHpZhdY6Q0c?= =?utf-8?q?5886dfnnil4IZ1H3i43g9oH1VRqWWnT4QQZG72K9eD8P4Ob8QmvHsi3lHDUm2wPZ1?= =?utf-8?q?aeZa0P1GCRdJeJemI805CSnyzRrEHWHGBqLEYmwMS0eWs38W1DESOKIFrx2H9RRvX?= =?utf-8?q?AYuKldyXfwB65WoXJfVd1LWJ4eH989oDrj9hEOGcHoHgFZSI/qVy+E=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)(82310400026)(376014)(36860700013)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: hskrT5yS6gwaW4eK+b+o+6s5FszDvx1u/e/V6ir5+axntzZnITXYzsDXdJQ2xWZQdbKHp66ItK33EAs1ATKx+RQAgIstaSzz0UzCIxTzrAIoJPirS79/Bg82OBXXouf3nkDSt0ej2VXUHl6/FhxGKu9Aa+ZsLewT5RJUot6lH10DRIpZeSfq1WWuAYo6EXL9i3Kcsiifiu50rKZ9GW+rdW61qoch9pXR1eK8mpkYgO3MZveV8nmXOv4sQgv7S/rMZN1BA61HM+n5NMg7hx0xJAOUTFdhRAS2iRVPhV9gtGc8SV09/ul+qAabSYWtvnghgEfQIb/QUp3R0fytvdkp8QOV9eSykJj3ZBc1G/YV5K7mmDVFxxyS9ACeEiQdWLpjiVyUGj6TO8oIqZoK/Kwr27GbUqjn30mtXYicsqkCWUXD+PjVzVOvml82nOX4YHrznvC9FdppAC5JJnT7hFg39VkOINBPyiZqyV8QRLNqdk3rma1kesZZGnxefR/diFJG4lMxupo36TxXfXzm3/iVpKbtwbo0qLEIsW7b1o/a4G0hDJJI+z1W1EdShdXejgy4uBtKCWYJx5aavJrF8f+9SUIKUgC7wXV4t3GjpPlpwfMdrK6w2IWupZYBsY1yb7Zjf+FkaFdE21zktuV74+g+yQ== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 20:22:51.1836 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e8f5dc71-53f1-452f-3be0-08dd72ed4eec 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: CH2PEPF00000146.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR19MB5980 X-BESS-ID: 1743711774-112201-7669-21115-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.59.169 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.263629 [from cloudscan19-170.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 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 20:22:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14037568 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 BCE8B1EEA42 for ; Thu, 3 Apr 2025 20:23:05 +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=1743711789; cv=fail; b=p/vUU0MrxcnGTrj0uq5SLTwLBFatS7Bzy7TTFRUjwiw8V0sXYQyWt30Ix+q4gKO87UYM98/sX/P/MU5qVu6QzODI7j5vV/ajHWRtFgS3A1VzvQ88EM4hxuvBofzzBvUImEBQYC5ZKBceYb/c2evewq3riqjd/r5ILJPn+JRnjA0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743711789; c=relaxed/simple; bh=t/qWU7S8DFwFw1ltRPZymLwhxW9CiMD3+kpjL0lZZRE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VOr0ytcrlJXuwFBDd8Yw8Ev4BEe6Uyc8lvJC3n7ozNMnNp6E2allN3xwhc7xO3FAFg4lwYkQbhvhJEpduKQiZkaVwFFKmtNIuMRSnl45qj0rvg1Hyqtmlj81HsHijKk/BZF9HSb8xjbFW3uU/uVCg0YbS08VWPjo1yRrnuY3wPE= 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=UFw5EabJ; 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="UFw5EabJ" Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11lp2168.outbound.protection.outlook.com [104.47.56.168]) by mx-outbound-ea41-28.us-east-2c.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 20:22:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tAq+Di/srMTgY3BTjjGyE+L0j6oijLzSW6+RtLIM66CiCMZgtWBsi+1BLHpUtj0GI4Lj1T7jbgIYt7qm12kFc1iUP/aWQxVKJXsf+E+8/kwJaBm0zYdlIjlSjhz5NOLi5DmmsnCfgc7Jt3VePKpEaNQb/oAokY7/P4z/kUhAI6qFJD4JkEjp+DIiUGAYOeoUS4miazHujCEkNacDvWZef9/GkKHVVgBWONgT8/q36hkpBvs66wLh/De6ovhHhQAYQtR/MNK3xV9lj/KLmNDT0X5BzZA60CKmoAMzVKzVOS2lvKq67d0xfK1rIXxDPHtjCpSy694QuCUkmRq+V62UZg== 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=Uj02+7C/Fm2Az+rxA6jmptyn7woA4zcFbjdrKlJPDIxPtpJSRWKiZiJqr9zP6D5zLU3EiHRPPlp1WPC/JKbCF34be8f/aeEwyqn0u+vWuaI6+1/Sr6RHYHSfiy8lSJ7BIT09DJG4xVpqyxPMJLMEGqXFRclUMgSbrxYfUGNxStWHisI6V83tglgjUZ2V8tLRuJBBpf1p1/hKYgWFTGQ9SL2RbBcV+Z7XL2BzSZ5eOGteeZ8y0trnc+nh4Iipwj1uj2EpXSfVP+07E3XH7+WElCLWkzpGqI5axvB4DkxjFW25ccbPraLEzOAITOsXF657mGBUZVZJCIWBK8jFDNDMQA== 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=UFw5EabJmN6Iy7nq7QvcYfC89u8e3wRZjcqxec0Lyfz8js7mHWOi8LZnKQhmVlvzZWcDouEAXp1Dh8gf1fT1YWWVRf+GVo5c8FnEQk8dMVjtJnt93vguJWyFReTize9gaBoCxn62Y339eAk8mRAKHRr2b0JU/cmgodDZRmDt5jM= Received: from CH2PR05CA0001.namprd05.prod.outlook.com (2603:10b6:610::14) by DS7PR19MB7700.namprd19.prod.outlook.com (2603:10b6:8:ed::12) 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 20:22:53 +0000 Received: from CH2PEPF00000148.namprd02.prod.outlook.com (2603:10b6:610:0:cafe::14) by CH2PR05CA0001.outlook.office365.com (2603:10b6:610::14) 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 20:22:52 +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 CH2PEPF00000148.mail.protection.outlook.com (10.167.244.105) 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 20:22:52 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 6BE5D4A; Thu, 3 Apr 2025 20:22:51 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 22:22:47 +0200 Subject: [PATCH v3 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-v3-3-35340aa31d9c@ddn.com> References: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@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=1743711768; l=2416; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=t/qWU7S8DFwFw1ltRPZymLwhxW9CiMD3+kpjL0lZZRE=; b=Ur6Fs/0aGfQzjLuqRCfAz0BGAas2qgmgXsvNVyrOlP5i/xeKadLOcIIICg4GrjFKSww0LLW2S L3ZnxF2u9GQALSDhX7MJfOAl8MjDXFJvdJmp65KJ6aZ8/2DlSe8HpLa X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF00000148:EE_|DS7PR19MB7700:EE_ X-MS-Office365-Filtering-Correlation-Id: cb1a7910-dff4-4c28-b409-08dd72ed4f6d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|1800799024|36860700013|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?cBWe24LMh4usgjlw6lNxYm5l33UjqII?= =?utf-8?q?LuVxJEyciXpOsfyMzVaQ06Ne1ZpoYWDxi4QDAkekNfdCGQ2lrHzJ7JpYE9y238XLQ?= =?utf-8?q?TeSmTMPPcdVB3IpBxDSh8JymKqBQU0A/KbpdJjgyBhXmR+TDGMkIpQ3qQUEecRjfB?= =?utf-8?q?BwSmAxnsYojkVwbO2JPqZ8Rk2CDhqYHeLN7XYhKV1KMUUvq+SbJS17JFkc1bwq993?= =?utf-8?q?f731ZXYz68tmExdItFpdG7nU+h9OuFjPbg3asYibonTFc0P1+ro4htumilN3IBOu3?= =?utf-8?q?mzk6NCvWK7KUZwsQVsp1D7vj5m4wPIeCTVJVLgSUecyFASmtJ+Y2mdoYPVNBObAVN?= =?utf-8?q?63aCh57OmPXNXbub+PQzJTBXSTfRLDGQfOjdscn0vyNSfYnSphmEfzhEDStFPgXVx?= =?utf-8?q?JUDdEPvunKghnebVHvxXkL64/lOX4gaIYjScPdWRA3srkn58QB1poJ/pvPq9dckJS?= =?utf-8?q?ImCT+JlmG9D4HkB5GSbt0sLX8np32LhtmWRWpoEs1eWqCdF+yiRNNbzpPwtM37chr?= =?utf-8?q?FBMFh4PJ1GouB7oaIr5+jXeqcFhld3xyxaWX8cBBueYov7r9P+lJSLLIG8Cgvd59O?= =?utf-8?q?euNmMFe/krXlkf9TYWr11nCaRh0taEaIyNKhIXq5RhhbTPz8FXzXkcB8jZsU+LOPl?= =?utf-8?q?rnAuR/EAqIMK32iqIG7/rZ0buJBrlYWIG7FFwtXu2XEjJU8YVRsRaHMywXr0Wzgka?= =?utf-8?q?C2u6VzvWjSTv8+ktP2+e3TS04sL9ySHiCmYsCp+n6LsXAZuVmF/islbZWGcYVnG42?= =?utf-8?q?XSOt1RxQuzLt8GCZ75jGrUsLkVtYkYfo+qTmz/I0rGrriE0LUJZW/dvTS/2SyxwR8?= =?utf-8?q?9e8wecdFhXQzqpDIoJqed5GToca18p1SGJgUH68b9nH2Xxo6C6XfA/eopFOhWCeXz?= =?utf-8?q?tpRLr/5rpZm9t22WLZjCNOK8gOj2B0sUuDPcIZVQwrJduvVYB4zy6CHotxxmpzMwz?= =?utf-8?q?Aswx4oxWSC5IJjcoKEs1+dz9mHRaRK5oJo7zzj7lVbJ3eItg0eFIJEc9W+5FJ+7Lv?= =?utf-8?q?TZrWGz22DoIsg2cPIIGtm6O/xPF9/G3Z7/xyWrp0DyL445IzAvN2TT1jd0L2iFvF7?= =?utf-8?q?xwl04yV/NmaWVe//1qPmLudXz9Npo+l5Nnl7tp7ci37iUwo9VE2m9PL2qbkgD8Rl0?= =?utf-8?q?HbHEZDAblDbbFiD2FWm+kSVIVZQvXfhdtYMikURqYHTXDzK1IHOPIGb1hjDglbrfu?= =?utf-8?q?cjHC+nG3iInUx6OC+esILMps4r+ZNxZIwBND6o3SSygz2fBsJGk4tkIbhFJ9EPM53?= =?utf-8?q?oVwUSMObkxE6vPz6exzsCTN6Ge/nc8J9sXYYin3BoUCQLpYmrdvcEMT3b7+1pCEyD?= =?utf-8?q?uj/3DP+pL8yTs+YzDlhReLm3EVB9UynO5JFmb00qqXknTewQJ/29EuOqHgFllzdjm?= =?utf-8?q?Wd6Yerm7ECUCoAsYxKtY0CyFQNQlJB2mWTAD63+hkzFtT67rjD9Nag=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)(82310400026)(1800799024)(36860700013)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 4+QbJzoANcAVfhh/vOQm3tiBUFQ4DPt9sx4vW6i2UJB397wv6CaQ/gjZy1PmLGHbK3+XS0Jecv2BhauQxkxQrTLnde51fQpmzZqb2YRzLNaFKONZzd+pcRWRCo6QFrZOzlKR6K2BZnma46NtWcLHb1BzYBcWzWpWT0MzkvH44fqVFm8Of1j6fYbxVZ8aOzkiX5dJS2SS+guQVRdofSXLDxWElyOgazZRdovlfiqH+jiWNJUTcu+TOA/wi66KV45zzyU+XXzyRJYqEa4ZGj3TswQkP1lKaaSt7z/TFtvgiM1KzHl3s+QLK5jlvkrJei+/Mo4LfV5qXJzIPP9Id20x5ook7sxslGOifJB8VdM0uBVG/AhdYEcqVwquAtSfMOrE0HLMWMM4ioBFtFLfCkmA2szEmc6sYw1cnHW27NrP3FpTAPur3ZQkF33vmxoEkW+M6TJw2ikssYe/0zWc0KZI1ZYoX5jnWSTbYI2BQEbREQIGGgDPmxPffsf9uQ9h05TYdn9RdNY8xjTH8GZMRVqWzvYUzkYerjAHaUt+qLzPROuF9C6YqMrk5XZ+Tz4dORv50ngHbWN738IkjY02ASA9urj4UFcEX+We+fzZjQzm2CGRvUUr2nZGCmHOs0z58mxt9fztHkP0xcLCUneUXMecxw== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 20:22:52.0946 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cb1a7910-dff4-4c28-b409-08dd72ed4f6d 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: CH2PEPF00000148.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR19MB7700 X-BESS-ID: 1743711776-110524-1328-16626-1 X-BESS-VER: 2019.3_20250402.1543 X-BESS-Apparent-Source-IP: 104.47.56.168 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.263629 [from cloudscan20-57.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 20:22:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bernd Schubert X-Patchwork-Id: 14037569 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 BC7001F0E22 for ; Thu, 3 Apr 2025 20:23:06 +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=1743711790; cv=fail; b=VfWZv1DZAYR49K/KFVn+EbsF7s2jjRLKpfmbYXihBEBm9dyfqkL1oMSjVxEQH7tzxDW6JfZoj2qQ9rQrsXF2OYilXEfd6edAxAu/9E6qs6Zy0GzIf/TSD+f1yxv7sKS1TRH3tRgcNLc5e0a9M+nC1lEhhUKkWeMAv08yYMRVDSE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743711790; c=relaxed/simple; bh=Dua8+hES0iXumoTTq1YQ89zt7sXm6RE3yEjmy3Dxfg8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=o3ZabqqTqLlsbZXe/v/nAhVkQfQMlpLria3m0AwzHj1JPTKeIWfyjSLyEWs2bwjQKEqMEW1Pym4a3u2bE2Zx/UauaVoAHeihg/1LVtotaOrTYYj4t3UQcKpipHAwF3yb4CUJpnaMkjG5nP1R9F98NezorOQpEqe5IXW2uqCUxOg= 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=Lhvi5KEX; 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="Lhvi5KEX" Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2044.outbound.protection.outlook.com [104.47.66.44]) by mx-outbound41-40.us-east-2c.ess.aws.cudaops.com (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 03 Apr 2025 20:22:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qCKomlPea5Ou0ETA7TGq/2/ARYdckQ+34TQ4WyuGgNGP0Pvu8qUo9yN4jEcW0g9z7XLBigeADqjktyMqGOE0zEeqJ3UB4sN6FoaujbT7uL56cWVsZcjW453yOkXp9656TLYtHLgk3D2E9IWFdUESaSTiMeU68j2nah8jlWujDdXEYv8lPk9ZMY3j1w2Nio5AFtn9ZutBTxAp9Vba/7UFc1b8l/CNJw02PGKVmgdu2M5CPMWWdxgTE8G+bMKsW+UOGvACv+sC3jz0cO4HstEvAwqUJC65d3cAJDuWewE93yDa3hLFSY7npnPm5oGUZev/+0IINFbPirHXrgogFZkBfw== 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=eB1Qf3afdUac4QFn/azx9fz0KYgZpf43q5UWlpy1PcGQCj8EwutRArT1WT3ONcfwfjr8SRLr+zNuqcgtgDAZVu4k4ww1thrmh6n+il1BdVws4PtH9XIcotopYV+V/pArFOFxC29ZpAOF4aBqW/ZsP9Aarx87v2F/P460HYAErZyj9xB/3HV0JyozioXtkFsvT6vyDTj/LmA0VrFWyoMSyEv+PKwrVUKzZJ44it8xXEfVe0T1D3S5Jrn+Xn1pLUd7CtjuGmTZ8zxYI2le3FRYwkZTnPo6YZH5vURF7RcOUCAe6uMuKYgPjcUibST77FRGYhQ7mzOCJOsmxEqH+w3A0w== 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=Lhvi5KEXEbo1mfnJJmBSFKiCiGgdeeWKm4XzBdaYIS+JzUwgbLJR8Wg4J6pgfZtOYGVp5XBaqmOCcaaDHC6Mw3lDmD2egcbW5IxeYp/p5ZHlaD07jJC+4D4YYnU253+6Ppt16/5FYeTBxgifhV74OGe5EVmxcxg1whSVgvp0VXY= Received: from BN9PR03CA0534.namprd03.prod.outlook.com (2603:10b6:408:131::29) by BL1PR19MB5819.namprd19.prod.outlook.com (2603:10b6:208:396::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8534.50; Thu, 3 Apr 2025 20:22:53 +0000 Received: from BL6PEPF0001AB4D.namprd04.prod.outlook.com (2603:10b6:408:131:cafe::13) by BN9PR03CA0534.outlook.office365.com (2603:10b6:408:131::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8534.54 via Frontend Transport; Thu, 3 Apr 2025 20:22:53 +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 BL6PEPF0001AB4D.mail.protection.outlook.com (10.167.242.71) 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 20:22:53 +0000 Received: from localhost (unknown [10.68.0.8]) by uww-mrp-01.datadirectnet.com (Postfix) with ESMTP id 64D1F4D; Thu, 3 Apr 2025 20:22:52 +0000 (UTC) From: Bernd Schubert Date: Thu, 03 Apr 2025 22:22:48 +0200 Subject: [PATCH v3 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-v3-4-35340aa31d9c@ddn.com> References: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@ddn.com> In-Reply-To: <20250403-fuse-io-uring-trace-points-v3-0-35340aa31d9c@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=1743711768; l=4634; i=bschubert@ddn.com; s=20240529; h=from:subject:message-id; bh=Dua8+hES0iXumoTTq1YQ89zt7sXm6RE3yEjmy3Dxfg8=; b=9yNXXM3ghd3WHXNVD0dF299AHOtmPGYKiPu6oL+5gJ+4+q+yVO2EnuIo8/5zP6n27q9R9MgLi wsb2/YiF41BBKV3R8BDQzJ5H7PDSsZwXFECUOXPZywig67CcNza+M8d X-Developer-Key: i=bschubert@ddn.com; a=ed25519; pk=EZVU4bq64+flgoWFCVQoj0URAs3Urjno+1fIq9ZJx8Y= X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BL6PEPF0001AB4D:EE_|BL1PR19MB5819:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d7d1f2e-94ba-42b8-2cc4-08dd72ed5024 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|36860700013|1800799024|82310400026|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?q?cDKRFzzl0QKnjf1UsYlZWSZmVFG1hV8?= =?utf-8?q?0NG9/yoDvJ4kHQfGOMcgHFB+8rAf5ZnpAHnpc5NaK9KPcHTBi4nWRpWtvqVhEkwwb?= =?utf-8?q?G/K+pIOBDv2kuPB35i4YYdAkZZEXxAP0ddYx0IOcCn6dHUBkkM0pcNg9m8D5EoJl9?= =?utf-8?q?sJ9oDY1xZCHaWpAwR09YJt5lzVWUyQomb/QqYJFylVHC++l0U8+5VHIQpcdh+VheT?= =?utf-8?q?hC6jdP/XWgD+0T0wIlbmuyeWVFZpMLkj4IbDbJ2ejsffLMA8o2+0delEJ2qLS8Qoc?= =?utf-8?q?5Wyv67wZyvlnfzgtBddh2lb5MX+XOYVdTHRplsGBKLM5ib/D7ah+Yp+dBzY54YMkN?= =?utf-8?q?OEENW49NNN4NMICnzucx2BwI7q4jyMcUHoDlEZKniTOteajQzc1H9FTE4hf8NCO01?= =?utf-8?q?TyQVeZDMwYJrhjS4c8SJ5NxrEpTqUDGCsntIYW7H8vyQ1+q0I96A9JQmXtTd45rza?= =?utf-8?q?Q2sNoMWWlmTNyQ+RrQ73WoDA9bUpzMb4HK1K2P5+ouAqEfa1FBe4GLKHc9cTl/yD6?= =?utf-8?q?f25pynEui1yNVX7shdjZvRqtSJtBmrUT5a2LTJGOKKA7w7dlcT/G6zinVd32AAhps?= =?utf-8?q?B8Xeb81os0cx1ItTj4CAeDx7rCuCrhMR4THMSyq2nkPr9LqNFcY18EgKWtkHev20T?= =?utf-8?q?ABWnTK8vHOI//G7P4vUPpVH/o3s/4jBs1SwqpIxBLAnGHNJyzBmGH8O3EjFl/Y2r0?= =?utf-8?q?zBgCnOZYCLqtbdRJHqHvC3D89/TBMXzEAp6+1BlU2qvqxa9imETgg+a32XtDLbrIQ?= =?utf-8?q?r05DR9SC6E2tmT1O8+MqoghFlQni9znz9QZSWX5dpNgkKr7VlEWHkqdTVEn2ur4yx?= =?utf-8?q?5uuBt8QDfTB7BXOIa316H7eNya5fUi2iO+wdOJmrRj3AhCzabe4IMKMtvczYHVmWN?= =?utf-8?q?YUYSCjnwRCo5L+N32ngJJ9A8WKmVHI4/+FKT967MhoofHwWD2UeC3HdL5Uf081GSs?= =?utf-8?q?wOtJmxxhKRowd1q++0Gz27vb0IKuLkHWCEAbqBdphR+mA9DYCdttHyoGivv+6/G5o?= =?utf-8?q?PbJfCQv0bE2mnIA8QDGzFc0CfrwR6uMEMisk+IAkilMzM5RTeFtX50a1x9i9olWj7?= =?utf-8?q?AnqYoV9xVH4UbEYNNn+ChkEbqcgrXLx2O/NIGxB11VU+v40QPdeXO0/TK7Ouj7fCM?= =?utf-8?q?MmS9T/IJtXam7aAHvndSbpAcERVL6QWXuwL6yiQvSqoItQUF+grEyoQF9/kh1Ip6T?= =?utf-8?q?oVkGt8YWoP2i13o/9IZnEUP46FJe+d8VkF04LXopD37fx/55PbXuCgoS1gNItWcBl?= =?utf-8?q?34XuLMe0RliuGYzep4LAiYHAzIdmSPXooIhLCArfuYkxtthVOc/v8xzaU3Z52E9kh?= =?utf-8?q?iyOinK/JmgApKqD37m4Aa+3TO/zJc/U9wGilpfg+yA1gwgPheAoPd0wOr3MwAc1wV?= =?utf-8?q?LhgptAaK70iuYKi3RyvYLPYxAE91K6vZaurUk67Zn65TIxwYKAqIxI=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)(1800799024)(82310400026)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: /Xcc2CJsH1WEt605WbPSsRQg8PZF0Z0LxC+NddWkFpYjG05VLrppQhaETnJZETVufS2Q/s4ShQjy3X655219h1/j9qHFKQ7GLFcITS5WkIPGe8L1UIJo99/rydJTkKz7fsPODhG8EByAm24WBC78q5BVA+WcQru+W9W/hHMYSbhOSwPPlltNQl724HPf+A4PLUDazsw4r5jPjdCFuECrrFDPcn+BydU95D0IO3W0KNQf/kzDcqN43n8LCu/KAEmIb8x6BMvGuEEx+ZA2z7bQFY0RbVIU9lZTe4Hn6fmKSCc0WH7jyD+KT4y1kDju8ISTbf2egmiN3uQopocRPR32fIM3n/2pRAqRRQV4Ba9n9PZve81Y+5NPJcQ3ueQB2PfGv80jAFXtKf6K0vDQaY8f6N8h1DuhqAu5Zct7/qUhZwPPGg8gBxmn0Yz2dgzEBTfQ2dcqVzBhpIerBnVfEKNPqesyG158aH+m/dvQgycOqcHIihPDMryN6mAs0Qz8iQaaSalaMHlSCoLJRkFzhRpHJWxgM58f0FpjVCf2M3Hms9FedQFOSxxWTMzGNjdlsVW0/DZSPBORPizeTvm5Z2iQGsM1ptG5xTzIidDwetN6bv1PgpXN2ELcslg4nnb32gBe0QbMITIMKDaXJcCxOJ4+JA== X-OriginatorOrg: ddn.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Apr 2025 20:22:53.2279 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4d7d1f2e-94ba-42b8-2cc4-08dd72ed5024 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: BL6PEPF0001AB4D.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR19MB5819 X-BESS-ID: 1743711777-110536-32296-1809-1 X-BESS-VER: 2019.1_20250402.1544 X-BESS-Apparent-Source-IP: 104.47.66.44 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.263629 [from cloudscan23-11.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),