public inbox for linux-fsdevel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/25] libfuse: Add support for synchronous init
@ 2026-03-26 21:34 Bernd Schubert
  2026-03-26 21:34 ` [PATCH v2 01/25] ci-build: Add environment logging Bernd Schubert
                   ` (25 more replies)
  0 siblings, 26 replies; 60+ messages in thread
From: Bernd Schubert @ 2026-03-26 21:34 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Miklos Szeredi, Joanne Koong, Darrick J. Wong, Kevin Chen,
	Bernd Schubert, Bernd Schubert

I'm taking Darricks example here and posting API changing libfuse
changes to linux-fsdevel. We should consider to create a fuse
specific list if that is too much. The existing
fuse-devel@lists.sourceforge.net is rather hopeless due to lack
of spam filtering.

The first few patches in this series are just preparation, after that
follow the important parts:

1) New daemonize API, see that commit for details. In short, the existing
fuse_daemonize() was not sufficient for complex daemons and is impossible
to use with sync-init and the current way to start fuse-io-uring ring
threads.

2) Support for privileged daemons, still rather straight forward, but
requires the startup of a worker thread that handles requests until
mount is complete.

3) Privileged daemons - requirement is to update the API with fusermount,
because fuse_session_mount_new_api() needs to obtain the /dev/fuse file
descriptor, then start the worker thread with that fd and then continue
the actual mount through fusermount.

To: linux-fsdevel@vger.kernel.org
Cc: Miklos Szeredi <miklos@szeredi.hu>
Cc: Joanne Koong <joannelkoong@gmail.com>
Cc: Darrick J. Wong <djwong@kernel.org>
Cc: Kevin Chen <kchen@ddn.com>
Joanne Koong <joannelkoong@gmail.com>

Signed-off-by: Bernd Schubert <bernd@bsbernd.com>
---
Changes in v2:
- Fixed review comments from Darrick (thanks a lot for the review)
- Fixing some review comments required quite some restructuring
  to handle BSD (like using an include in fusermount.c for
  fuse_kern_fsmount()
- fuse_mnt_build_{source,type} are moved from mount.c to
  mount_util.c and also not using struct mount_opts anymore -
  fusermount.c and mount_fsmount.c can now use these functions
- A rather important change for fuse_daemonize_success(), it needs
  to be called from fuse_lowlevel_ops::init() and after fuse_session_mount(),
  it will figure out itself which of these two calls will actually signal
  success to the parent - depends on if sync or async FUSE_INIT is used.
- fuse_daemonize.c used a static variable for the state object 
  instead of dynamically allocated. Especially with latest additions to
  handle sync init correctly there were too many races. I consider to 
  change that file to C++ or Rust in the future to get reference count
  pointer to self destruct the object.
- The new doc/READMEs are in their own commit now
- Link to v1: https://lore.kernel.org/r/20260323-fuse-init-before-mount-v1-0-a52d3040af69@bsbernd.com

---
Bernd Schubert (25):
      ci-build: Add environment logging
      Add 'STRCPY' to the checkpatch ignore option
      checkpatch.pl: Add _Atomic to $Attribute patttern
      Add a new daemonize API
      Sync fuse_kernel.h with linux-6.18
      mount.c: Split fuse_mount_sys to prepare privileged sync FUSE_INIT
      Add FUSE_MOUNT_FALLBACK_NEEDED define for -2 mount errors
      Refactor mount code / move common functions to mount_util.c
      Use asprintf() for fuse_mnt_build_{source,type}
      lib/mount.c: Remove some BSD ifdefs
      Move 'struct mount_flags' to util.h
      conftest.py: Add more valgrind filter patterns
      Add support for the new linux mount API
      fuse mount: Support synchronous FUSE_INIT (privileged daemon)
      Add fuse_session_set_debug() to enable debug output without foreground
      Move more generic mount code to mount_util.{c,h}
      Split the fusermount do_mount function
      fusermout: Remove the large read check
      fusermount: Refactor extract_x_options
      Make fusermount work bidirectional for sync init
      New mount API: Filter out "user="
      Add support for sync-init of unprivileged daemons
      Move fuse_mnt_build_{source,type} to mount_util.c
      Add mount and daemonization README documents
      Add a background debug option to passthrough hp

 .github/workflows/checkpatch.yml |   2 +-
 checkpatch.pl                    |   3 +-
 doc/README.daemonize             | 197 ++++++++++++
 doc/README.fusermount            | 362 ++++++++++++++++++++++
 doc/README.mount                 |  86 ++++++
 doc/README.sync-init             | 184 +++++++++++
 example/passthrough_hp.cc        |  62 ++--
 include/fuse_daemonize.h         |  91 ++++++
 include/fuse_kernel.h            |   1 +
 include/fuse_lowlevel.h          |  32 ++
 include/fuse_mount_compat.h      |   5 +
 include/meson.build              |   3 +-
 lib/fuse_daemonize.c             | 304 ++++++++++++++++++
 lib/fuse_i.h                     |  27 +-
 lib/fuse_lowlevel.c              | 351 ++++++++++++++++++++-
 lib/fuse_versionscript           |   5 +
 lib/helper.c                     |  13 +-
 lib/meson.build                  |   6 +-
 lib/mount.c                      | 354 +++++++++++++--------
 lib/mount_bsd.c                  |   2 +
 lib/mount_common_i.h             |  29 ++
 lib/mount_fsmount.c              | 462 ++++++++++++++++++++++++++++
 lib/mount_i_linux.h              |  51 +++
 lib/mount_util.c                 | 119 ++++++-
 lib/mount_util.h                 |  25 ++
 meson.build                      |  19 +-
 test/ci-build.sh                 |  16 +
 test/conftest.py                 |   7 +-
 test/test_want_conversion.c      |   1 +
 util/fusermount.c                | 649 +++++++++++++++++++++++++++++----------
 util/meson.build                 |   2 +-
 31 files changed, 3137 insertions(+), 333 deletions(-)
---
base-commit: 9eba0f3c9e8b5af7b252093bb6f81f086bb35563
change-id: 20260323-fuse-init-before-mount-8f5b09a1acf1

Best regards,
-- 
Bernd Schubert <bernd@bsbernd.com>


^ permalink raw reply	[flat|nested] 60+ messages in thread
* fuse-devel list on kernel.org
@ 2026-04-08  8:13 Amir Goldstein
  0 siblings, 0 replies; 60+ messages in thread
From: Amir Goldstein @ 2026-04-08  8:13 UTC (permalink / raw)
  To: helpdesk
  Cc: Bernd Schubert, Miklos Szeredi, Darrick J. Wong, Joanne Koong,
	linux-fsdevel

Hi,

I am writing this email on behalf of the fuse maintainers and developers
following the discussion that we held on the topic [1].

In short, unlike other fs, fuse never got its own list and all fuse
patches are sent to
linux-fsdevel, which is a tad annoying.

The libfuse patches are sent either to fuse-devel@sourceforge, which
is a terrible list full of spam
or to the kernel's fsdevel list, both totally inadequate archives for
those patches.

FUSE is experiencing a renaissance of new features and protocol
enhancements [2] and that translates to a high pace of patches and
libfuse having to be synced with the kernel much more often than it used to be.

Please create the fuse-devel list on lists.linux.dev for the purpose of sending
kernel and libfuse patches.

libfuse maintainers will follow up with mbox migration from
sourceforge in the future
although there is no real urgency of doing that - we mainly want that
list as the single
point of archive/subscribe for all modern FUSE development.

Thanks,
Amir.

[1] https://lore.kernel.org/linux-fsdevel/adTyw4UJ04qOggCQ@amir-ThinkPad-T480/
[2] https://lore.kernel.org/linux-fsdevel/CAJfpegtzYdy3fGGO5E1MU8n+u1j8WVc2eCoOQD_1qq0UV92wRw@mail.gmail.com/

^ permalink raw reply	[flat|nested] 60+ messages in thread

end of thread, other threads:[~2026-04-08  8:22 UTC | newest]

Thread overview: 60+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-26 21:34 [PATCH v2 00/25] libfuse: Add support for synchronous init Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 01/25] ci-build: Add environment logging Bernd Schubert
2026-03-27  3:20   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 02/25] Add 'STRCPY' to the checkpatch ignore option Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 03/25] checkpatch.pl: Add _Atomic to $Attribute patttern Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 04/25] Add a new daemonize API Bernd Schubert
2026-03-27 22:06   ` Darrick J. Wong
2026-03-27 23:07     ` Bernd Schubert
2026-03-28  4:01       ` Darrick J. Wong
2026-03-30 17:45       ` Darrick J. Wong
2026-03-30 18:26         ` Bernd Schubert
2026-03-30 21:25           ` Darrick J. Wong
2026-03-30 17:55   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 05/25] Sync fuse_kernel.h with linux-6.18 Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 06/25] mount.c: Split fuse_mount_sys to prepare privileged sync FUSE_INIT Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 07/25] Add FUSE_MOUNT_FALLBACK_NEEDED define for -2 mount errors Bernd Schubert
2026-03-27  3:20   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 08/25] Refactor mount code / move common functions to mount_util.c Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 09/25] Use asprintf() for fuse_mnt_build_{source,type} Bernd Schubert
2026-03-27  3:24   ` Darrick J. Wong
2026-03-30 15:34     ` Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 10/25] lib/mount.c: Remove some BSD ifdefs Bernd Schubert
2026-03-27  3:28   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 11/25] Move 'struct mount_flags' to util.h Bernd Schubert
2026-03-30 18:11   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 12/25] conftest.py: Add more valgrind filter patterns Bernd Schubert
2026-03-30 18:16   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 13/25] Add support for the new linux mount API Bernd Schubert
2026-03-30 18:27   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 14/25] fuse mount: Support synchronous FUSE_INIT (privileged daemon) Bernd Schubert
2026-03-30 18:44   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 15/25] Add fuse_session_set_debug() to enable debug output without foreground Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 16/25] Move more generic mount code to mount_util.{c,h} Bernd Schubert
2026-03-30 18:47   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 17/25] Split the fusermount do_mount function Bernd Schubert
2026-03-30 18:48   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 18/25] fusermout: Remove the large read check Bernd Schubert
2026-03-27  3:32   ` Darrick J. Wong
2026-03-30 15:26     ` Bernd Schubert
2026-03-30 17:57       ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 19/25] fusermount: Refactor extract_x_options Bernd Schubert
2026-03-26 21:34 ` [PATCH v2 20/25] Make fusermount work bidirectional for sync init Bernd Schubert
2026-03-30 19:03   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 21/25] New mount API: Filter out "user=" Bernd Schubert
2026-03-27  3:32   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 22/25] Add support for sync-init of unprivileged daemons Bernd Schubert
2026-03-31  0:54   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 23/25] Move fuse_mnt_build_{source,type} to mount_util.c Bernd Schubert
2026-03-30 19:04   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 24/25] Add mount and daemonization README documents Bernd Schubert
2026-03-31  1:17   ` Darrick J. Wong
2026-03-26 21:34 ` [PATCH v2 25/25] Add a background debug option to passthrough hp Bernd Schubert
2026-03-30 19:04   ` Darrick J. Wong
2026-04-07 12:04 ` fuse-devel list on kernel.org Amir Goldstein
2026-04-07 12:25   ` Bernd Schubert
2026-04-07 12:29     ` Amir Goldstein
2026-04-07 18:05       ` Bernd Schubert
2026-04-07 19:10         ` Darrick J. Wong
2026-04-08  8:21           ` Amir Goldstein
  -- strict thread matches above, loose matches on Subject: below --
2026-04-08  8:13 Amir Goldstein

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox