Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2230316/?format=api
{ "id": 2230316, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2230316/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/177747215219.4110055.1405517682620840141.stgit@frogsfrogsfrogs/", "project": { "id": 8, "url": "http://patchwork.ozlabs.org/api/1.1/projects/8/?format=api", "name": "Linux ext4 filesystem development", "link_name": "linux-ext4", "list_id": "linux-ext4.vger.kernel.org", "list_email": "linux-ext4@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<177747215219.4110055.1405517682620840141.stgit@frogsfrogsfrogs>", "date": "2026-04-29T14:58:37", "name": "[1/1] fuse4fs: don't use inode number translation when possible", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "9b4f1161d76fc9ff86d6c80235146984e7972f2d", "submitter": { "id": 77032, "url": "http://patchwork.ozlabs.org/api/1.1/people/77032/?format=api", "name": "Darrick J. Wong", "email": "djwong@kernel.org" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-ext4/patch/177747215219.4110055.1405517682620840141.stgit@frogsfrogsfrogs/mbox/", "series": [ { "id": 502090, "url": "http://patchwork.ozlabs.org/api/1.1/series/502090/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=502090", "date": "2026-04-29T14:58:37", "name": "[1/1] fuse4fs: don't use inode number translation when possible", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/502090/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2230316/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2230316/checks/", "tags": {}, "headers": { "Return-Path": "\n <SRS0=oTbO=C4=vger.kernel.org=linux-ext4+bounces-16212-patchwork-incoming=ozlabs.org@ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-ext4@vger.kernel.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "patchwork-incoming@ozlabs.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=U5+UND7N;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=150.107.74.76; helo=mail.ozlabs.org;\n envelope-from=srs0=otbo=c4=vger.kernel.org=linux-ext4+bounces-16212-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)", "gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=172.232.135.74 arc.chain=subspace.kernel.org", "gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org", "gandalf.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=U5+UND7N;\n\tdkim-atps=neutral", "gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.232.135.74; helo=sto.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16212-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=\"U5+UND7N\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201" ], "Received": [ "from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5L6S0ydqz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 00:58:56 +1000 (AEST)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4g5L6S0VXZz4wJs\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 00:58:56 +1000 (AEST)", "by gandalf.ozlabs.org (Postfix)\n\tid 4g5L6S0Pdxz4wM1; Thu, 30 Apr 2026 00:58:56 +1000 (AEST)", "from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4g5L6N3MfMz4wJs\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 30 Apr 2026 00:58:52 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sto.lore.kernel.org (Postfix) with ESMTP id 3C0F2300CA20\n\tfor <patchwork-incoming@ozlabs.org>; Wed, 29 Apr 2026 14:58:42 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 3F0DE346A0D;\n\tWed, 29 Apr 2026 14:58:38 +0000 (UTC)", "from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org\n [10.30.226.201])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0132027EFE9;\n\tWed, 29 Apr 2026 14:58:38 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id CE5B0C19425;\n\tWed, 29 Apr 2026 14:58:37 +0000 (UTC)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1777474736; cv=pass;\n\tb=uiDfaBo7AIzj1p8xu3AZ55Qyf1tBj8lZ4Fj6J8+wngsxy29zIgKU7qfDZ1iQTModv+NGuD+PQLpEBkh+CD9/cXXOI36jZPCsUHlCobqm8hX5k1fL8OThE+e1Ta1xBD9x2o/Xrime0wTDOEKi/JvuOdfYp0+7J5eZw5cnNhdRdz3aJuj9BtnaCXqG+5Bz69YHX4tvpQU9f4UBGlQDX9h94Z6FeiWM19/X39ZZWwbAsFcmxWGzfd++uyQ0QaPLb4jUvnajvhm6/+SJnAdr5Ji2SOef6VlVi8mM6zZsSMFhcDhN2mTEO4zFB6GWNrFCZxF2S7IwfOIHvkdr/SxnRl+hzA==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777474718; cv=none;\n b=QaQFCgchqROaKpMMTxeiDIEmVvMSgCMeiZ//I0wgpv1CBvEybZ+JGGLXFHqCS3gQppHLcQ1UHqrcD59/W/k3JvALlpUak2wHO8FXRWZTPwYAfCwKWuFnUyWEnVM1Qw89JCE3ZO3IsigGAX7kX6WglYkdRzy7nBNnOuhR8erqzK8=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1777474736; c=relaxed/relaxed;\n\tbh=4GQAdpGRJUTNLPCufunYhd2FPgl+0PP+YOD4EQcqggY=;\n\th=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=IZ+k9T3voBa8YB2P6/ETXSMmc6DHHWFVkzGY5AmJ2KPTylSI1fFHWAOXDSC024UoF1FNZowincWD93GZSDLApDSFCeB0rdIxRreaHNBla+9BkEMgAqXsAkQWLWDTtR5QVXRtEhgyM2dIfH6chhh4lGKaPZ1VZKBbea7qqunJJj4ETSYkrq2PMJ1U9ofY+r2cKdP9JgGq3C2C3deuv3d9ZsgvqpzvtXN4PjpFUaZIiToQO8hQrYdJKaXEAAaWkQl3I3J2UUim8umXaDDtPXRnmF0I/pQwBT9CdrNzetN1cuMHa9qnWNpqYb8NLjLcsoKT+u/1VK4atZuqEHWj2NLO1w==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777474718; c=relaxed/simple;\n\tbh=NLhvkKHU5NHtnqxNTg/61tBL9Mp/om6VgPhnPentcLE=;\n\th=Date:Subject:From:To:Cc:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=vDoseldRY0bEut5ADtksMYiNdIc5HkZUOTNjcq258m67lo0fYr061zoiX34T2RDhpCUjzvfxWbUKS0kyqdGrR1y5xu+L+uCnUiCz/dhW/eYx4pO7dhGLkoGzOK0V0VkhBfa/qjMq30E9KJ1hh482VPY0BpPbS9PaSdTLd1IE0Cw=" ], "ARC-Authentication-Results": [ "i=2; gandalf.ozlabs.org;\n dmarc=pass (p=quarantine dis=none) header.from=kernel.org;\n dkim=pass (2048-bit key;\n unprotected) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256\n header.s=k20201202 header.b=U5+UND7N; dkim-atps=neutral;\n spf=pass (client-ip=172.232.135.74; helo=sto.lore.kernel.org;\n envelope-from=linux-ext4+bounces-16212-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org", "i=1; smtp.subspace.kernel.org;\n dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org\n header.b=U5+UND7N; arc=none smtp.client-ip=10.30.226.201" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;\n\ts=k20201202; t=1777474717;\n\tbh=NLhvkKHU5NHtnqxNTg/61tBL9Mp/om6VgPhnPentcLE=;\n\th=Date:Subject:From:To:Cc:In-Reply-To:References:From;\n\tb=U5+UND7N22XXaCwX+pHrdhEhNTgu69/TR7IRT06HPrNtkPI7/QFDN1itY2Dm/hrnW\n\t tmE7LryN+rconNDQPkAxPd91aAmGbWE2q9NzVpqJWrY7tdWBqO7hAw3t+z1CTo7smW\n\t uxOEaIrIKXyztLUe1jziuaYy6Mq4bWwSIHaY08bD6qZU93yrjdXxt7duG2tfcsIC4/\n\t GQDYxzJWlkU8/gfOH2JFUf7y9IZLPL9hRbE8m4V7xkYlDlHJHn/0E22TGxdAhNXqSF\n\t oaBbga9590etIuQWnIlY3jakRcqBpOHAsjfZUxAQd5O0vXimm+Ecx3yRhBSE+DMEtk\n\t wdU5enxYc7pDg==", "Date": "Wed, 29 Apr 2026 07:58:37 -0700", "Subject": "[PATCH 1/1] fuse4fs: don't use inode number translation when possible", "From": "\"Darrick J. Wong\" <djwong@kernel.org>", "To": "tytso@mit.edu", "Cc": "bernd@bsbernd.com, miklos@szeredi.hu, linux-ext4@vger.kernel.org,\n neal@gompa.dev, linux-fsdevel@vger.kernel.org, fuse-devel@lists.linux.dev,\n joannelkoong@gmail.com", "Message-ID": "<177747215219.4110055.1405517682620840141.stgit@frogsfrogsfrogs>", "In-Reply-To": "<177747215201.4110055.6021378863218591603.stgit@frogsfrogsfrogs>", "References": "<177747215201.4110055.6021378863218591603.stgit@frogsfrogsfrogs>", "Precedence": "bulk", "X-Mailing-List": "linux-ext4@vger.kernel.org", "List-Id": "<linux-ext4.vger.kernel.org>", "List-Subscribe": "<mailto:linux-ext4+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-ext4+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "X-Spam-Status": "No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_PASS,\n\tMAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=disabled\n\tversion=4.0.1", "X-Spam-Checker-Version": "SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org" }, "content": "From: Darrick J. Wong <djwong@kernel.org>\n\nPrior to the integration of iomap into fuse, the fuse client (aka the\nkernel) required that the root directory have an inumber of\nFUSE_ROOT_ID, which is 1. However, the ext2 filesystem defines the root\ninode number to be EXT2_ROOT_INO, which is 2. This dissonance means\nthat we have to have translator functions, and that any access to\ninumber 1 (the ext2 badblocks file) will instead redirect to the root\ndirectory.\n\nThat's horrible. Use the new mount option to set the root directory\nnodeid to EXT2_ROOT_INO so that we don't need this translation.\n\nSigned-off-by: \"Darrick J. Wong\" <djwong@kernel.org>\n---\n fuse4fs/fuse4fs.c | 30 ++++++++++++++++++++++++------\n 1 file changed, 24 insertions(+), 6 deletions(-)", "diff": "diff --git a/fuse4fs/fuse4fs.c b/fuse4fs/fuse4fs.c\nindex 7c861fc28e9fa4..ec6af3813a661a 100644\n--- a/fuse4fs/fuse4fs.c\n+++ b/fuse4fs/fuse4fs.c\n@@ -285,6 +285,7 @@ struct fuse4fs {\n \tint directio;\n \tint acl;\n \tint dirsync;\n+\tint translate_inums;\n \n \tenum fuse4fs_opstate opstate;\n \tint logfd;\n@@ -379,17 +380,19 @@ static int fuse4fs_service_discover_iomap(struct fuse4fs *ff)\n #define FUSE4FS_CHECK_CONTEXT_INIT(req) \\\n \t__FUSE4FS_CHECK_CONTEXT((req), abort(), abort())\n \n-static inline void fuse4fs_ino_from_fuse(ext2_ino_t *inop, fuse_ino_t fino)\n+static inline void fuse4fs_ino_from_fuse(const struct fuse4fs *ff,\n+\t\t\t\t\t ext2_ino_t *inop, fuse_ino_t fino)\n {\n-\tif (fino == FUSE_ROOT_ID)\n+\tif (ff->translate_inums && fino == FUSE_ROOT_ID)\n \t\t*inop = EXT2_ROOT_INO;\n \telse\n \t\t*inop = fino;\n }\n \n-static inline void fuse4fs_ino_to_fuse(fuse_ino_t *finop, ext2_ino_t ino)\n+static inline void fuse4fs_ino_to_fuse(const struct fuse4fs *ff,\n+\t\t\t\t fuse_ino_t *finop, ext2_ino_t ino)\n {\n-\tif (ino == EXT2_ROOT_INO)\n+\tif (ff->translate_inums && ino == EXT2_ROOT_INO)\n \t\t*finop = FUSE_ROOT_ID;\n \telse\n \t\t*finop = ino;\n@@ -405,7 +408,7 @@ static inline void fuse4fs_ino_to_fuse(fuse_ino_t *finop, ext2_ino_t ino)\n \t\t\tfuse_reply_err((req), EIO); \\\n \t\t\treturn; \\\n \t\t} \\\n-\t\tfuse4fs_ino_from_fuse(ext2_inop, fuse_ino); \\\n+\t\tfuse4fs_ino_from_fuse(fuse4fs_get(req), ext2_inop, fuse_ino); \\\n \t} while (0)\n \n static int __translate_error(ext2_filsys fs, ext2_ino_t ino, errcode_t err,\n@@ -2403,7 +2406,7 @@ static int fuse4fs_stat_inode(struct fuse4fs *ff, ext2_ino_t ino,\n \t\t\tstatbuf->st_rdev = inodep->i_block[1];\n \t}\n \n-\tfuse4fs_ino_to_fuse(&entry->ino, ino);\n+\tfuse4fs_ino_to_fuse(ff, &entry->ino, ino);\n \tentry->generation = inodep->i_generation;\n \tentry->attr_timeout = FUSE4FS_ATTR_TIMEOUT;\n \tentry->entry_timeout = FUSE4FS_ATTR_TIMEOUT;\n@@ -8087,6 +8090,20 @@ static void fuse4fs_compute_libfuse_args(struct fuse4fs *ff,\n \"-oallow_other,default_permissions,suid,dev\");\n \t}\n \n+\tif (fuse4fs_can_iomap(ff)) {\n+\t\t/*\n+\t\t * The root_nodeid mount option was added when iomap support\n+\t\t * was added to fuse. This enables us to control the root\n+\t\t * nodeid in the kernel, which enables a 1:1 translation of\n+\t\t * ext2 to kernel inumbers.\n+\t\t */\n+\t\tsnprintf(extra_args, BUFSIZ, \"-oroot_nodeid=%d\",\n+\t\t\t EXT2_ROOT_INO);\n+\t\tfuse_opt_add_arg(args, extra_args);\n+\t\tff->translate_inums = 0;\n+\t}\n+\n+\n \tif (ff->debug) {\n \t\tint\ti;\n \n@@ -8366,6 +8383,7 @@ int main(int argc, char *argv[])\n #ifdef HAVE_FUSE_LOOPDEV\n \t\t.loop_fd = -1,\n #endif\n+\t\t.translate_inums = 1,\n \t};\n \terrcode_t err;\n \tFILE *orig_stderr = stderr;\n", "prefixes": [ "1/1" ] }