linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org, miklos@szeredi.hu
Cc: bernd@bsbernd.com, neal@gompa.dev, John@groves.net,
	linux-fsdevel@vger.kernel.org, joannelkoong@gmail.com
Subject: [PATCH 07/23] fuse: flush events and send FUSE_SYNCFS and FUSE_DESTROY on unmount
Date: Wed, 20 Aug 2025 17:54:19 -0700	[thread overview]
Message-ID: <175573709265.17510.14616856553557933379.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <175573708972.17510.972367243402147687.stgit@frogsfrogsfrogs>

From: Darrick J. Wong <djwong@kernel.org>

At unmount time, there are a few things that we need to ask the fuse
server to do.

First, we need to flush queued events to userspace to give the fuse
server a chance to process the events.  This is how we make sure that
the server processes FUSE_RELEASE events before the connection goes
down.

Second, to ensure that all those metadata updates are persisted to disk
before tell the fuse server to destroy itself, send FUSE_SYNCFS after
waiting for the queued events.

Finally, we need to send FUSE_DESTROY to the fuse server so that it
closes the filesystem and the device fds before unmount returns.  That
way, a script that does something like "umount /dev/sda ; e2fsck -fn
/dev/sda" will not fail the e2fsck because the fd closure races with
e2fsck startup.  Obviously, we need to wait for FUSE_SYNCFS.

This is a major behavior change and who knows what might break existing
code, so we hide it behind iomap mode.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
 fs/fuse/fuse_i.h     |    7 +++++++
 fs/fuse/file_iomap.c |   29 +++++++++++++++++++++++++++++
 fs/fuse/inode.c      |    9 +++++++--
 3 files changed, 43 insertions(+), 2 deletions(-)


diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index f4834a02d16c98..6a155bdd389af6 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -1364,6 +1364,9 @@ int fuse_init_fs_context_submount(struct fs_context *fsc);
  */
 void fuse_conn_destroy(struct fuse_mount *fm);
 
+/* Send the FUSE_DESTROY command. */
+void fuse_send_destroy(struct fuse_mount *fm);
+
 /* Drop the connection and free the fuse mount */
 void fuse_mount_destroy(struct fuse_mount *fm);
 
@@ -1646,11 +1649,15 @@ static inline bool fuse_has_iomap(const struct inode *inode)
 
 int fuse_iomap_backing_open(struct fuse_conn *fc, struct fuse_backing *fb);
 int fuse_iomap_backing_close(struct fuse_conn *fc, struct fuse_backing *fb);
+void fuse_iomap_mount(struct fuse_mount *fm);
+void fuse_iomap_unmount(struct fuse_mount *fm);
 #else
 # define fuse_iomap_enabled(...)		(false)
 # define fuse_has_iomap(...)			(false)
 # define fuse_iomap_backing_open(...)		(-EOPNOTSUPP)
 # define fuse_iomap_backing_close(...)		(-EOPNOTSUPP)
+# define fuse_iomap_mount(...)			((void)0)
+# define fuse_iomap_unmount(...)		((void)0)
 #endif
 
 #endif /* _FS_FUSE_I_H */
diff --git a/fs/fuse/file_iomap.c b/fs/fuse/file_iomap.c
index 154c99399f48d2..6e0e222da3046c 100644
--- a/fs/fuse/file_iomap.c
+++ b/fs/fuse/file_iomap.c
@@ -593,3 +593,32 @@ int fuse_iomap_backing_close(struct fuse_conn *fc, struct fuse_backing *fb)
 	/* We only support closing iomap block devices at unmount */
 	return -EBUSY;
 }
+
+void fuse_iomap_mount(struct fuse_mount *fm)
+{
+	struct fuse_conn *fc = fm->fc;
+
+	/*
+	 * Enable syncfs for iomap fuse servers so that we can send a final
+	 * flush at unmount time.  This also means that we can support
+	 * freeze/thaw properly.
+	 */
+	fc->sync_fs = true;
+}
+
+void fuse_iomap_unmount(struct fuse_mount *fm)
+{
+	struct fuse_conn *fc = fm->fc;
+
+	/*
+	 * Flush all pending commands, syncfs, flush that, and send a destroy
+	 * command.  This gives the fuse server a chance to process all the
+	 * pending releases, write the last bits of metadata changes to disk,
+	 * and close the iomap block devices before we return from the umount
+	 * call.  The caller already flushed previously pending requests, so we
+	 * only need the flush to wait for syncfs.
+	 */
+	sync_filesystem(fm->sb);
+	fuse_flush_requests_and_wait(fc, secs_to_jiffies(60));
+	fuse_send_destroy(fm);
+}
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 1f3f91981410aa..3274ee1c31b62b 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -621,7 +621,7 @@ static void fuse_umount_begin(struct super_block *sb)
 		retire_super(sb);
 }
 
-static void fuse_send_destroy(struct fuse_mount *fm)
+void fuse_send_destroy(struct fuse_mount *fm)
 {
 	if (fm->fc->conn_init) {
 		FUSE_ARGS(args);
@@ -1457,6 +1457,9 @@ static void process_init_reply(struct fuse_mount *fm, struct fuse_args *args,
 
 		init_server_timeout(fc, timeout);
 
+		if (fc->iomap)
+			fuse_iomap_mount(fm);
+
 		fm->sb->s_bdi->ra_pages =
 				min(fm->sb->s_bdi->ra_pages, ra_pages);
 		fc->minor = arg->minor;
@@ -2055,7 +2058,9 @@ void fuse_conn_destroy(struct fuse_mount *fm)
 	struct fuse_conn *fc = fm->fc;
 
 	fuse_flush_requests_and_wait(fc, secs_to_jiffies(30));
-	if (fc->destroy)
+	if (fc->iomap)
+		fuse_iomap_unmount(fm);
+	else if (fc->destroy)
 		fuse_send_destroy(fm);
 
 	fuse_abort_conn(fc);


  parent reply	other threads:[~2025-08-21  0:54 UTC|newest]

Thread overview: 212+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-21  0:37 [RFC v4] fuse: use fs-iomap for better performance so we can containerize ext4 Darrick J. Wong
2025-08-21  0:47 ` [PATCHSET RFC v4 1/4] fuse: general bug fixes Darrick J. Wong
2025-08-21  0:50   ` [PATCH 1/7] fuse: fix livelock in synchronous file put from fuseblk workers Darrick J. Wong
2025-09-03 15:20     ` Miklos Szeredi
2025-09-03 15:23       ` Darrick J. Wong
2025-08-21  0:51   ` [PATCH 2/7] fuse: flush pending fuse events before aborting the connection Darrick J. Wong
2025-09-03 15:45     ` Miklos Szeredi
2025-09-03 17:49       ` Darrick J. Wong
2025-09-04 10:54         ` Miklos Szeredi
2025-08-21  0:51   ` [PATCH 3/7] fuse: capture the unique id of fuse commands being sent Darrick J. Wong
2025-08-22  0:15     ` Joanne Koong
2025-08-26 18:52       ` Darrick J. Wong
2025-09-03 15:48         ` Miklos Szeredi
2025-09-03 15:54           ` Darrick J. Wong
2025-09-03 18:47             ` Darrick J. Wong
2025-09-03 23:05               ` Joanne Koong
2025-09-04  0:23                 ` Darrick J. Wong
2025-09-03 15:51         ` Bernd Schubert
2025-08-21  0:51   ` [PATCH 4/7] fuse: implement file attributes mask for statx Darrick J. Wong
2025-08-22  0:01     ` Joanne Koong
2025-08-26 18:56       ` Darrick J. Wong
2025-08-29  6:24     ` Miklos Szeredi
2025-08-29 15:39       ` Darrick J. Wong
2025-09-02  9:41         ` Miklos Szeredi
2025-09-02 20:57           ` Darrick J. Wong
2025-09-03  9:55             ` Miklos Szeredi
2025-09-03 15:49               ` Darrick J. Wong
2025-09-04 11:26                 ` Miklos Szeredi
2025-09-05  1:28                   ` Darrick J. Wong
2025-09-05  7:02                     ` Miklos Szeredi
2025-09-05 15:22                       ` Darrick J. Wong
2025-08-21  0:51   ` [PATCH 5/7] fuse: update file mode when updating acls Darrick J. Wong
2025-09-03 16:01     ` Miklos Szeredi
2025-09-03 17:51       ` Darrick J. Wong
2025-09-04 10:49         ` Miklos Szeredi
2025-09-05  1:29           ` Darrick J. Wong
2025-08-21  0:52   ` [PATCH 6/7] fuse: propagate default and file acls on creation Darrick J. Wong
2025-09-03 16:15     ` Miklos Szeredi
2025-09-03 16:27       ` Darrick J. Wong
2025-08-21  0:52   ` [PATCH 7/7] fuse: enable FUSE_SYNCFS for all servers Darrick J. Wong
2025-08-21 22:18     ` Joanne Koong
2025-08-21 22:28       ` Darrick J. Wong
2025-08-21 22:54         ` Bernd Schubert
2025-08-21 23:31           ` Joanne Koong
2025-08-22 11:32           ` Shachar Sharon
2025-08-22 17:21             ` Joanne Koong
2025-08-26 19:31               ` Darrick J. Wong
2025-08-26 22:07                 ` Joanne Koong
2025-08-27 15:18                   ` Miklos Szeredi
2025-08-27 19:12                     ` Darrick J. Wong
2025-08-28 14:08                       ` Miklos Szeredi
2025-08-28 14:23                         ` Miklos Szeredi
2025-08-28 15:01                         ` Darrick J. Wong
2025-08-28 15:52                           ` Joanne Koong
2025-08-21  0:47 ` [PATCHSET RFC v4 2/4] fuse: allow servers to use iomap for better file IO performance Darrick J. Wong
2025-08-21  0:52   ` [PATCH 01/23] fuse: move CREATE_TRACE_POINTS to a separate file Darrick J. Wong
2025-08-21  0:53   ` [PATCH 02/23] fuse: implement the basic iomap mechanisms Darrick J. Wong
2025-09-04 14:04     ` Miklos Szeredi
2025-09-04 14:45       ` Darrick J. Wong
2025-09-04 15:17         ` Miklos Szeredi
2025-09-05  1:50           ` Darrick J. Wong
2025-09-11 21:45             ` Darrick J. Wong
2025-09-12 13:28               ` Miklos Szeredi
2025-09-12 14:54                 ` Darrick J. Wong
2025-08-21  0:53   ` [PATCH 03/23] fuse: make debugging configurable at runtime Darrick J. Wong
2025-08-21  0:53   ` [PATCH 04/23] fuse: move the backing file idr and code into a new source file Darrick J. Wong
2025-08-21  7:21     ` Amir Goldstein
2025-08-21  7:42       ` Amir Goldstein
2025-08-21 16:15         ` Darrick J. Wong
2025-08-21  0:53   ` [PATCH 05/23] fuse: move the passthrough-specific code back to passthrough.c Darrick J. Wong
2025-08-21  9:05     ` Amir Goldstein
2025-08-21 16:13       ` Darrick J. Wong
2025-08-21  0:54   ` [PATCH 06/23] fuse: add an ioctl to add new iomap devices Darrick J. Wong
2025-08-21  8:09     ` Amir Goldstein
2025-08-21 16:15       ` Darrick J. Wong
2025-08-21  0:54   ` Darrick J. Wong [this message]
2025-08-21  0:54   ` [PATCH 08/23] fuse: implement basic iomap reporting such as FIEMAP and SEEK_{DATA,HOLE} Darrick J. Wong
2025-08-21  0:54   ` [PATCH 09/23] fuse: implement direct IO with iomap Darrick J. Wong
2025-08-21  0:55   ` [PATCH 10/23] fuse: implement buffered " Darrick J. Wong
2025-08-21  0:55   ` [PATCH 11/23] fuse: enable caching of timestamps Darrick J. Wong
2025-08-21  0:55   ` [PATCH 12/23] fuse: implement large folios for iomap pagecache files Darrick J. Wong
2025-08-21  0:55   ` [PATCH 13/23] fuse: use an unrestricted backing device with iomap pagecache io Darrick J. Wong
2025-08-21  0:56   ` [PATCH 14/23] fuse: advertise support for iomap Darrick J. Wong
2025-08-21  0:56   ` [PATCH 15/23] fuse: query filesystem geometry when using iomap Darrick J. Wong
2025-08-21  0:56   ` [PATCH 16/23] fuse: implement fadvise for iomap files Darrick J. Wong
2025-08-21  0:56   ` [PATCH 17/23] fuse: make the root nodeid dynamic Darrick J. Wong
2025-08-21  0:57   ` [PATCH 18/23] fuse: allow setting of root nodeid Darrick J. Wong
2025-08-21  0:57   ` [PATCH 19/23] fuse: invalidate ranges of block devices being used for iomap Darrick J. Wong
2025-08-21  0:57   ` [PATCH 20/23] fuse: implement inline data file IO via iomap Darrick J. Wong
2025-08-21  0:57   ` [PATCH 21/23] fuse: allow more statx fields Darrick J. Wong
2025-08-21  0:58   ` [PATCH 22/23] fuse: support atomic writes with iomap Darrick J. Wong
2025-08-21  0:58   ` [PATCH 23/23] fuse: enable iomap Darrick J. Wong
2025-08-21  0:47 ` [PATCHSET RFC v4 3/4] fuse: cache iomap mappings for even better file IO performance Darrick J. Wong
2025-08-21  0:58   ` [PATCH 1/4] fuse: cache iomaps Darrick J. Wong
2025-08-21  0:59   ` [PATCH 2/4] fuse: use the iomap cache for iomap_begin Darrick J. Wong
2025-08-21  0:59   ` [PATCH 3/4] fuse: invalidate iomap cache after file updates Darrick J. Wong
2025-08-21  0:59   ` [PATCH 4/4] fuse: enable iomap cache management Darrick J. Wong
2025-08-21  0:48 ` [PATCHSET RFC v4 4/4] fuse: handle timestamps and ACLs correctly when iomap is enabled Darrick J. Wong
2025-08-21  0:59   ` [PATCH 1/6] fuse: force a ctime update after a fileattr_set call when in iomap mode Darrick J. Wong
2025-08-21  1:00   ` [PATCH 2/6] fuse: synchronize inode->i_flags after fileattr_[gs]et Darrick J. Wong
2025-08-21  1:00   ` [PATCH 3/6] fuse: cache atime when in iomap mode Darrick J. Wong
2025-08-21  1:00   ` [PATCH 4/6] fuse: let the kernel handle KILL_SUID/KILL_SGID for iomap filesystems Darrick J. Wong
2025-08-21  1:00   ` [PATCH 5/6] fuse: update ctime when updating acls on an iomap inode Darrick J. Wong
2025-08-21  1:01   ` [PATCH 6/6] fuse: always cache ACLs when using iomap Darrick J. Wong
2025-08-21  0:48 ` [PATCHSET RFC v4 1/4] libfuse: general bug fixes Darrick J. Wong
2025-08-21  1:01   ` [PATCH 1/1] libfuse: don't put HAVE_STATX in a public header Darrick J. Wong
2025-08-21 21:39     ` Bernd Schubert
2025-08-21 22:27       ` Darrick J. Wong
2025-08-22  0:33     ` Joanne Koong
2025-08-22 12:54       ` Bernd Schubert
2025-08-26 19:43         ` Darrick J. Wong
2025-08-21  0:48 ` [PATCHSET RFC v4 2/4] libfuse: allow servers to use iomap for better file IO performance Darrick J. Wong
2025-08-21  1:01   ` [PATCH 01/21] libfuse: bump kernel and library ABI versions Darrick J. Wong
2025-08-21  1:01   ` [PATCH 02/21] libfuse: add kernel gates for FUSE_IOMAP Darrick J. Wong
2025-08-21  1:02   ` [PATCH 03/21] libfuse: add fuse commands for iomap_begin and end Darrick J. Wong
2025-08-21  1:02   ` [PATCH 04/21] libfuse: add upper level iomap commands Darrick J. Wong
2025-08-21  1:02   ` [PATCH 05/21] libfuse: add a lowlevel notification to add a new device to iomap Darrick J. Wong
2025-08-21  1:02   ` [PATCH 06/21] libfuse: add upper-level iomap add device function Darrick J. Wong
2025-08-21  1:03   ` [PATCH 07/21] libfuse: add iomap ioend low level handler Darrick J. Wong
2025-08-21  1:03   ` [PATCH 08/21] libfuse: add upper level iomap ioend commands Darrick J. Wong
2025-08-21  1:03   ` [PATCH 09/21] libfuse: add a reply function to send FUSE_ATTR_* to the kernel Darrick J. Wong
2025-08-21  1:03   ` [PATCH 10/21] libfuse: connect high level fuse library to fuse_reply_attr_iflags Darrick J. Wong
2025-08-21  1:04   ` [PATCH 11/21] libfuse: support direct I/O through iomap Darrick J. Wong
2025-08-21  1:04   ` [PATCH 12/21] libfuse: support buffered " Darrick J. Wong
2025-08-21  1:04   ` [PATCH 13/21] libfuse: don't allow hardlinking of iomap files in the upper level fuse library Darrick J. Wong
2025-08-21  1:05   ` [PATCH 14/21] libfuse: allow discovery of the kernel's iomap capabilities Darrick J. Wong
2025-08-21  1:05   ` [PATCH 15/21] libfuse: add lower level iomap_config implementation Darrick J. Wong
2025-08-21  1:05   ` [PATCH 16/21] libfuse: add upper " Darrick J. Wong
2025-08-21  1:05   ` [PATCH 17/21] libfuse: allow root_nodeid mount option Darrick J. Wong
2025-08-21  1:06   ` [PATCH 18/21] libfuse: add low level code to invalidate iomap block device ranges Darrick J. Wong
2025-08-21  1:06   ` [PATCH 19/21] libfuse: add upper-level API to invalidate parts of an iomap block device Darrick J. Wong
2025-08-21  1:06   ` [PATCH 20/21] libfuse: add strictatime/lazytime mount options Darrick J. Wong
2025-08-21  1:06   ` [PATCH 21/21] libfuse: add atomic write support Darrick J. Wong
2025-08-21  0:48 ` [PATCHSET RFC v4 3/4] libfuse: cache iomap mappings for even better file IO performance Darrick J. Wong
2025-08-21  1:07   ` [PATCH 1/2] libfuse: enable iomap cache management for lowlevel fuse Darrick J. Wong
2025-08-21  1:07   ` [PATCH 2/2] libfuse: add upper-level iomap cache management Darrick J. Wong
2025-08-21  0:49 ` [PATCHSET RFC v4 4/4] libfuse: implement syncfs Darrick J. Wong
2025-08-21  1:07   ` [PATCH 1/2] libfuse: wire up FUSE_SYNCFS to the low level library Darrick J. Wong
2025-08-21  1:07   ` [PATCH 2/2] libfuse: add syncfs support to the upper library Darrick J. Wong
2025-08-21 21:41   ` [PATCHSET RFC v4 4/4] libfuse: implement syncfs Bernd Schubert
2025-08-21 22:29     ` Darrick J. Wong
2025-08-21  0:49 ` [PATCHSET RFC v4 1/6] fuse4fs: fork a low level fuse server Darrick J. Wong
2025-08-21  1:08   ` [PATCH 01/20] fuse2fs: port fuse2fs to lowlevel libfuse API Darrick J. Wong
2025-08-21  1:08   ` [PATCH 02/20] fuse4fs: drop fuse 2.x support code Darrick J. Wong
2025-08-21  1:08   ` [PATCH 03/20] fuse4fs: namespace some helpers Darrick J. Wong
2025-08-21  1:08   ` [PATCH 04/20] fuse4fs: convert to low level API Darrick J. Wong
2025-08-21  1:09   ` [PATCH 05/20] libsupport: port the kernel list.h to libsupport Darrick J. Wong
2025-08-21  1:09   ` [PATCH 06/20] libsupport: add a cache Darrick J. Wong
2025-08-21  1:09   ` [PATCH 07/20] cache: disable debugging Darrick J. Wong
2025-08-21  1:09   ` [PATCH 08/20] cache: use modern list iterator macros Darrick J. Wong
2025-08-21  1:10   ` [PATCH 09/20] cache: embed struct cache in the owner Darrick J. Wong
2025-08-21  1:10   ` [PATCH 10/20] cache: pass cache pointer to callbacks Darrick J. Wong
2025-08-21  1:10   ` [PATCH 11/20] cache: pass a private data pointer through cache_walk Darrick J. Wong
2025-08-21  1:11   ` [PATCH 12/20] cache: add a helper to grab a new refcount for a cache_node Darrick J. Wong
2025-08-21  1:11   ` [PATCH 13/20] cache: return results of a cache flush Darrick J. Wong
2025-08-21  1:11   ` [PATCH 14/20] cache: add a "get only if incore" flag to cache_node_get Darrick J. Wong
2025-08-21  1:11   ` [PATCH 15/20] cache: support gradual expansion Darrick J. Wong
2025-08-21  1:12   ` [PATCH 16/20] cache: implement automatic shrinking Darrick J. Wong
2025-08-21  1:12   ` [PATCH 17/20] fuse4fs: add cache to track open files Darrick J. Wong
2025-08-21  1:12   ` [PATCH 18/20] fuse4fs: use the orphaned inode list Darrick J. Wong
2025-08-21  1:12   ` [PATCH 19/20] fuse4fs: implement FUSE_TMPFILE Darrick J. Wong
2025-08-21  1:13   ` [PATCH 20/20] fuse4fs: create incore reverse orphan list Darrick J. Wong
2025-08-21  0:49 ` [PATCHSET RFC v4 2/6] libext2fs: refactoring for fuse2fs iomap support Darrick J. Wong
2025-08-21  1:13   ` [PATCH 01/10] libext2fs: make it possible to extract the fd from an IO manager Darrick J. Wong
2025-08-21  1:13   ` [PATCH 02/10] libext2fs: always fsync the device when flushing the cache Darrick J. Wong
2025-08-21  1:13   ` [PATCH 03/10] libext2fs: always fsync the device when closing the unix IO manager Darrick J. Wong
2025-08-21  1:14   ` [PATCH 04/10] libext2fs: only fsync the unix fd if we wrote to the device Darrick J. Wong
2025-08-21  1:14   ` [PATCH 05/10] libext2fs: invalidate cached blocks when freeing them Darrick J. Wong
2025-08-21  1:14   ` [PATCH 06/10] libext2fs: only flush affected blocks in unix_write_byte Darrick J. Wong
2025-08-21  1:14   ` [PATCH 07/10] libext2fs: allow unix_write_byte when the write would be aligned Darrick J. Wong
2025-08-21  1:15   ` [PATCH 08/10] libext2fs: allow clients to ask to write full superblocks Darrick J. Wong
2025-08-21  1:15   ` [PATCH 09/10] libext2fs: allow callers to disallow I/O to file data blocks Darrick J. Wong
2025-08-21  1:15   ` [PATCH 10/10] libext2fs: add posix advisory locking to the unix IO manager Darrick J. Wong
2025-08-21  0:49 ` [PATCHSET RFC v4 3/6] fuse2fs: use fuse iomap data paths for better file I/O performance Darrick J. Wong
2025-08-21  1:15   ` [PATCH 01/19] fuse2fs: implement bare minimum iomap for file mapping reporting Darrick J. Wong
2025-08-21  1:16   ` [PATCH 02/19] fuse2fs: add iomap= mount option Darrick J. Wong
2025-08-21  1:16   ` [PATCH 03/19] fuse2fs: implement iomap configuration Darrick J. Wong
2025-08-21  1:16   ` [PATCH 04/19] fuse2fs: register block devices for use with iomap Darrick J. Wong
2025-08-21  1:17   ` [PATCH 05/19] fuse2fs: implement directio file reads Darrick J. Wong
2025-08-21  1:17   ` [PATCH 06/19] fuse2fs: add extent dump function for debugging Darrick J. Wong
2025-08-21  1:17   ` [PATCH 07/19] fuse2fs: implement direct write support Darrick J. Wong
2025-08-21  1:17   ` [PATCH 08/19] fuse2fs: turn on iomap for pagecache IO Darrick J. Wong
2025-08-21  1:18   ` [PATCH 09/19] fuse2fs: don't zero bytes in punch hole Darrick J. Wong
2025-08-21  1:18   ` [PATCH 10/19] fuse2fs: don't do file data block IO when iomap is enabled Darrick J. Wong
2025-08-21  1:18   ` [PATCH 11/19] fuse2fs: avoid fuseblk mode if fuse-iomap support is likely Darrick J. Wong
2025-08-21  1:18   ` [PATCH 12/19] fuse2fs: enable file IO to inline data files Darrick J. Wong
2025-08-21  1:19   ` [PATCH 13/19] fuse2fs: set iomap-related inode flags Darrick J. Wong
2025-08-21  1:19   ` [PATCH 14/19] fuse2fs: add strictatime/lazytime mount options Darrick J. Wong
2025-08-21  1:19   ` [PATCH 15/19] fuse2fs: configure block device block size Darrick J. Wong
2025-08-21  1:19   ` [PATCH 16/19] fuse4fs: don't use inode number translation when possible Darrick J. Wong
2025-08-21  1:20   ` [PATCH 17/19] fuse4fs: separate invalidation Darrick J. Wong
2025-08-21  1:20   ` [PATCH 18/19] fuse2fs: implement statx Darrick J. Wong
2025-08-21  1:20   ` [PATCH 19/19] fuse2fs: enable atomic writes Darrick J. Wong
2025-08-21  0:50 ` [PATCHSET RFC v4 4/6] fuse2fs: use fuse iomap data paths for better file I/O performance Darrick J. Wong
2025-08-21  1:20   ` [PATCH 1/2] fuse2fs: enable caching of iomaps Darrick J. Wong
2025-08-21  1:21   ` [PATCH 2/2] fuse2fs: be smarter about caching iomaps Darrick J. Wong
2025-08-21  0:50 ` [PATCHSET RFC v4 5/6] fuse2fs: handle timestamps and ACLs correctly when iomap is enabled Darrick J. Wong
2025-08-21  1:21   ` [PATCH 1/8] fuse2fs: skip permission checking on utimens " Darrick J. Wong
2025-08-21  1:21   ` [PATCH 2/8] fuse2fs: let the kernel tell us about acl/mode updates Darrick J. Wong
2025-08-21  1:21   ` [PATCH 3/8] fuse2fs: better debugging for file mode updates Darrick J. Wong
2025-08-21  1:22   ` [PATCH 4/8] fuse2fs: debug timestamp updates Darrick J. Wong
2025-08-21  1:22   ` [PATCH 5/8] fuse2fs: use coarse timestamps for iomap mode Darrick J. Wong
2025-08-21  1:22   ` [PATCH 6/8] fuse2fs: add tracing for retrieving timestamps Darrick J. Wong
2025-08-21  1:23   ` [PATCH 7/8] fuse2fs: enable syncfs Darrick J. Wong
2025-08-21  1:23   ` [PATCH 8/8] fuse2fs: skip the gdt write in op_destroy if syncfs is working Darrick J. Wong
2025-08-21  0:50 ` [PATCHSET RFC v4 6/6] fuse2fs: improve block and inode caching Darrick J. Wong
2025-08-21  1:23   ` [PATCH 1/6] libsupport: add caching IO manager Darrick J. Wong
2025-08-21  1:23   ` [PATCH 2/6] iocache: add the actual buffer cache Darrick J. Wong
2025-08-21  1:24   ` [PATCH 3/6] iocache: bump buffer mru priority every 50 accesses Darrick J. Wong
2025-08-21  1:24   ` [PATCH 4/6] fuse2fs: enable caching IO manager Darrick J. Wong
2025-08-21  1:24   ` [PATCH 5/6] fuse2fs: increase inode cache size Darrick J. Wong
2025-08-21  1:24   ` [PATCH 6/6] libext2fs: improve caching for inodes Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=175573709265.17510.14616856553557933379.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=John@groves.net \
    --cc=bernd@bsbernd.com \
    --cc=joannelkoong@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=neal@gompa.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).