From: "Darrick J. Wong" <djwong@kernel.org>
To: Joanne Koong <joannelkoong@gmail.com>
Cc: miklos@szeredi.hu, bernd@bsbernd.com, neal@gompa.dev,
linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 07/31] fuse: create a per-inode flag for toggling iomap
Date: Thu, 22 Jan 2026 14:22:33 -0800 [thread overview]
Message-ID: <20260122222233.GA5900@frogsfrogsfrogs> (raw)
In-Reply-To: <CAJnrk1ZDeYytdjuCdg6-O-PGjcmwS33LOnfFT_YY9SPE=x=Qxw@mail.gmail.com>
On Wed, Jan 21, 2026 at 05:13:39PM -0800, Joanne Koong wrote:
> On Tue, Oct 28, 2025 at 5:46 PM Darrick J. Wong <djwong@kernel.org> wrote:
> >
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Create a per-inode flag to control whether or not this inode actually
> > uses iomap. This is required for non-regular files because iomap
> > doesn't apply there; and enables fuse filesystems to provide some
> > non-iomap files if desired.
> >
> > Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
>
> The logic in this makes sense to me, left just a few comments below.
>
> Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
Thanks!
> > ---
> > fs/fuse/fuse_i.h | 17 ++++++++++++++++
> > include/uapi/linux/fuse.h | 3 +++
> > fs/fuse/file.c | 1 +
> > fs/fuse/file_iomap.c | 49 +++++++++++++++++++++++++++++++++++++++++++++
> > fs/fuse/inode.c | 26 ++++++++++++++++++------
> > 5 files changed, 90 insertions(+), 6 deletions(-)
> >
> >
> > diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
> > index 839d4f2ada4656..c7aeb324fe599e 100644
> > --- a/fs/fuse/fuse_i.h
> > +++ b/fs/fuse/fuse_i.h
> > @@ -257,6 +257,8 @@ enum {
> > * or the fuse server has an exclusive "lease" on distributed fs
> > */
> > FUSE_I_EXCLUSIVE,
> > + /* Use iomap for this inode */
> > + FUSE_I_IOMAP,
> > };
> >
> > struct fuse_conn;
> > @@ -1717,11 +1719,26 @@ extern const struct fuse_backing_ops fuse_iomap_backing_ops;
> >
> > void fuse_iomap_mount(struct fuse_mount *fm);
> > void fuse_iomap_unmount(struct fuse_mount *fm);
> > +
> > +void fuse_iomap_init_reg_inode(struct inode *inode, unsigned attr_flags);
> > +void fuse_iomap_init_nonreg_inode(struct inode *inode, unsigned attr_flags);
> > +void fuse_iomap_evict_inode(struct inode *inode);
> > +
> > +static inline bool fuse_inode_has_iomap(const struct inode *inode)
> > +{
> > + const struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + return test_bit(FUSE_I_IOMAP, &fi->state);
> > +}
> > #else
> > # define fuse_iomap_enabled(...) (false)
> > # define fuse_has_iomap(...) (false)
> > # define fuse_iomap_mount(...) ((void)0)
> > # define fuse_iomap_unmount(...) ((void)0)
> > +# define fuse_iomap_init_reg_inode(...) ((void)0)
> > +# define fuse_iomap_init_nonreg_inode(...) ((void)0)
> > +# define fuse_iomap_evict_inode(...) ((void)0)
> > +# define fuse_inode_has_iomap(...) (false)
> > #endif
> >
> > #endif /* _FS_FUSE_I_H */
> > diff --git a/include/uapi/linux/fuse.h b/include/uapi/linux/fuse.h
> > index e571f8ceecbfad..e949bfe022c3b0 100644
> > --- a/include/uapi/linux/fuse.h
> > +++ b/include/uapi/linux/fuse.h
> > @@ -243,6 +243,7 @@
> > *
> > * 7.99
> > * - add FUSE_IOMAP and iomap_{begin,end,ioend} for regular file operations
> > + * - add FUSE_ATTR_IOMAP to enable iomap for specific inodes
> > */
> >
> > #ifndef _LINUX_FUSE_H
> > @@ -583,9 +584,11 @@ struct fuse_file_lock {
> > *
> > * FUSE_ATTR_SUBMOUNT: Object is a submount root
> > * FUSE_ATTR_DAX: Enable DAX for this file in per inode DAX mode
> > + * FUSE_ATTR_IOMAP: Use iomap for this inode
> > */
> > #define FUSE_ATTR_SUBMOUNT (1 << 0)
> > #define FUSE_ATTR_DAX (1 << 1)
> > +#define FUSE_ATTR_IOMAP (1 << 2)
> >
> > /**
> > * Open flags
> > diff --git a/fs/fuse/file.c b/fs/fuse/file.c
> > index f1ef77a0be05bb..42c85c19f3b13b 100644
> > --- a/fs/fuse/file.c
> > +++ b/fs/fuse/file.c
> > @@ -3135,6 +3135,7 @@ void fuse_init_file_inode(struct inode *inode, unsigned int flags)
> > init_waitqueue_head(&fi->page_waitq);
> > init_waitqueue_head(&fi->direct_io_waitq);
> >
> > + fuse_iomap_init_reg_inode(inode, flags);
>
> imo it's a bit confusing to have this here when the rest of the
> fuse_iomap_init_nonreg_inode() calls happen inside the switch case
> statement. Maybe it makes sense to have this inside the switch case
> like the fuse_iomap_init_nonreg_inode() calls, or alternatively move
> the fuse_iomap_init_nonreg_inode() calls into their corresponding
> helpers (eg fuse_init_dir(), etc.), so that it's consistent?
Ah, that. Originally I /did/ have it in the switch statement in
fuse_init_inode. Then I started trying to work on fsdax support (HA!)
for which it became necessary to move the fuse_iomap_init_reg_inode call
to fuse_init_file_inode and pass it a pointer to args->flags so that it
could clear FUSE_ATTR_DAX so that the other fuse dax io paths wouldn't
try to install themselves.
I never got fsdax working properly so that's why it's never been
attached to my fuse-iomap patches. Maybe that'll happen some day in the
meantime ... should fuse_iomap_init_reg_inode move back to the switch?
> > if (IS_ENABLED(CONFIG_FUSE_DAX))
> > fuse_dax_inode_init(inode, flags);
> > }
> > diff --git a/fs/fuse/file_iomap.c b/fs/fuse/file_iomap.c
> > index 1b9e1bf2f799a3..fc0d5f135bacf9 100644
> > --- a/fs/fuse/file_iomap.c
> > +++ b/fs/fuse/file_iomap.c
> > @@ -635,3 +635,52 @@ void fuse_iomap_unmount(struct fuse_mount *fm)
> > fuse_flush_requests_and_wait(fc);
> > fuse_send_destroy(fm);
> > }
> > +
> > +static inline void fuse_inode_set_iomap(struct inode *inode)
> > +{
> > + struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + set_bit(FUSE_I_IOMAP, &fi->state);
> > +}
> > +
> > +static inline void fuse_inode_clear_iomap(struct inode *inode)
> > +{
> > + struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + clear_bit(FUSE_I_IOMAP, &fi->state);
> > +}
> > +
> > +void fuse_iomap_init_nonreg_inode(struct inode *inode, unsigned attr_flags)
> > +{
> > + struct fuse_conn *conn = get_fuse_conn(inode);
> > + struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + ASSERT(!S_ISREG(inode->i_mode));
> > +
> > + if (conn->iomap && (attr_flags & FUSE_ATTR_IOMAP))
> > + set_bit(FUSE_I_EXCLUSIVE, &fi->state);
> > +}
> > +
> > +void fuse_iomap_init_reg_inode(struct inode *inode, unsigned attr_flags)
> > +{
> > + struct fuse_conn *conn = get_fuse_conn(inode);
> > + struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + ASSERT(S_ISREG(inode->i_mode));
> > +
> > + if (conn->iomap && (attr_flags & FUSE_ATTR_IOMAP)) {
> > + set_bit(FUSE_I_EXCLUSIVE, &fi->state);
> > + fuse_inode_set_iomap(inode);
> > + }
> > +}
> > +
> > +void fuse_iomap_evict_inode(struct inode *inode)
> > +{
> > + struct fuse_conn *conn = get_fuse_conn(inode);
> > + struct fuse_inode *fi = get_fuse_inode(inode);
> > +
> > + if (fuse_inode_has_iomap(inode))
>
> If I'm understanding this correctly, a fuse inode can't have
> FUSE_I_IOMAP set on it if conn>iomap is not enabled, correct?
Correct.
> Maybe it makes sense to just return if (!conn->iomap) at the very
> beginning, to make that more clear?
<shrug> fuse_inode_has_iomap only checks FUSE_I_IOMAP...
> > + fuse_inode_clear_iomap(inode);
> > + if (conn->iomap && fuse_inode_is_exclusive(inode))
> > + clear_bit(FUSE_I_EXCLUSIVE, &fi->state);
...but I wasn't going to assume that iomap is the only way that
FUSE_I_EXCLUSIVE could get set.
On the other hand, for non-regular files we set FUSE_I_EXCLUSIVE only if
conn->iomap is nonzero *and* attr->flags contains FUSE_ATTR_IOMAP. So
this clearing code isn't quite the same as the setting code.
I wonder if that means we should set FUSE_I_IOMAP for non-regular files?
They don't use iomap itself, but I suppose it would be neat if "iomap
directories" also meant that timestamps and whatnot worked in the same
as they do for regular files.
> > +}
> > diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
> > index 271356fa3be3ea..9b9e7b2dd0d928 100644
> > --- a/fs/fuse/inode.c
> > +++ b/fs/fuse/inode.c
> > @@ -196,6 +196,8 @@ static void fuse_evict_inode(struct inode *inode)
> > WARN_ON(!list_empty(&fi->write_files));
> > WARN_ON(!list_empty(&fi->queued_writes));
> > }
> > +
> > + fuse_iomap_evict_inode(inode);
> > }
> >
> > static int fuse_reconfigure(struct fs_context *fsc)
> > @@ -428,20 +430,32 @@ static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr,
> > inode->i_size = attr->size;
> > inode_set_mtime(inode, attr->mtime, attr->mtimensec);
> > inode_set_ctime(inode, attr->ctime, attr->ctimensec);
> > - if (S_ISREG(inode->i_mode)) {
> > + switch (inode->i_mode & S_IFMT) {
> > + case S_IFREG:
> > fuse_init_common(inode);
> > fuse_init_file_inode(inode, attr->flags);
> > - } else if (S_ISDIR(inode->i_mode))
> > + break;
> > + case S_IFDIR:
> > fuse_init_dir(inode);
> > - else if (S_ISLNK(inode->i_mode))
> > + fuse_iomap_init_nonreg_inode(inode, attr->flags);
> > + break;
> > + case S_IFLNK:
> > fuse_init_symlink(inode);
> > - else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
> > - S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
> > + fuse_iomap_init_nonreg_inode(inode, attr->flags);
> > + break;
> > + case S_IFCHR:
> > + case S_IFBLK:
> > + case S_IFIFO:
> > + case S_IFSOCK:
> > fuse_init_common(inode);
> > init_special_inode(inode, inode->i_mode,
> > new_decode_dev(attr->rdev));
> > - } else
> > + fuse_iomap_init_nonreg_inode(inode, attr->flags);
> > + break;
> > + default:
> > BUG();
>
> Just thinking out loud here and curious to hear whether you like this
> idea or not: another option is calling
>
> if (conn->iomap)
> fuse_iomap_init_inode();
>
> at the end, where fuse_iomap_init_inode() would be something like:
>
> void fuse_iomap_init_inode(struct inode *inode, unsigned attr_flags)
> {
> struct fuse_inode *fi = get_fuse_inode(inode);
>
> if (attr_flags & FUSE_ATTR_IOMAP)
> set_bit(FUSE_I_EXCLUSIVE, &fi->state);
>
> if (S_ISREG(inode->i_mode))
> fuse_inode_set_iomap(inode);
> }
>
> which seems simpler to me than having both
> fuse_iomap_init_nonreg_inode() and fuse_iomap_init_reg_inode()
> function and invoking it per i_mode case.
Yeah that would be simpler, but for that weird fsdax enabling quirk I
mentioned earlier.
Hrmm, I could also modify fuse_dax_inode_init to return without doing
anything if FUSE_ATTR_IOMAP is set.
--D
> Thanks,
> Joanne
>
> > + break;
> > + }
> > /*
> > * Ensure that we don't cache acls for daemons without FUSE_POSIX_ACL
> > * so they see the exact same behavior as before.
> >
>
next prev parent reply other threads:[~2026-01-22 22:22 UTC|newest]
Thread overview: 333+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-29 0:27 [PATCHBOMB v6] fuse: containerize ext4 for safer operation Darrick J. Wong
2025-10-29 0:37 ` [PATCHSET v6 1/8] fuse: general bug fixes Darrick J. Wong
2025-10-29 0:43 ` [PATCH 1/5] fuse: flush pending fuse events before aborting the connection Darrick J. Wong
2025-11-03 17:20 ` Joanne Koong
2025-11-03 22:13 ` Darrick J. Wong
2025-11-04 19:22 ` Joanne Koong
2025-11-04 21:47 ` Bernd Schubert
2025-11-06 0:19 ` Darrick J. Wong
2025-11-06 0:17 ` Darrick J. Wong
2025-11-06 18:37 ` Joanne Koong
2025-11-07 4:26 ` Darrick J. Wong
2025-11-07 19:18 ` Joanne Koong
2025-11-08 0:43 ` Darrick J. Wong
2025-11-07 22:03 ` Bernd Schubert
2025-11-08 0:02 ` Darrick J. Wong
2025-11-10 17:56 ` Darrick J. Wong
2025-11-10 18:22 ` Bernd Schubert
2025-11-10 18:54 ` Darrick J. Wong
2025-11-10 22:09 ` Bernd Schubert
2025-11-11 0:33 ` Darrick J. Wong
2025-10-29 0:43 ` [PATCH 2/5] fuse: signal that a fuse inode should exhibit local fs behaviors Darrick J. Wong
2025-11-04 19:59 ` Joanne Koong
2025-10-29 0:43 ` [PATCH 3/5] fuse: implement file attributes mask for statx Darrick J. Wong
2025-11-03 18:30 ` Joanne Koong
2025-11-03 18:43 ` Joanne Koong
2025-11-03 19:28 ` Darrick J. Wong
2025-10-29 0:43 ` [PATCH 4/5] fuse: update file mode when updating acls Darrick J. Wong
2025-11-07 20:29 ` Joanne Koong
2025-11-08 0:17 ` Darrick J. Wong
2025-10-29 0:44 ` [PATCH 5/5] fuse: propagate default and file acls on creation Darrick J. Wong
2026-02-05 19:32 ` Chris Mason
2026-02-05 23:28 ` Darrick J. Wong
2025-10-29 0:38 ` [PATCHSET v6 2/8] iomap: cleanups ahead of adding fuse support Darrick J. Wong
2025-10-29 0:44 ` [PATCH 1/1] iomap: allow NULL swap info bdev when activating swapfile Darrick J. Wong
2025-10-29 8:40 ` Christoph Hellwig
2025-10-29 14:38 ` Darrick J. Wong
2025-10-30 6:00 ` Christoph Hellwig
2025-10-30 14:54 ` Darrick J. Wong
2025-10-30 15:03 ` Christoph Hellwig
2025-11-07 9:23 ` Jan Engelhardt
2025-11-07 18:05 ` Darrick J. Wong
2025-10-29 0:38 ` [PATCHSET v6 3/8] fuse: cleanups ahead of adding fuse support Darrick J. Wong
2025-10-29 0:44 ` [PATCH 1/2] fuse: move the passthrough-specific code back to passthrough.c Darrick J. Wong
2025-11-06 18:36 ` Amir Goldstein
2025-10-29 0:44 ` [PATCH 2/2] fuse_trace: " Darrick J. Wong
2025-11-07 20:55 ` Joanne Koong
2025-11-08 0:24 ` Darrick J. Wong
2025-11-10 17:50 ` Joanne Koong
2025-10-29 0:38 ` [PATCHSET v6 4/8] fuse: allow servers to use iomap for better file IO performance Darrick J. Wong
2025-10-29 0:45 ` [PATCH 01/31] fuse: implement the basic iomap mechanisms Darrick J. Wong
2026-01-21 19:34 ` Joanne Koong
2026-01-21 22:45 ` Darrick J. Wong
2026-01-22 0:06 ` Joanne Koong
2026-01-22 0:34 ` Darrick J. Wong
2026-02-05 19:22 ` Chris Mason
2026-02-05 23:31 ` Darrick J. Wong
2025-10-29 0:45 ` [PATCH 02/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:45 ` [PATCH 03/31] fuse: make debugging configurable at runtime Darrick J. Wong
2026-01-21 23:42 ` Joanne Koong
2026-01-22 0:02 ` Darrick J. Wong
2026-01-22 0:23 ` Joanne Koong
2026-01-22 0:40 ` Darrick J. Wong
2025-10-29 0:46 ` [PATCH 04/31] fuse: adapt FUSE_DEV_IOC_BACKING_{OPEN,CLOSE} to add new iomap devices Darrick J. Wong
2025-11-06 18:50 ` Amir Goldstein
2025-10-29 0:46 ` [PATCH 05/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:46 ` [PATCH 06/31] fuse: flush events and send FUSE_SYNCFS and FUSE_DESTROY on unmount Darrick J. Wong
2025-10-29 0:46 ` [PATCH 07/31] fuse: create a per-inode flag for toggling iomap Darrick J. Wong
2026-01-22 1:13 ` Joanne Koong
2026-01-22 22:22 ` Darrick J. Wong [this message]
2026-01-23 18:05 ` Joanne Koong
2026-01-24 16:54 ` Darrick J. Wong
2026-01-27 23:33 ` Darrick J. Wong
2025-10-29 0:47 ` [PATCH 08/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:47 ` [PATCH 09/31] fuse: isolate the other regular file IO paths from iomap Darrick J. Wong
2025-11-06 18:44 ` Amir Goldstein
2025-11-06 23:02 ` Darrick J. Wong
2025-11-06 23:35 ` Darrick J. Wong
2025-10-29 0:47 ` [PATCH 10/31] fuse: implement basic iomap reporting such as FIEMAP and SEEK_{DATA,HOLE} Darrick J. Wong
2026-01-22 2:07 ` Joanne Koong
2026-01-22 22:31 ` Darrick J. Wong
2025-10-29 0:47 ` [PATCH 11/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:48 ` [PATCH 12/31] fuse: implement direct IO with iomap Darrick J. Wong
2026-01-23 18:56 ` Joanne Koong
2026-01-26 23:46 ` Darrick J. Wong
2026-02-05 19:19 ` Chris Mason
2026-02-06 2:08 ` Darrick J. Wong
2026-02-06 2:52 ` Chris Mason
2026-02-06 5:08 ` Darrick J. Wong
2026-02-06 14:27 ` Chris Mason
2025-10-29 0:48 ` [PATCH 13/31] fuse_trace: " Darrick J. Wong
2026-02-05 19:16 ` Chris Mason
2026-02-06 2:12 ` Darrick J. Wong
2025-10-29 0:48 ` [PATCH 14/31] fuse: implement buffered " Darrick J. Wong
2026-02-05 19:12 ` Chris Mason
2026-02-06 2:14 ` Darrick J. Wong
2025-10-29 0:48 ` [PATCH 15/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:49 ` [PATCH 16/31] fuse: implement large folios for iomap pagecache files Darrick J. Wong
2026-01-23 21:50 ` Joanne Koong
2025-10-29 0:49 ` [PATCH 17/31] fuse: use an unrestricted backing device with iomap pagecache io Darrick J. Wong
2026-01-26 22:03 ` Joanne Koong
2026-01-26 23:55 ` Darrick J. Wong
2026-01-27 1:35 ` Joanne Koong
2026-01-27 2:09 ` Darrick J. Wong
2026-01-27 18:04 ` Joanne Koong
2026-01-27 23:37 ` Darrick J. Wong
2025-10-29 0:49 ` [PATCH 18/31] fuse: advertise support for iomap Darrick J. Wong
2025-10-29 0:49 ` [PATCH 19/31] fuse: query filesystem geometry when using iomap Darrick J. Wong
2026-02-05 19:07 ` Chris Mason
2026-02-06 2:17 ` Darrick J. Wong
2025-10-29 0:50 ` [PATCH 20/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:50 ` [PATCH 21/31] fuse: implement fadvise for iomap files Darrick J. Wong
2025-10-29 0:50 ` [PATCH 22/31] fuse: invalidate ranges of block devices being used for iomap Darrick J. Wong
2025-10-29 0:50 ` [PATCH 23/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:51 ` [PATCH 24/31] fuse: implement inline data file IO via iomap Darrick J. Wong
2026-02-05 19:01 ` Chris Mason
2026-02-06 2:27 ` Darrick J. Wong
2025-10-29 0:51 ` [PATCH 25/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:51 ` [PATCH 26/31] fuse: allow more statx fields Darrick J. Wong
2025-10-29 0:51 ` [PATCH 27/31] fuse: support atomic writes with iomap Darrick J. Wong
2025-10-29 0:52 ` [PATCH 28/31] fuse_trace: " Darrick J. Wong
2025-10-29 0:52 ` [PATCH 29/31] fuse: disable direct reclaim for any fuse server that uses iomap Darrick J. Wong
2026-02-05 18:57 ` Chris Mason
2026-02-06 4:25 ` Darrick J. Wong
2025-10-29 0:52 ` [PATCH 30/31] fuse: enable swapfile activation on iomap Darrick J. Wong
2025-10-29 0:53 ` [PATCH 31/31] fuse: implement freeze and shutdowns for iomap filesystems Darrick J. Wong
2025-11-19 9:19 ` [PATCHSET v6 4/8] fuse: allow servers to use iomap for better file IO performance Demi Marie Obenour
2025-11-19 9:41 ` Gao Xiang
2025-11-19 18:04 ` Darrick J. Wong
2025-11-19 21:00 ` Gao Xiang
2025-11-19 21:51 ` Gao Xiang
2025-11-20 1:13 ` Demi Marie Obenour
2025-11-20 1:10 ` Demi Marie Obenour
2025-11-20 1:49 ` Gao Xiang
2025-11-20 1:05 ` Demi Marie Obenour
2026-01-27 0:59 ` Joanne Koong
2026-01-27 2:22 ` Darrick J. Wong
2026-01-27 19:47 ` Joanne Koong
2026-01-27 23:21 ` Darrick J. Wong
2026-01-28 0:10 ` Joanne Koong
2026-01-28 0:34 ` Darrick J. Wong
2026-01-29 1:12 ` Joanne Koong
2026-01-29 20:02 ` Darrick J. Wong
2026-01-29 22:41 ` Darrick J. Wong
2026-01-29 22:50 ` Joanne Koong
2026-01-29 23:12 ` Darrick J. Wong
2025-10-29 0:38 ` [PATCHSET v6 5/8] fuse: allow servers to specify root node id Darrick J. Wong
2025-10-29 0:53 ` [PATCH 1/3] fuse: make the root nodeid dynamic Darrick J. Wong
2025-10-29 0:53 ` [PATCH 2/3] fuse_trace: " Darrick J. Wong
2025-10-29 0:53 ` [PATCH 3/3] fuse: allow setting of root nodeid Darrick J. Wong
2025-10-29 0:39 ` [PATCHSET v6 6/8] fuse: handle timestamps and ACLs correctly when iomap is enabled Darrick J. Wong
2025-10-29 0:54 ` [PATCH 1/9] fuse: enable caching of timestamps Darrick J. Wong
2025-10-29 0:54 ` [PATCH 2/9] fuse: force a ctime update after a fileattr_set call when in iomap mode Darrick J. Wong
2025-10-29 0:54 ` [PATCH 3/9] fuse: allow local filesystems to set some VFS iflags Darrick J. Wong
2025-10-29 0:54 ` [PATCH 4/9] fuse_trace: " Darrick J. Wong
2025-10-29 0:55 ` [PATCH 5/9] fuse: cache atime when in iomap mode Darrick J. Wong
2025-10-29 0:55 ` [PATCH 6/9] fuse: let the kernel handle KILL_SUID/KILL_SGID for iomap filesystems Darrick J. Wong
2025-10-29 0:55 ` [PATCH 7/9] fuse_trace: " Darrick J. Wong
2025-10-29 0:55 ` [PATCH 8/9] fuse: update ctime when updating acls on an iomap inode Darrick J. Wong
2025-10-29 0:56 ` [PATCH 9/9] fuse: always cache ACLs when using iomap Darrick J. Wong
2025-10-29 0:39 ` [PATCHSET v6 7/8] fuse: cache iomap mappings for even better file IO performance Darrick J. Wong
2025-10-29 0:56 ` [PATCH 01/10] fuse: cache iomaps Darrick J. Wong
2025-10-29 0:56 ` [PATCH 02/10] fuse_trace: " Darrick J. Wong
2025-10-29 0:56 ` [PATCH 03/10] fuse: use the iomap cache for iomap_begin Darrick J. Wong
2026-02-05 18:52 ` Chris Mason
2026-02-06 4:28 ` Darrick J. Wong
2025-10-29 0:57 ` [PATCH 04/10] fuse_trace: " Darrick J. Wong
2025-10-29 0:57 ` [PATCH 05/10] fuse: invalidate iomap cache after file updates Darrick J. Wong
2026-02-05 18:44 ` Chris Mason
2026-02-06 4:38 ` Darrick J. Wong
2025-10-29 0:57 ` [PATCH 06/10] fuse_trace: " Darrick J. Wong
2025-10-29 0:58 ` [PATCH 07/10] fuse: enable iomap cache management Darrick J. Wong
2026-02-05 18:33 ` Chris Mason
2026-02-06 4:42 ` Darrick J. Wong
2025-10-29 0:58 ` [PATCH 08/10] fuse_trace: " Darrick J. Wong
2025-10-29 0:58 ` [PATCH 09/10] fuse: overlay iomap inode info in struct fuse_inode Darrick J. Wong
2025-10-29 0:58 ` [PATCH 10/10] fuse: enable iomap Darrick J. Wong
2025-10-29 0:39 ` [PATCHSET v6 8/8] fuse: run fuse servers as a contained service Darrick J. Wong
2025-10-29 0:59 ` [PATCH 1/2] fuse: allow privileged mount helpers to pre-approve iomap usage Darrick J. Wong
2025-10-29 0:59 ` [PATCH 2/2] fuse: set iomap backing device block size Darrick J. Wong
2025-10-29 0:40 ` [PATCHSET v6 1/5] libfuse: allow servers to use iomap for better file IO performance Darrick J. Wong
2025-10-29 0:59 ` [PATCH 01/22] libfuse: bump kernel and library ABI versions Darrick J. Wong
2025-10-29 0:59 ` [PATCH 02/22] libfuse: add kernel gates for FUSE_IOMAP Darrick J. Wong
2025-10-29 1:00 ` [PATCH 03/22] libfuse: add fuse commands for iomap_begin and end Darrick J. Wong
2025-10-29 1:00 ` [PATCH 04/22] libfuse: add upper level iomap commands Darrick J. Wong
2025-10-29 1:00 ` [PATCH 05/22] libfuse: add a lowlevel notification to add a new device to iomap Darrick J. Wong
2025-10-29 1:00 ` [PATCH 06/22] libfuse: add upper-level iomap add device function Darrick J. Wong
2025-10-29 1:01 ` [PATCH 07/22] libfuse: add iomap ioend low level handler Darrick J. Wong
2025-10-29 1:01 ` [PATCH 08/22] libfuse: add upper level iomap ioend commands Darrick J. Wong
2025-10-29 1:01 ` [PATCH 09/22] libfuse: add a reply function to send FUSE_ATTR_* to the kernel Darrick J. Wong
2025-10-29 1:01 ` [PATCH 10/22] libfuse: connect high level fuse library to fuse_reply_attr_iflags Darrick J. Wong
2025-10-29 1:02 ` [PATCH 11/22] libfuse: support direct I/O through iomap Darrick J. Wong
2025-10-29 1:02 ` [PATCH 12/22] libfuse: don't allow hardlinking of iomap files in the upper level fuse library Darrick J. Wong
2025-10-29 1:02 ` [PATCH 13/22] libfuse: allow discovery of the kernel's iomap capabilities Darrick J. Wong
2025-10-29 1:02 ` [PATCH 14/22] libfuse: add lower level iomap_config implementation Darrick J. Wong
2025-10-29 1:03 ` [PATCH 15/22] libfuse: add upper " Darrick J. Wong
2025-10-29 1:03 ` [PATCH 16/22] libfuse: add low level code to invalidate iomap block device ranges Darrick J. Wong
2025-10-29 1:03 ` [PATCH 17/22] libfuse: add upper-level API to invalidate parts of an iomap block device Darrick J. Wong
2025-10-29 1:03 ` [PATCH 18/22] libfuse: add atomic write support Darrick J. Wong
2025-10-29 1:04 ` [PATCH 19/22] libfuse: create a helper to transform an open regular file into an open loopdev Darrick J. Wong
2025-10-29 1:04 ` [PATCH 20/22] libfuse: add swapfile support for iomap files Darrick J. Wong
2025-10-29 1:04 ` [PATCH 21/22] libfuse: add lower-level filesystem freeze, thaw, and shutdown requests Darrick J. Wong
2025-10-29 1:05 ` [PATCH 22/22] libfuse: add upper-level filesystem freeze, thaw, and shutdown events Darrick J. Wong
2025-10-29 0:40 ` [PATCHSET v6 2/5] libfuse: allow servers to specify root node id Darrick J. Wong
2025-10-29 1:05 ` [PATCH 1/1] libfuse: allow root_nodeid mount option Darrick J. Wong
2025-10-29 0:40 ` [PATCHSET v6 3/5] libfuse: implement syncfs Darrick J. Wong
2025-10-29 1:05 ` [PATCH 1/4] libfuse: add strictatime/lazytime mount options Darrick J. Wong
2025-10-29 1:05 ` [PATCH 2/4] libfuse: set sync, immutable, and append when loading files Darrick J. Wong
2025-10-29 1:06 ` [PATCH 3/4] libfuse: wire up FUSE_SYNCFS to the low level library Darrick J. Wong
2025-10-29 1:06 ` [PATCH 4/4] libfuse: add syncfs support to the upper library Darrick J. Wong
2025-10-29 0:40 ` [PATCHSET v6 4/5] libfuse: cache iomap mappings for even better file IO performance Darrick J. Wong
2025-10-29 1:06 ` [PATCH 1/3] libfuse: enable iomap cache management for lowlevel fuse Darrick J. Wong
2025-10-29 1:06 ` [PATCH 2/3] libfuse: add upper-level iomap cache management Darrick J. Wong
2025-10-29 1:07 ` [PATCH 3/3] libfuse: enable iomap Darrick J. Wong
2025-10-29 0:41 ` [PATCHSET v6 5/5] libfuse: run fuse servers as a contained service Darrick J. Wong
2025-10-29 1:07 ` [PATCH 1/5] libfuse: add systemd/inetd socket service mounting helper Darrick J. Wong
2025-10-29 1:07 ` [PATCH 2/5] libfuse: integrate fuse services into mount.fuse3 Darrick J. Wong
2025-10-29 1:07 ` [PATCH 3/5] libfuse: delegate iomap privilege from mount.service to fuse services Darrick J. Wong
2025-10-29 1:08 ` [PATCH 4/5] libfuse: enable setting iomap block device block size Darrick J. Wong
2025-10-29 1:08 ` [PATCH 5/5] fuservicemount: create loop devices for regular files Darrick J. Wong
2025-10-29 0:41 ` [PATCHSET v6 1/6] fuse2fs: use fuse iomap data paths for better file I/O performance Darrick J. Wong
2025-10-29 1:08 ` [PATCH 01/17] fuse2fs: implement bare minimum iomap for file mapping reporting Darrick J. Wong
2025-10-29 1:08 ` [PATCH 02/17] fuse2fs: add iomap= mount option Darrick J. Wong
2025-10-29 1:09 ` [PATCH 03/17] fuse2fs: implement iomap configuration Darrick J. Wong
2025-10-29 1:09 ` [PATCH 04/17] fuse2fs: register block devices for use with iomap Darrick J. Wong
2025-10-29 1:09 ` [PATCH 05/17] fuse2fs: implement directio file reads Darrick J. Wong
2025-10-29 1:09 ` [PATCH 06/17] fuse2fs: add extent dump function for debugging Darrick J. Wong
2025-10-29 1:10 ` [PATCH 07/17] fuse2fs: implement direct write support Darrick J. Wong
2025-10-29 1:10 ` [PATCH 08/17] fuse2fs: turn on iomap for pagecache IO Darrick J. Wong
2025-10-29 1:10 ` [PATCH 09/17] fuse2fs: don't zero bytes in punch hole Darrick J. Wong
2025-10-29 1:11 ` [PATCH 10/17] fuse2fs: don't do file data block IO when iomap is enabled Darrick J. Wong
2025-10-29 1:11 ` [PATCH 11/17] fuse2fs: try to create loop device when ext4 device is a regular file Darrick J. Wong
2025-10-29 1:11 ` [PATCH 12/17] fuse2fs: enable file IO to inline data files Darrick J. Wong
2025-10-29 1:11 ` [PATCH 13/17] fuse2fs: set iomap-related inode flags Darrick J. Wong
2025-10-29 1:12 ` [PATCH 14/17] fuse2fs: configure block device block size Darrick J. Wong
2025-10-29 1:12 ` [PATCH 15/17] fuse4fs: separate invalidation Darrick J. Wong
2025-10-29 1:12 ` [PATCH 16/17] fuse2fs: implement statx Darrick J. Wong
2025-10-29 1:12 ` [PATCH 17/17] fuse2fs: enable atomic writes Darrick J. Wong
2025-10-29 0:41 ` [PATCHSET v6 2/6] fuse4fs: specify the root node id Darrick J. Wong
2025-10-29 1:13 ` [PATCH 1/2] fuse2fs: implement freeze and shutdown requests Darrick J. Wong
2025-10-29 1:13 ` [PATCH 2/2] fuse4fs: don't use inode number translation when possible Darrick J. Wong
2025-10-29 0:41 ` [PATCHSET v6 3/6] fuse2fs: handle timestamps and ACLs correctly when iomap is enabled Darrick J. Wong
2025-10-29 1:13 ` [PATCH 01/11] fuse2fs: add strictatime/lazytime mount options Darrick J. Wong
2025-10-29 1:13 ` [PATCH 02/11] fuse2fs: skip permission checking on utimens when iomap is enabled Darrick J. Wong
2025-10-29 1:14 ` [PATCH 03/11] fuse2fs: let the kernel tell us about acl/mode updates Darrick J. Wong
2025-10-29 1:14 ` [PATCH 04/11] fuse2fs: better debugging for file mode updates Darrick J. Wong
2025-10-29 1:14 ` [PATCH 05/11] fuse2fs: debug timestamp updates Darrick J. Wong
2025-10-29 1:14 ` [PATCH 06/11] fuse2fs: use coarse timestamps for iomap mode Darrick J. Wong
2025-10-29 1:15 ` [PATCH 07/11] fuse2fs: add tracing for retrieving timestamps Darrick J. Wong
2025-10-29 1:15 ` [PATCH 08/11] fuse2fs: enable syncfs Darrick J. Wong
2025-10-29 1:15 ` [PATCH 09/11] fuse2fs: skip the gdt write in op_destroy if syncfs is working Darrick J. Wong
2025-10-29 1:15 ` [PATCH 10/11] fuse2fs: set sync, immutable, and append at file load time Darrick J. Wong
2025-10-29 1:16 ` [PATCH 11/11] fuse4fs: increase attribute timeout in iomap mode Darrick J. Wong
2025-10-29 0:42 ` [PATCHSET v6 4/6] fuse2fs: cache iomap mappings for even better file IO performance Darrick J. Wong
2025-10-29 1:16 ` [PATCH 1/3] fuse2fs: enable caching of iomaps Darrick J. Wong
2025-10-29 1:16 ` [PATCH 2/3] fuse2fs: be smarter about caching iomaps Darrick J. Wong
2025-10-29 1:17 ` [PATCH 3/3] fuse2fs: enable iomap Darrick J. Wong
2025-10-29 0:42 ` [PATCHSET v6 5/6] fuse2fs: improve block and inode caching Darrick J. Wong
2025-10-29 1:17 ` [PATCH 1/6] libsupport: add caching IO manager Darrick J. Wong
2025-10-29 1:17 ` [PATCH 2/6] iocache: add the actual buffer cache Darrick J. Wong
2025-10-29 1:17 ` [PATCH 3/6] iocache: bump buffer mru priority every 50 accesses Darrick J. Wong
2025-10-29 1:18 ` [PATCH 4/6] fuse2fs: enable caching IO manager Darrick J. Wong
2025-10-29 1:18 ` [PATCH 5/6] fuse2fs: increase inode cache size Darrick J. Wong
2025-10-29 1:18 ` [PATCH 6/6] libext2fs: improve caching for inodes Darrick J. Wong
2025-10-29 0:42 ` [PATCHSET v6 6/6] fuse4fs: run servers as a contained service Darrick J. Wong
2025-10-29 1:18 ` [PATCH 1/7] libext2fs: fix MMP code to work with unixfd IO manager Darrick J. Wong
2025-10-29 1:19 ` [PATCH 2/7] fuse4fs: enable safe service mode Darrick J. Wong
2025-10-29 1:19 ` [PATCH 3/7] fuse4fs: set proc title when in fuse " Darrick J. Wong
2025-10-29 1:19 ` [PATCH 4/7] fuse4fs: set iomap backing device blocksize Darrick J. Wong
2025-10-29 1:19 ` [PATCH 5/7] fuse4fs: ask for loop devices when opening via fuservicemount Darrick J. Wong
2025-10-29 1:20 ` [PATCH 6/7] fuse4fs: make MMP work correctly in safe service mode Darrick J. Wong
2025-10-29 1:20 ` [PATCH 7/7] debian: update packaging for fuse4fs service Darrick J. Wong
2025-10-29 0:42 ` [PATCHSET v6] fstests: support ext4 fuse testing Darrick J. Wong
2025-10-29 1:20 ` [PATCH 01/33] misc: adapt tests to handle the fuse ext[234] drivers Darrick J. Wong
2025-10-30 9:51 ` Amir Goldstein
2025-11-05 22:53 ` Darrick J. Wong
2025-11-06 8:58 ` Amir Goldstein
2025-11-06 23:12 ` Darrick J. Wong
2025-11-07 7:50 ` Amir Goldstein
2025-11-07 7:08 ` Zorro Lang
2025-10-29 1:20 ` [PATCH 02/33] generic/740: don't run this test for fuse ext* implementations Darrick J. Wong
2025-10-30 9:59 ` Amir Goldstein
2025-11-05 22:56 ` Darrick J. Wong
2025-11-06 9:02 ` Amir Goldstein
2025-10-29 1:21 ` [PATCH 03/33] ext/052: use popdir.pl for much faster directory creation Darrick J. Wong
2025-10-29 1:21 ` [PATCH 04/33] common/rc: skip test if swapon doesn't work Darrick J. Wong
2025-11-12 6:35 ` Baokun Li
2025-11-12 18:26 ` Darrick J. Wong
2025-11-12 20:05 ` Theodore Ts'o
2025-11-12 22:29 ` [PATCH v6.1 " Darrick J. Wong
2025-11-13 1:51 ` Baokun Li
2025-11-13 15:52 ` Theodore Ts'o
2025-10-29 1:21 ` [PATCH 05/33] common/rc: streamline _scratch_remount Darrick J. Wong
2025-10-29 1:21 ` [PATCH 06/33] ext/039: require metadata journalling Darrick J. Wong
2025-10-29 1:22 ` [PATCH 07/33] populate: don't check for htree directories on fuse.ext4 Darrick J. Wong
2025-10-29 1:22 ` [PATCH 08/33] misc: convert _scratch_mount -o remount to _scratch_remount Darrick J. Wong
2025-10-29 1:22 ` [PATCH 09/33] misc: use explicitly $FSTYP'd mount calls Darrick J. Wong
2025-10-29 1:23 ` [PATCH 10/33] common/ext4: explicitly format with $FSTYP Darrick J. Wong
2025-10-29 1:23 ` [PATCH 11/33] tests/ext*: refactor open-coded _scratch_mkfs_sized calls Darrick J. Wong
2025-10-29 1:23 ` [PATCH 12/33] generic/732: disable for fuse.ext4 Darrick J. Wong
2025-10-29 1:23 ` [PATCH 13/33] defrag: fix ext4 defrag ioctl test Darrick J. Wong
2025-10-29 1:24 ` [PATCH 14/33] misc: explicitly require online resize support Darrick J. Wong
2025-10-29 1:24 ` [PATCH 15/33] ext4/004: disable for fuse2fs Darrick J. Wong
2025-10-29 1:24 ` [PATCH 16/33] generic/679: " Darrick J. Wong
2025-10-29 1:24 ` [PATCH 17/33] ext4/045: don't run the long dirent test on fuse2fs Darrick J. Wong
2025-10-29 1:25 ` [PATCH 18/33] generic/338: skip test if we can't mount with strictatime Darrick J. Wong
2025-10-29 1:25 ` [PATCH 19/33] generic/563: fuse doesn't support cgroup-aware writeback accounting Darrick J. Wong
2025-10-29 1:25 ` [PATCH 20/33] misc: use a larger buffer size for pwrites Darrick J. Wong
2025-10-29 1:25 ` [PATCH 21/33] ext4/046: don't run this test if dioread_nolock not supported Darrick J. Wong
2025-10-29 1:26 ` [PATCH 22/33] generic/631: don't run test if we can't mount overlayfs Darrick J. Wong
2025-10-30 11:35 ` Amir Goldstein
2025-11-05 23:12 ` Darrick J. Wong
2025-11-06 9:23 ` Amir Goldstein
2025-11-06 16:02 ` Darrick J. Wong
2025-10-29 1:26 ` [PATCH 23/33] generic/{409,410,411,589}: check for stacking mount support Darrick J. Wong
2025-10-30 10:25 ` Amir Goldstein
2025-11-05 22:58 ` Darrick J. Wong
2025-10-29 1:26 ` [PATCH 24/33] generic: add _require_hardlinks to tests that require hardlinks Darrick J. Wong
2025-10-29 1:26 ` [PATCH 25/33] ext4/001: check for fiemap support Darrick J. Wong
2025-10-29 1:27 ` [PATCH 26/33] generic/622: check that strictatime/lazytime actually work Darrick J. Wong
2025-10-29 1:27 ` [PATCH 27/33] generic/050: skip test because fuse2fs doesn't have stable output Darrick J. Wong
2025-10-30 10:05 ` Amir Goldstein
2025-11-05 23:02 ` Darrick J. Wong
2025-10-29 1:27 ` [PATCH 28/33] generic/405: don't stall on mkfs asking for input Darrick J. Wong
2025-10-29 1:27 ` [PATCH 29/33] ext4/006: fix this test Darrick J. Wong
2025-10-29 1:28 ` [PATCH 30/33] ext4/009: fix ENOSPC errors Darrick J. Wong
2025-10-29 1:28 ` [PATCH 31/33] ext4/022: enabl Darrick J. Wong
2025-10-29 6:03 ` Darrick J. Wong
2025-10-29 1:28 ` [PATCH 32/33] generic/730: adapt test for fuse filesystems Darrick J. Wong
2025-10-29 1:29 ` [PATCH 33/33] fuse2fs: hack around weird corruption problems Darrick J. Wong
2025-10-29 9:35 ` [PATCHSET v6] fstests: support ext4 fuse testing Christoph Hellwig
2025-10-29 23:52 ` Darrick J. Wong
2025-10-30 16:35 ` [PATCHBOMB v6] fuse: containerize ext4 for safer operation Joanne Koong
2025-10-31 17:56 ` 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=20260122222233.GA5900@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=bernd@bsbernd.com \
--cc=joannelkoong@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.