Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/1.1/patches/2221565/?format=api
{ "id": 2221565, "url": "http://patchwork.ozlabs.org/api/1.1/patches/2221565/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/patch/177576561103.1959707.10200829629012630842.stg-ugh@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": "<177576561103.1959707.10200829629012630842.stg-ugh@frogsfrogsfrogs>", "date": "2026-04-09T20:15:03", "name": "[GIT,PULL,2/2] fuse4fs: fork a low level fuse server", "commit_ref": null, "pull_url": "https://git.kernel.org/pub/scm/linux/kernel/git/djwong/e2fsprogs.git tags/fuse4fs-fork_2026-04-09", "state": "new", "archived": false, "hash": null, "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/177576561103.1959707.10200829629012630842.stg-ugh@frogsfrogsfrogs/mbox/", "series": [ { "id": 499350, "url": "http://patchwork.ozlabs.org/api/1.1/series/499350/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-ext4/list/?series=499350", "date": "2026-04-09T20:14:47", "name": "[GIT,PULL,1/2] fuse2fs: upgrade to libfuse 3.17", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/499350/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2221565/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2221565/checks/", "tags": {}, "headers": { "Return-Path": "\n <SRS0=SNBc=CI=vger.kernel.org=linux-ext4+bounces-15730-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=ZcCqCNv1;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=snbc=ci=vger.kernel.org=linux-ext4+bounces-15730-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)", "gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=172.234.253.10 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=ZcCqCNv1;\n\tdkim-atps=neutral", "gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15730-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=\"ZcCqCNv1\"", "smtp.subspace.kernel.org;\n arc=none smtp.client-ip=10.30.226.201" ], "Received": [ "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fsB5X2Qsjz1xy1\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 06:16:00 +1000 (AEST)", "from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fsB5X2CWvz4wK0\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 06:16:00 +1000 (AEST)", "by gandalf.ozlabs.org (Postfix)\n\tid 4fsB5X25Nhz4wK5; Fri, 10 Apr 2026 06:16:00 +1000 (AEST)", "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\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 4fsB5S2Znwz4wK0\n\tfor <patchwork-incoming@ozlabs.org>; Fri, 10 Apr 2026 06:15:56 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 0036E302528F\n\tfor <patchwork-incoming@ozlabs.org>; Thu, 9 Apr 2026 20:15:04 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 856B033A6F7;\n\tThu, 9 Apr 2026 20:15:04 +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 4113D3382F4\n\tfor <linux-ext4@vger.kernel.org>; Thu, 9 Apr 2026 20:15:04 +0000 (UTC)", "by smtp.kernel.org (Postfix) with ESMTPSA id D0DF2C2BC87;\n\tThu, 9 Apr 2026 20:15:03 +0000 (UTC)" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1775765760; cv=pass;\n\tb=lnXZF5DbuPvDwHJS/LLBvv1jafqWshCFfq2LBaWfJsN/zckIIfhR982sbJY7uzg2TXi/acXcjf1JuZ9/eRIP1p1Qnj5F7Gku/+YT0UtQGAyeo7qYYpVtOP4qt/at9UYOLcO5glf5SZ79Bb5Oy1PW9NbpmQiPr9DIqjU7JFxr+QyfHT1FmPHMnyJxZ+D7CM1M1I5TjV2g5WD3WKsXQAjKi806YeCHd5w3Na1Swb/F85mNvALACCdJfzu1oZ5qIiuAJoIVvf9a0YV/5zjweTMRyyE/2WHr9hJTlbxG1OMIB2W/vTAXExngMd29PFAOFV+BBn57RZC20aadCf3RZy4Glw==", "i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1775765704; cv=none;\n b=Zt2OPsueccU4Nks/JMrHwNeYn2G/VK0f++az5Zuobas3HQ0gedUJoy5Pfn2cos0c9XFnrcvbCmrwYhnCChh6uegYs6wCeVSmjcvfC/oyLlsqH3/ozqFMtTiESOTXvRgNDZjUeFfGaYCBAkfYhoxEDqGuuEaOAyz/enWC7x8ImOQ=" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1775765760; c=relaxed/relaxed;\n\tbh=ZU3zbCoYQFgcfDOjvXiHcceqcj+I7tOYd75mliBxzn4=;\n\th=Date:Subject:From:To:Cc:Message-ID:MIME-Version:In-Reply-To:\n\t References:Content-Type;\n b=k/xAKb+TCPpZgzz+E8d/i7P4CUX2VJb9MAFZPbgY2lku34YR7orUGdGgFt4ZmHi/aalhxNymt9oqavZVpl3F7FS8mriUNrf0yE3+ODB/BJ/qqvCGdaInpPfkeOyBvLosSKAEJCEKYgKkAl8qlWS6A8+jwc9TRNFZAC4TNffvGuvt+PoDriaFa4TfFHJZkVLiKVuU+cziu780qQIC9PFF0Gk90pQQhnxj0IQe/0FIhWGTKxlN95OHqtpkXJNU4mNPz9eUHovTuWPxyedElfOQ/kwkmtKeEC/D7yRZw9UbJaZJ+ndlOLwLh0dEv6MW0iV4zJwfBzgcKMCq6p6NzzaFaw==", "i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1775765704; c=relaxed/simple;\n\tbh=WJ/IEqRr63Mv8pW9rXFFW7XT9KeyYmRrKfV3P5ouf8s=;\n\th=Date:Subject:From:To:Cc:Message-ID:MIME-Version:In-Reply-To:\n\t References:Content-Type;\n b=X505RKXWM9xpUS0R2irYzSG7pI4LKoA6C69+M0KaczffBzylxx/+Zr9KiF5JYm+oxBhuISrc02lZdcuCdMHotIx0orLTlryoEDoV4Z7n7AsRBzEkv8+h80XidN072OovdPcszOglqOf+NgqzkA4qiKB7XaESs65BsvhSov556J8=" ], "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=ZcCqCNv1; dkim-atps=neutral;\n spf=pass (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15730-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=ZcCqCNv1; 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=1775765703;\n\tbh=WJ/IEqRr63Mv8pW9rXFFW7XT9KeyYmRrKfV3P5ouf8s=;\n\th=Date:Subject:From:To:Cc:In-Reply-To:References:From;\n\tb=ZcCqCNv1xdGQFPO6iHpPE8gWwQuo3JtNdvbRoe6uGPqEoD7qGHDw3iY2iBXUWxV68\n\t Bg8KuNG0bKCcGrlZ0mM/PFa2+ZnQTlvTCGKTdC0b45fGgHMvI1j4F+CHEBuBbOv7Jd\n\t zBq45lWG0/jzgMzs3u8+A/TBxZZXpudfs/Ns4d+VUK7bm/Z4cDa3/0t1ea60HcWH88\n\t boRj2ucO8YO4Mu3J7rQxXYxQnX/jUeOAoyByArbj0nmhYMJALLysSm75cPw/9f2lcQ\n\t yZA0OPLsdI6kYavm3PLrMB9i63Rq03p9MYTtiP4r12oDbm6/QQgGwX34CFEwpDD0/S\n\t QYojO+TJ6O36w==", "Date": "Thu, 09 Apr 2026 13:15:03 -0700", "Subject": "[GIT PULL 2/2] fuse4fs: fork a low level fuse server", "From": "\"Darrick J. Wong\" <djwong@kernel.org>", "To": "tytso@mit.edu", "Cc": "amir73il@gmail.com, djwong@kernel.org, linux-ext4@vger.kernel.org", "Message-ID": "\n <177576561103.1959707.10200829629012630842.stg-ugh@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", "In-Reply-To": "<20260409201302.GD6192@frogsfrogsfrogs>", "References": "<20260409201302.GD6192@frogsfrogsfrogs>", "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": "Hi Ted,\n\nPlease pull this branch with changes for ext4.\n\nAs usual, I did a test-merge with the main upstream branch as of a few\nminutes ago, and didn't see any conflicts. Please let me know if you\nencounter any problems.\n\nThe following changes since commit c137760397ef6671832548bcd256778f57f49c2d:\n\nfuse2fs: drop fuse 2.x support code (2026-04-09 13:00:40 -0700)\n\nare available in the Git repository at:\n\nhttps://git.kernel.org/pub/scm/linux/kernel/git/djwong/e2fsprogs.git tags/fuse4fs-fork_2026-04-09\n\nfor you to fetch changes up to 951a10258cada0508e185c58ebec74c47b0eb774:\n\nfuse4fs: create incore reverse orphan list (2026-04-09 13:00:42 -0700)\n\n----------------------------------------------------------------\nfuse4fs: fork a low level fuse server [02/11]\n\nWhilst developing the fuse2fs+iomap prototype, I discovered a\nfundamental design limitation of the upper-level libfuse API: hardlinks.\nThe upper level fuse library really wants to communicate with the fuse\nserver with file paths, instead of using inode numbers. This works\ngreat for filesystems that don't have inodes, create files dynamically\nat runtime, or lack stable inode numbers.\n\nUnfortunately, the libfuse path abstraction assigns a unique nodeid to\nevery child file in the entire filesystem, without regard to hard links.\nIn other words, a hardlinked regular file may have one ondisk inode\nnumber but multiple kernel inodes. For classic fuse2fs this isn't a\nproblem because all file access goes through the fuse server and the big\nlibrary lock protects us from corruption.\n\nFor fuse2fs + iomap this is a disaster because we rely on the kernel to\ncoordinate access to inodes. For hardlinked files, we *require* that\nthere only be one in-kernel inode for each ondisk inode.\n\nThe path based mechanism is also very inefficient for fuse2fs. Every\ntime a file is accessed, the upper level libfuse passes a new nodeid to\nthe kernel, and on every file access the kernel passes that same nodeid\nback to libfuse. libfuse then walks its internal directory entry cache\nto construct a path string for that nodeid and hands it to fuse2fs.\nfuse2fs then walks the ondisk directory structure to find the ext2 inode\nnumber. Every time.\n\nCreate a new fuse4fs server from fuse2fs that uses the lowlevel fuse\nAPI. This affords us direct control over nodeids and eliminates the\npath wrangling. Hardlinks can be supported when iomap is turned on,\nand metadata-heavy workloads run twice as fast.\n\nSigned-off-by: \"Darrick J. Wong\" <djwong@kernel.org>\n\n----------------------------------------------------------------\nDarrick J. Wong (23):\nfuse2fs: separate libfuse3 and fuse2fs detection in configure\nfuse2fs: start porting fuse2fs to lowlevel libfuse API\ndebian: create new package for fuse4fs\nfuse4fs: namespace some helpers\nfuse4fs: convert to low level API\nlibsupport: port the kernel list.h to libsupport\nlibsupport: add a cache\ncache: disable debugging\ncache: use modern list iterator macros\ncache: embed struct cache in the owner\ncache: pass cache pointer to callbacks\ncache: pass a private data pointer through cache_walk\ncache: add a helper to grab a new refcount for a cache_node\ncache: return results of a cache flush\ncache: add a \"get only if incore\" flag to cache_node_get\ncache: support gradual expansion\ncache: support updating maxcount and flags\ncache: support channging flags\ncache: implement automatic shrinking\nfuse4fs: add cache to track open files\nfuse4fs: use the orphaned inode list\nfuse4fs: implement FUSE_TMPFILE\nfuse4fs: create incore reverse orphan list\n\nlib/ext2fs/jfs_compat.h | 2 +-\nlib/ext2fs/kernel-list.h | 111 -\nlib/support/cache.h | 184 ++\nlib/support/list.h | 901 +++++++\nlib/support/xbitops.h | 128 +\nMakefile.in | 3 +-\nconfigure | 441 ++--\nconfigure.ac | 156 +-\ndebian/control | 12 +-\ndebian/fuse4fs.install | 2 +\ndebian/fuse4fs.links | 3 +\ndebian/rules | 11 +\ndebugfs/Makefile.in | 12 +-\ne2fsck/Makefile.in | 56 +-\nfuse4fs/Makefile.in | 193 ++\nfuse4fs/fuse4fs.1.in | 118 +\nfuse4fs/fuse4fs.c | 6451 ++++++++++++++++++++++++++++++++++++++++++++++\nlib/config.h.in | 3 +\nlib/e2p/Makefile.in | 4 +-\nlib/ext2fs/Makefile.in | 14 +-\nlib/support/Makefile.in | 8 +-\nlib/support/cache.c | 882 +++++++\nmisc/Makefile.in | 18 +-\nmisc/tune2fs.c | 4 -\n24 files changed, 9248 insertions(+), 469 deletions(-)\ndelete mode 100644 lib/ext2fs/kernel-list.h\ncreate mode 100644 lib/support/cache.h\ncreate mode 100644 lib/support/list.h\ncreate mode 100644 lib/support/xbitops.h\ncreate mode 100644 debian/fuse4fs.install\ncreate mode 100644 debian/fuse4fs.links\ncreate mode 100644 fuse4fs/Makefile.in\ncreate mode 100644 fuse4fs/fuse4fs.1.in\ncreate mode 100644 fuse4fs/fuse4fs.c\ncreate mode 100644 lib/support/cache.c", "diff": null, "prefixes": [ "GIT", "PULL", "2/2" ] }