* [PATCH] docs: add guidelines for submitting new filesystems
@ 2026-04-17 14:25 Amir Goldstein
2026-04-17 15:36 ` Matthew Wilcox
0 siblings, 1 reply; 4+ messages in thread
From: Amir Goldstein @ 2026-04-17 14:25 UTC (permalink / raw)
To: Christian Brauner
Cc: Jan Kara, Al Viro, linux-fsdevel, Theodore Tso, Christoph Hellwig,
Darrick J. Wong, Matthew Wilcox
This document is motivated by the ongoing maintenance burden that
abandoned and untestable filesystems impose on VFS developers, blocking
infrastructure changes such as folio conversions and iomap migration.
This week alone, two new filesystems were proposed on linux-fsdevel
(VMUFAT and FTRFS), highlighting the need for documented guidelines
that new filesystem authors can refer to before submission.
Multiple recent discussions on linux-fsdevel have touched on the
criteria for merging new filesystems and for deprecating old ones,
covering topics such as modern VFS interface adoption, testability,
userspace utilities, maintainer commitment, and user base viability.
Add Documentation/filesystems/adding-new-filesystems.rst describing
the technical requirements and community expectations for merging a
new filesystem into the kernel. The guidelines cover:
- Alternatives to consider before proposing a new in-kernel filesystem
- Technical requirements: modern VFS interfaces (iomap, folios,
fs_context mount API), testability, and userspace utilities
- Community expectations: identified maintainers, demonstrated
commitment, sustained backing, and a clear user base
- Ongoing obligations after merging, including the risk of deprecation
for unmaintained filesystems
Link: https://lore.kernel.org/linux-fsdevel/20260411151155.321214-1-adrianmcmenamin@gmail.com/
Link: https://lore.kernel.org/linux-fsdevel/20260413142357.515792-1-aurelien@hackers.camp/
Link: https://lore.kernel.org/linux-fsdevel/yndtg2jbj55fzd2kkhsmel4pp5ll5xfvfiaqh24tdct3jiqosd@jzbfzf3rrxrd/
Link: https://lore.kernel.org/linux-fsdevel/20260124091742.GA43313@macsyma.local/
Link: https://lore.kernel.org/lkml/20260111140345.3866-1-linkinjeon@kernel.org/
Cc: Christian Brauner <brauner@kernel.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Jan Kara <jack@suse.cz>
Cc: Theodore Tso <tytso@mit.edu>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Darrick J. Wong <djwong@kernel.org>
Cc: Matthew Wilcox <willy@infradead.org>
Assisted-by: Cursor:claude-4-opus
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
---
Hi folks,
I am posting this patch as a placeholder for a TOPIC discussion at LSFMM.
This is a reoccurring topic on fsdevel and in LSFMM, but I think it is
worth having, because I do not think we have made a significant progress
in solving the vfs maintenance burden problem.
As much as I hate manifests and even more so discussions about
manifests, I think that having a document like this will at least save
us some time in writing the bounce emails.
Please try not to make this a discussion about a legal document!
Note that LLM has helped me collect the relevant discussions and
articulate our collective feedbacks into a summary.
Note that same LLM makes it much easier for random people to
submit new filesystems, so we may need to work harder in the near
future on push backs...
Thanks,
Amir.
.../filesystems/adding-new-filesystems.rst | 167 ++++++++++++++++++
Documentation/filesystems/index.rst | 1 +
2 files changed, 168 insertions(+)
create mode 100644 Documentation/filesystems/adding-new-filesystems.rst
diff --git a/Documentation/filesystems/adding-new-filesystems.rst b/Documentation/filesystems/adding-new-filesystems.rst
new file mode 100644
index 0000000000000..2e59b7127c05f
--- /dev/null
+++ b/Documentation/filesystems/adding-new-filesystems.rst
@@ -0,0 +1,167 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+.. _adding_new_filesystems:
+
+Adding New Filesystems
+======================
+
+This document describes what is involved in adding a new filesystem to the
+Linux kernel, over and above the normal submission advice in
+:ref:`Documentation/process/submitting-patches.rst <submittingpatches>` and
+:ref:`Documentation/process/submit-checklist.rst <submitchecklist>`.
+
+Every filesystem merged into the kernel becomes the collective responsibility
+of the VFS maintainers and the wider filesystem development community.
+Experience has shown that filesystems which become unmaintained impose a
+significant and ongoing burden: they are hard or impossible to test, they
+block infrastructure changes because someone must update or preserve old APIs
+for code that nobody is actively looking after, and they accumulate unfixed
+bugs. The requirements and expectations described here are informed by this
+experience and are intended to ensure that new filesystems enter the kernel
+on a sustainable footing.
+
+
+Do You Need a New In-Kernel Filesystem?
+---------------------------------------
+
+Before proposing a new in-kernel filesystem, consider whether one of the
+alternatives might be more appropriate.
+
+ - If an existing in-kernel filesystem covers the same use case, improving it
+ is generally preferred over adding a new implementation. The kernel
+ community favors incremental improvement over parallel implementations.
+
+ - If the filesystem serves a niche audience or has a small user base, a FUSE
+ (Filesystem in Userspace) implementation may be a better fit. FUSE
+ filesystems avoid the long-term kernel maintenance commitment and can be
+ developed and released on their own schedule.
+
+ - If kernel-level performance, reliability, or integration is genuinely
+ required, make the case explicitly. Explain who the users are, what the
+ use case is, and why a FUSE implementation would not be sufficient.
+
+
+Technical Requirements
+----------------------
+
+New filesystems are expected to use current kernel interfaces and practices.
+Submitting a filesystem built on outdated APIs creates an immediate
+maintenance debt and is likely to face pushback during review.
+
+Use modern VFS interfaces
+ New filesystems should use iomap rather than buffer heads for block mapping
+ and I/O, folios rather than raw page operations for page cache management,
+ and the filesystem context API (``fs_context``) for the mount path. See
+ ``Documentation/filesystems/iomap/index.rst`` for iomap documentation and
+ ``Documentation/filesystems/mount_api.rst`` for the mount API.
+
+Avoid deprecated interfaces
+ Do not use interfaces listed in
+ :ref:`Documentation/process/deprecated.rst <deprecated>`. If the
+ filesystem depends on an interface that is being phased out, plan for
+ conversion before submission.
+
+Provide userspace utilities
+ A ``mkfs`` tool is expected so that the filesystem can be created and used
+ by testers and users. A ``fsck`` tool is strongly recommended; while not
+ strictly required for every filesystem type, the ability to verify
+ consistency and repair corruption is an important part of a mature
+ filesystem.
+
+Be testable
+ The filesystem must be testable in a meaningful way. The
+ `fstests <https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git>`_
+ framework (also known as xfstests) is the standard testing infrastructure
+ for Linux filesystems and its use is highly recommended. At a minimum,
+ there must be a credible and documented way to test the filesystem and
+ detect regressions. When submitting, include a summary of test results
+ indicating which tests pass, fail, or are not applicable.
+
+Provide documentation
+ A documentation file under ``Documentation/filesystems/`` describing the
+ filesystem, its on-disk format, mount options, and any notable design
+ decisions is recommended.
+
+
+Community and Maintainership Expectations
+-----------------------------------------
+
+Merging a filesystem is a long-term commitment. The kernel community
+needs confidence that the filesystem will be actively maintained after it
+is merged.
+
+Identified maintainer
+ The submission must include a ``MAINTAINERS`` entry with at least one
+ maintainer (``M:``), a mailing list (``L:``), and a git tree (``T:``).
+ The maintainer is expected to be the primary point of contact for the
+ filesystem going forward.
+
+Demonstrated commitment
+ A track record of maintaining kernel code -- for example, in other
+ subsystems -- significantly strengthens the case for a new filesystem.
+ Maintainers who are already known and trusted within the community face
+ less friction during review.
+
+Sustained backing
+ Major filesystems in Linux have organizational or corporate support behind
+ their development. Filesystems that depend entirely on volunteer effort
+ face higher scrutiny about their long-term viability.
+
+Responsiveness
+ The maintainer is expected to respond to bug reports, address review
+ feedback, and adapt the filesystem to VFS infrastructure changes such as
+ folio conversions, iomap migration, and mount API updates. Unresponsive
+ maintainership is one of the primary reasons filesystems end up on the
+ path to deprecation.
+
+User base
+ Clearly describe who the users of this filesystem are and the scale of the
+ user base. Filesystems with a very small or unclear user base face a
+ harder path to acceptance and a higher risk of future deprecation.
+
+A practical way to demonstrate many of the qualities above is to maintain the
+filesystem out-of-tree for a period before requesting a merge. This shows
+sustained commitment, builds a visible user base, and gives reviewers
+confidence that the code and its maintainer will persist after merging.
+That said, it is recognized that for some filesystems the user base grows
+significantly only after upstreaming, so a compelling case for expected
+adoption can substitute for a large existing user base.
+
+
+Submission Process
+------------------
+
+Send patches to the linux-fsdevel mailing list
+(``linux-fsdevel@vger.kernel.org``). CC the relevant VFS maintainers as
+listed in the ``MAINTAINERS`` file under ``FILESYSTEMS (VFS and infrastructure)``.
+
+Expect thorough review. Filesystem code interacts deeply with the VFS, memory
+management, and block layers, so reviewers will examine the code carefully.
+Address all review feedback and be prepared for multiple revision cycles.
+
+It may be appropriate to mark the filesystem as experimental in its Kconfig
+help text for the first few releases to set expectations while the code
+stabilizes in-tree.
+
+
+Ongoing Obligations
+-------------------
+
+Merging is not the finish line. Maintaining a filesystem in the kernel is an
+ongoing commitment.
+
+ - Adapt to VFS infrastructure changes. The VFS layer evolves continuously;
+ maintainers are expected to keep up with conversions such as folio
+ migration, iomap adoption, and mount API updates.
+
+ - Maintain test coverage. As test suites evolve, the filesystem's test
+ results should be kept current.
+
+ - Handle security issues promptly. Filesystems parse complex on-disk
+ structures from potentially untrusted media and must treat security
+ reports with urgency.
+
+ - Filesystems that become unmaintained -- where the maintainer stops
+ responding, infrastructure changes go unadapted, and testing becomes
+ impossible -- are candidates for deprecation and eventual removal from
+ the kernel.
diff --git a/Documentation/filesystems/index.rst b/Documentation/filesystems/index.rst
index f4873197587df..10e40cc9cbc9d 100644
--- a/Documentation/filesystems/index.rst
+++ b/Documentation/filesystems/index.rst
@@ -42,6 +42,7 @@ algorithms work.
caching/index
porting
+ adding-new-filesystems
Filesystem support layers
=========================
--
2.53.0
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] docs: add guidelines for submitting new filesystems
2026-04-17 14:25 [PATCH] docs: add guidelines for submitting new filesystems Amir Goldstein
@ 2026-04-17 15:36 ` Matthew Wilcox
2026-04-17 16:44 ` Amir Goldstein
2026-04-17 17:20 ` Jaegeuk Kim
0 siblings, 2 replies; 4+ messages in thread
From: Matthew Wilcox @ 2026-04-17 15:36 UTC (permalink / raw)
To: Amir Goldstein
Cc: Christian Brauner, Jan Kara, Al Viro, linux-fsdevel, Theodore Tso,
Christoph Hellwig, Darrick J. Wong
Thanks for getting this discussion started. Some thoughts inline ...
On Fri, Apr 17, 2026 at 04:25:03PM +0200, Amir Goldstein wrote:
> +Do You Need a New In-Kernel Filesystem?
> +---------------------------------------
> +
> +Before proposing a new in-kernel filesystem, consider whether one of the
> +alternatives might be more appropriate.
> +
> + - If an existing in-kernel filesystem covers the same use case, improving it
> + is generally preferred over adding a new implementation. The kernel
> + community favors incremental improvement over parallel implementations.
> +
> + - If the filesystem serves a niche audience or has a small user base, a FUSE
> + (Filesystem in Userspace) implementation may be a better fit. FUSE
> + filesystems avoid the long-term kernel maintenance commitment and can be
> + developed and released on their own schedule.
> +
> + - If kernel-level performance, reliability, or integration is genuinely
> + required, make the case explicitly. Explain who the users are, what the
> + use case is, and why a FUSE implementation would not be sufficient.
It may also be worth linking to
https://en.wikipedia.org/wiki/GVfs as an alternative to writing
an in-kernel filesystem or a FUSE filesystem. Very much depends what
one's goals are.
> +Technical Requirements
> +----------------------
> +
> +New filesystems are expected to use current kernel interfaces and practices.
> +Submitting a filesystem built on outdated APIs creates an immediate
> +maintenance debt and is likely to face pushback during review.
> +
> +Use modern VFS interfaces
> + New filesystems should use iomap rather than buffer heads for block mapping
> + and I/O, folios rather than raw page operations for page cache management,
> + and the filesystem context API (``fs_context``) for the mount path. See
> + ``Documentation/filesystems/iomap/index.rst`` for iomap documentation and
> + ``Documentation/filesystems/mount_api.rst`` for the mount API.
> +
> +Avoid deprecated interfaces
> + Do not use interfaces listed in
> + :ref:`Documentation/process/deprecated.rst <deprecated>`. If the
> + filesystem depends on an interface that is being phased out, plan for
> + conversion before submission.
Maybe these are one section rather than two?
I'd add "If it's a network filesystem, consider using netfs, or be
prepared to explain why it's a bad fit for you".
Similarly if you have a block filesystem, and need functionality not
provided by iomap, be prepared to explain why adding that functionality
to iomap is infeasible.
> +Provide userspace utilities
> + A ``mkfs`` tool is expected so that the filesystem can be created and used
> + by testers and users. A ``fsck`` tool is strongly recommended; while not
> + strictly required for every filesystem type, the ability to verify
> + consistency and repair corruption is an important part of a mature
> + filesystem.
> +
> +Be testable
> + The filesystem must be testable in a meaningful way. The
> + `fstests <https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git>`_
> + framework (also known as xfstests) is the standard testing infrastructure
> + for Linux filesystems and its use is highly recommended. At a minimum,
> + there must be a credible and documented way to test the filesystem and
> + detect regressions. When submitting, include a summary of test results
> + indicating which tests pass, fail, or are not applicable.
> +
> +Provide documentation
> + A documentation file under ``Documentation/filesystems/`` describing the
> + filesystem, its on-disk format, mount options, and any notable design
> + decisions is recommended.
I kind of want a section on "no weird ioctls". Anything you want to
implement beyond ioctls already implemented by other filesystems,
you need to bring to linux-fsdevel as a separate proposal from "please
merge my filesystem". Almost anything implemented by f2fs is a good
example here.
> +Community and Maintainership Expectations
> +-----------------------------------------
> +
> +Merging a filesystem is a long-term commitment. The kernel community
> +needs confidence that the filesystem will be actively maintained after it
> +is merged.
> +
> +Identified maintainer
> + The submission must include a ``MAINTAINERS`` entry with at least one
> + maintainer (``M:``), a mailing list (``L:``), and a git tree (``T:``).
> + The maintainer is expected to be the primary point of contact for the
> + filesystem going forward.
Preferably two maintainers, although even that wasn't enough to save
bcachefs.
> +Submission Process
> +------------------
> +
> +Send patches to the linux-fsdevel mailing list
> +(``linux-fsdevel@vger.kernel.org``). CC the relevant VFS maintainers as
> +listed in the ``MAINTAINERS`` file under ``FILESYSTEMS (VFS and infrastructure)``.
> +
> +Expect thorough review. Filesystem code interacts deeply with the VFS, memory
> +management, and block layers, so reviewers will examine the code carefully.
> +Address all review feedback and be prepared for multiple revision cycles.
> +
> +It may be appropriate to mark the filesystem as experimental in its Kconfig
> +help text for the first few releases to set expectations while the code
> +stabilizes in-tree.
I'd like something here about how to structure a submission. It's
neither acceptable to send one big patch containing your entire
filesystem, nor do we want to see the entire history of development over
the last eight years.
Instead split it up by topic. Superblock, inode, directory handling,
address_space, ...
> +Ongoing Obligations
> +-------------------
> +
> +Merging is not the finish line. Maintaining a filesystem in the kernel is an
> +ongoing commitment.
> +
> + - Adapt to VFS infrastructure changes. The VFS layer evolves continuously;
> + maintainers are expected to keep up with conversions such as folio
> + migration, iomap adoption, and mount API updates.
> +
> + - Maintain test coverage. As test suites evolve, the filesystem's test
> + results should be kept current.
> +
> + - Handle security issues promptly. Filesystems parse complex on-disk
> + structures from potentially untrusted media and must treat security
> + reports with urgency.
> +
> + - Filesystems that become unmaintained -- where the maintainer stops
> + responding, infrastructure changes go unadapted, and testing becomes
> + impossible -- are candidates for deprecation and eventual removal from
> + the kernel.
Interact with other filesystem maintainers. They are not your enemy
although they may compete with you for users. There are opportunities
to share code, share approaches to fixing problems and share features.
It's inappropriate to hide away on your own filesystem list and pop up
once per kernel cycle with a set of patches that nobody's seen before.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] docs: add guidelines for submitting new filesystems
2026-04-17 15:36 ` Matthew Wilcox
@ 2026-04-17 16:44 ` Amir Goldstein
2026-04-17 17:20 ` Jaegeuk Kim
1 sibling, 0 replies; 4+ messages in thread
From: Amir Goldstein @ 2026-04-17 16:44 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Christian Brauner, Jan Kara, Al Viro, linux-fsdevel, Theodore Tso,
Christoph Hellwig, Darrick J. Wong
On Fri, Apr 17, 2026 at 5:36 PM Matthew Wilcox <willy@infradead.org> wrote:
>
>
> Thanks for getting this discussion started. Some thoughts inline ...
>
> On Fri, Apr 17, 2026 at 04:25:03PM +0200, Amir Goldstein wrote:
> > +Do You Need a New In-Kernel Filesystem?
> > +---------------------------------------
> > +
> > +Before proposing a new in-kernel filesystem, consider whether one of the
> > +alternatives might be more appropriate.
> > +
> > + - If an existing in-kernel filesystem covers the same use case, improving it
> > + is generally preferred over adding a new implementation. The kernel
> > + community favors incremental improvement over parallel implementations.
> > +
> > + - If the filesystem serves a niche audience or has a small user base, a FUSE
> > + (Filesystem in Userspace) implementation may be a better fit. FUSE
> > + filesystems avoid the long-term kernel maintenance commitment and can be
> > + developed and released on their own schedule.
> > +
> > + - If kernel-level performance, reliability, or integration is genuinely
> > + required, make the case explicitly. Explain who the users are, what the
> > + use case is, and why a FUSE implementation would not be sufficient.
>
> It may also be worth linking to
> https://en.wikipedia.org/wiki/GVfs as an alternative to writing
> an in-kernel filesystem or a FUSE filesystem. Very much depends what
> one's goals are.
I rather not.
Feels like saying FUSE is enough of a code name for
You may not need a kernel fs
I don't feel it is our place to guide people more than that...
>
> > +Technical Requirements
> > +----------------------
> > +
> > +New filesystems are expected to use current kernel interfaces and practices.
> > +Submitting a filesystem built on outdated APIs creates an immediate
> > +maintenance debt and is likely to face pushback during review.
> > +
> > +Use modern VFS interfaces
> > + New filesystems should use iomap rather than buffer heads for block mapping
> > + and I/O, folios rather than raw page operations for page cache management,
> > + and the filesystem context API (``fs_context``) for the mount path. See
> > + ``Documentation/filesystems/iomap/index.rst`` for iomap documentation and
> > + ``Documentation/filesystems/mount_api.rst`` for the mount API.
> > +
> > +Avoid deprecated interfaces
> > + Do not use interfaces listed in
> > + :ref:`Documentation/process/deprecated.rst <deprecated>`. If the
> > + filesystem depends on an interface that is being phased out, plan for
> > + conversion before submission.
>
> Maybe these are one section rather than two?
>
> I'd add "If it's a network filesystem, consider using netfs, or be
> prepared to explain why it's a bad fit for you".
>
> Similarly if you have a block filesystem, and need functionality not
> provided by iomap, be prepared to explain why adding that functionality
> to iomap is infeasible.
>
> > +Provide userspace utilities
> > + A ``mkfs`` tool is expected so that the filesystem can be created and used
> > + by testers and users. A ``fsck`` tool is strongly recommended; while not
> > + strictly required for every filesystem type, the ability to verify
> > + consistency and repair corruption is an important part of a mature
> > + filesystem.
> > +
> > +Be testable
> > + The filesystem must be testable in a meaningful way. The
> > + `fstests <https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git>`_
> > + framework (also known as xfstests) is the standard testing infrastructure
> > + for Linux filesystems and its use is highly recommended. At a minimum,
> > + there must be a credible and documented way to test the filesystem and
> > + detect regressions. When submitting, include a summary of test results
> > + indicating which tests pass, fail, or are not applicable.
> > +
> > +Provide documentation
> > + A documentation file under ``Documentation/filesystems/`` describing the
> > + filesystem, its on-disk format, mount options, and any notable design
> > + decisions is recommended.
>
> I kind of want a section on "no weird ioctls". Anything you want to
> implement beyond ioctls already implemented by other filesystems,
> you need to bring to linux-fsdevel as a separate proposal from "please
> merge my filesystem". Almost anything implemented by f2fs is a good
> example here.
>
> > +Community and Maintainership Expectations
> > +-----------------------------------------
> > +
> > +Merging a filesystem is a long-term commitment. The kernel community
> > +needs confidence that the filesystem will be actively maintained after it
> > +is merged.
> > +
> > +Identified maintainer
> > + The submission must include a ``MAINTAINERS`` entry with at least one
> > + maintainer (``M:``), a mailing list (``L:``), and a git tree (``T:``).
> > + The maintainer is expected to be the primary point of contact for the
> > + filesystem going forward.
>
> Preferably two maintainers, although even that wasn't enough to save
> bcachefs.
>
> > +Submission Process
> > +------------------
> > +
> > +Send patches to the linux-fsdevel mailing list
> > +(``linux-fsdevel@vger.kernel.org``). CC the relevant VFS maintainers as
> > +listed in the ``MAINTAINERS`` file under ``FILESYSTEMS (VFS and infrastructure)``.
> > +
> > +Expect thorough review. Filesystem code interacts deeply with the VFS, memory
> > +management, and block layers, so reviewers will examine the code carefully.
> > +Address all review feedback and be prepared for multiple revision cycles.
> > +
> > +It may be appropriate to mark the filesystem as experimental in its Kconfig
> > +help text for the first few releases to set expectations while the code
> > +stabilizes in-tree.
>
> I'd like something here about how to structure a submission. It's
> neither acceptable to send one big patch containing your entire
> filesystem, nor do we want to see the entire history of development over
> the last eight years.
>
> Instead split it up by topic. Superblock, inode, directory handling,
> address_space, ...
>
> > +Ongoing Obligations
> > +-------------------
> > +
> > +Merging is not the finish line. Maintaining a filesystem in the kernel is an
> > +ongoing commitment.
> > +
> > + - Adapt to VFS infrastructure changes. The VFS layer evolves continuously;
> > + maintainers are expected to keep up with conversions such as folio
> > + migration, iomap adoption, and mount API updates.
> > +
> > + - Maintain test coverage. As test suites evolve, the filesystem's test
> > + results should be kept current.
> > +
> > + - Handle security issues promptly. Filesystems parse complex on-disk
> > + structures from potentially untrusted media and must treat security
> > + reports with urgency.
> > +
> > + - Filesystems that become unmaintained -- where the maintainer stops
> > + responding, infrastructure changes go unadapted, and testing becomes
> > + impossible -- are candidates for deprecation and eventual removal from
> > + the kernel.
>
> Interact with other filesystem maintainers. They are not your enemy
> although they may compete with you for users. There are opportunities
> to share code, share approaches to fixing problems and share features.
> It's inappropriate to hide away on your own filesystem list and pop up
> once per kernel cycle with a set of patches that nobody's seen before.
>
Very good feedback!
Pushed commit with the changes v1->v2 to:
https://github.com/amir73il/linux/commits/vfs-docs/
so you can review the incorporated changes.
GitHub also displays the doc in a ReSTy way that could be nicer for doc review:
https://github.com/amir73il/linux/blob/vfs-docs/Documentation/filesystems/adding-new-filesystems.rst
Feel free to comment on github if you have editorial fixes to suggest
before I post v2.
Thanks,
Amir.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] docs: add guidelines for submitting new filesystems
2026-04-17 15:36 ` Matthew Wilcox
2026-04-17 16:44 ` Amir Goldstein
@ 2026-04-17 17:20 ` Jaegeuk Kim
1 sibling, 0 replies; 4+ messages in thread
From: Jaegeuk Kim @ 2026-04-17 17:20 UTC (permalink / raw)
To: Matthew Wilcox
Cc: Amir Goldstein, Christian Brauner, Jan Kara, Al Viro,
linux-fsdevel, Theodore Tso, Christoph Hellwig, Darrick J. Wong
On 04/17, Matthew Wilcox wrote:
>
> Thanks for getting this discussion started. Some thoughts inline ...
>
> On Fri, Apr 17, 2026 at 04:25:03PM +0200, Amir Goldstein wrote:
> > +Do You Need a New In-Kernel Filesystem?
> > +---------------------------------------
> > +
> > +Before proposing a new in-kernel filesystem, consider whether one of the
> > +alternatives might be more appropriate.
> > +
> > + - If an existing in-kernel filesystem covers the same use case, improving it
> > + is generally preferred over adding a new implementation. The kernel
> > + community favors incremental improvement over parallel implementations.
> > +
> > + - If the filesystem serves a niche audience or has a small user base, a FUSE
> > + (Filesystem in Userspace) implementation may be a better fit. FUSE
> > + filesystems avoid the long-term kernel maintenance commitment and can be
> > + developed and released on their own schedule.
> > +
> > + - If kernel-level performance, reliability, or integration is genuinely
> > + required, make the case explicitly. Explain who the users are, what the
> > + use case is, and why a FUSE implementation would not be sufficient.
>
> It may also be worth linking to
> https://en.wikipedia.org/wiki/GVfs as an alternative to writing
> an in-kernel filesystem or a FUSE filesystem. Very much depends what
> one's goals are.
>
> > +Technical Requirements
> > +----------------------
> > +
> > +New filesystems are expected to use current kernel interfaces and practices.
> > +Submitting a filesystem built on outdated APIs creates an immediate
> > +maintenance debt and is likely to face pushback during review.
> > +
> > +Use modern VFS interfaces
> > + New filesystems should use iomap rather than buffer heads for block mapping
> > + and I/O, folios rather than raw page operations for page cache management,
> > + and the filesystem context API (``fs_context``) for the mount path. See
> > + ``Documentation/filesystems/iomap/index.rst`` for iomap documentation and
> > + ``Documentation/filesystems/mount_api.rst`` for the mount API.
> > +
> > +Avoid deprecated interfaces
> > + Do not use interfaces listed in
> > + :ref:`Documentation/process/deprecated.rst <deprecated>`. If the
> > + filesystem depends on an interface that is being phased out, plan for
> > + conversion before submission.
>
> Maybe these are one section rather than two?
>
> I'd add "If it's a network filesystem, consider using netfs, or be
> prepared to explain why it's a bad fit for you".
>
> Similarly if you have a block filesystem, and need functionality not
> provided by iomap, be prepared to explain why adding that functionality
> to iomap is infeasible.
>
> > +Provide userspace utilities
> > + A ``mkfs`` tool is expected so that the filesystem can be created and used
> > + by testers and users. A ``fsck`` tool is strongly recommended; while not
> > + strictly required for every filesystem type, the ability to verify
> > + consistency and repair corruption is an important part of a mature
> > + filesystem.
> > +
> > +Be testable
> > + The filesystem must be testable in a meaningful way. The
> > + `fstests <https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git>`_
> > + framework (also known as xfstests) is the standard testing infrastructure
> > + for Linux filesystems and its use is highly recommended. At a minimum,
> > + there must be a credible and documented way to test the filesystem and
> > + detect regressions. When submitting, include a summary of test results
> > + indicating which tests pass, fail, or are not applicable.
> > +
> > +Provide documentation
> > + A documentation file under ``Documentation/filesystems/`` describing the
> > + filesystem, its on-disk format, mount options, and any notable design
> > + decisions is recommended.
>
> I kind of want a section on "no weird ioctls". Anything you want to
> implement beyond ioctls already implemented by other filesystems,
> you need to bring to linux-fsdevel as a separate proposal from "please
> merge my filesystem". Almost anything implemented by f2fs is a good
> example here.
I disagree to this. As a filesystem developer, I belive ioctl provides a way
to tune the filesystem-specific features which are not supported by all the
other filesystems.
>
> > +Community and Maintainership Expectations
> > +-----------------------------------------
> > +
> > +Merging a filesystem is a long-term commitment. The kernel community
> > +needs confidence that the filesystem will be actively maintained after it
> > +is merged.
> > +
> > +Identified maintainer
> > + The submission must include a ``MAINTAINERS`` entry with at least one
> > + maintainer (``M:``), a mailing list (``L:``), and a git tree (``T:``).
> > + The maintainer is expected to be the primary point of contact for the
> > + filesystem going forward.
>
> Preferably two maintainers, although even that wasn't enough to save
> bcachefs.
>
> > +Submission Process
> > +------------------
> > +
> > +Send patches to the linux-fsdevel mailing list
> > +(``linux-fsdevel@vger.kernel.org``). CC the relevant VFS maintainers as
> > +listed in the ``MAINTAINERS`` file under ``FILESYSTEMS (VFS and infrastructure)``.
> > +
> > +Expect thorough review. Filesystem code interacts deeply with the VFS, memory
> > +management, and block layers, so reviewers will examine the code carefully.
> > +Address all review feedback and be prepared for multiple revision cycles.
> > +
> > +It may be appropriate to mark the filesystem as experimental in its Kconfig
> > +help text for the first few releases to set expectations while the code
> > +stabilizes in-tree.
>
> I'd like something here about how to structure a submission. It's
> neither acceptable to send one big patch containing your entire
> filesystem, nor do we want to see the entire history of development over
> the last eight years.
>
> Instead split it up by topic. Superblock, inode, directory handling,
> address_space, ...
>
> > +Ongoing Obligations
> > +-------------------
> > +
> > +Merging is not the finish line. Maintaining a filesystem in the kernel is an
> > +ongoing commitment.
> > +
> > + - Adapt to VFS infrastructure changes. The VFS layer evolves continuously;
> > + maintainers are expected to keep up with conversions such as folio
> > + migration, iomap adoption, and mount API updates.
> > +
> > + - Maintain test coverage. As test suites evolve, the filesystem's test
> > + results should be kept current.
> > +
> > + - Handle security issues promptly. Filesystems parse complex on-disk
> > + structures from potentially untrusted media and must treat security
> > + reports with urgency.
> > +
> > + - Filesystems that become unmaintained -- where the maintainer stops
> > + responding, infrastructure changes go unadapted, and testing becomes
> > + impossible -- are candidates for deprecation and eventual removal from
> > + the kernel.
>
> Interact with other filesystem maintainers. They are not your enemy
> although they may compete with you for users. There are opportunities
> to share code, share approaches to fixing problems and share features.
> It's inappropriate to hide away on your own filesystem list and pop up
> once per kernel cycle with a set of patches that nobody's seen before.
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-04-17 17:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-17 14:25 [PATCH] docs: add guidelines for submitting new filesystems Amir Goldstein
2026-04-17 15:36 ` Matthew Wilcox
2026-04-17 16:44 ` Amir Goldstein
2026-04-17 17:20 ` Jaegeuk Kim
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox