lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAJnrk1ZDz5pQUtyiphuqtyAJtpx23x1BcdPUDBRJRfJaguzrhQ@mail.gmail.com>
Date: Mon, 26 Jan 2026 14:03:35 -0800
From: Joanne Koong <joannelkoong@...il.com>
To: "Darrick J. Wong" <djwong@...nel.org>
Cc: miklos@...redi.hu, bernd@...ernd.com, neal@...pa.dev, 
	linux-ext4@...r.kernel.org, linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH 17/31] fuse: use an unrestricted backing device with iomap
 pagecache io

On Tue, Oct 28, 2025 at 5:49 PM Darrick J. Wong <djwong@...nel.org> wrote:
>
> From: Darrick J. Wong <djwong@...nel.org>
>
> With iomap support turned on for the pagecache, the kernel issues
> writeback to directly to block devices and we no longer have to push all
> those pages through the fuse device to userspace.  Therefore, we don't
> need the tight dirty limits (~1M) that are used for regular fuse.  This
> dramatically increases the performance of fuse's pagecache IO.
>
> Signed-off-by: "Darrick J. Wong" <djwong@...nel.org>
> ---
>  fs/fuse/file_iomap.c |   21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
>
> diff --git a/fs/fuse/file_iomap.c b/fs/fuse/file_iomap.c
> index 0bae356045638b..a9bacaa0991afa 100644
> --- a/fs/fuse/file_iomap.c
> +++ b/fs/fuse/file_iomap.c
> @@ -713,6 +713,27 @@ const struct fuse_backing_ops fuse_iomap_backing_ops = {
>  void fuse_iomap_mount(struct fuse_mount *fm)
>  {
>         struct fuse_conn *fc = fm->fc;
> +       struct super_block *sb = fm->sb;
> +       struct backing_dev_info *old_bdi = sb->s_bdi;
> +       char *suffix = sb->s_bdev ? "-fuseblk" : "-fuse";
> +       int res;
> +
> +       /*
> +        * sb->s_bdi points to the initial private bdi.  However, we want to
> +        * redirect it to a new private bdi with default dirty and readahead
> +        * settings because iomap writeback won't be pushing a ton of dirty
> +        * data through the fuse device.  If this fails we fall back to the
> +        * initial fuse bdi.
> +        */
> +       sb->s_bdi = &noop_backing_dev_info;
> +       res = super_setup_bdi_name(sb, "%u:%u%s.iomap", MAJOR(fc->dev),
> +                                  MINOR(fc->dev), suffix);
> +       if (res) {
> +               sb->s_bdi = old_bdi;
> +       } else {
> +               bdi_unregister(old_bdi);
> +               bdi_put(old_bdi);
> +       }

Maybe I'm missing something here, but isn't sb->s_bdi already set to
noop_backing_dev_info when fuse_iomap_mount() is called?
fuse_fill_super() -> fuse_fill_super_common() -> fuse_bdi_init() does
this already before the fuse_iomap_mount() call, afaict. I think what
we need to do is just unset BDI_CAP_STRICTLIMIT and adjust the bdi max
ratio? This is more of a nit, but I think it'd also be nice if we
swapped the ordering of this patch with the previous one enabling
large folios, so that large folios gets enabled only when all the bdi
stuff for it is ready.

Thanks,
Joanne

>
>         /*
>          * Enable syncfs for iomap fuse servers so that we can send a final
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ