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: <CAGsJ_4yQMN+j2UMWO3ycRqiwh16sOQoSQSMatNg667Qzr=QmPQ@mail.gmail.com>
Date: Tue, 20 Aug 2024 21:29:42 +1200
From: Barry Song <21cnbao@...il.com>
To: Gao Xiang <hsiangkao@...ux.alibaba.com>
Cc: linux-erofs@...ts.ozlabs.org, Chao Yu <chao@...nel.org>, 
	LKML <linux-kernel@...r.kernel.org>, Matthew Wilcox <willy@...radead.org>
Subject: Re: [PATCH] erofs: allow large folios for compressed files

On Mon, Aug 19, 2024 at 2:52 PM Gao Xiang <hsiangkao@...ux.alibaba.com> wrote:
>
> As commit 2e6506e1c4ee ("mm/migrate: fix deadlock in
> migrate_pages_batch() on large folios") already landed upstream,
> large folios can be safely enabled for compressed inodes since all
> prerequisites already landed in 6.11-rc1.
>
> Stress tests has been working on my fleet for > 20 days without any
> regression.  Besides, users [1] has requested it for months.  Let's
> allow large folios for EROFS full cases upstream now for wider testing.
>
> [1] https://lore.kernel.org/r/CAGsJ_4wtE8OcpinuqVwG4jtdx6Qh5f+TON6wz+4HMCq=A2qFcA@mail.gmail.com
> Cc: Barry Song <21cnbao@...il.com>
> Cc: Matthew Wilcox (Oracle) <willy@...radead.org>
> Signed-off-by: Gao Xiang <hsiangkao@...ux.alibaba.com>

Thank you, Xiang! We'll run some tests and update you with our findings.

> ---
>  Documentation/filesystems/erofs.rst |  2 +-
>  fs/erofs/inode.c                    | 18 ++++++++----------
>  2 files changed, 9 insertions(+), 11 deletions(-)
>
> diff --git a/Documentation/filesystems/erofs.rst b/Documentation/filesystems/erofs.rst
> index cc4626d6ee4f..c293f8e37468 100644
> --- a/Documentation/filesystems/erofs.rst
> +++ b/Documentation/filesystems/erofs.rst
> @@ -75,7 +75,7 @@ Here are the main features of EROFS:
>
>   - Support merging tail-end data into a special inode as fragments.
>
> - - Support large folios for uncompressed files.
> + - Support large folios to make use of THPs (Transparent Hugepages);
>
>   - Support direct I/O on uncompressed files to avoid double caching for loop
>     devices;
> diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c
> index 43c09aae2afc..419432be3223 100644
> --- a/fs/erofs/inode.c
> +++ b/fs/erofs/inode.c
> @@ -257,25 +257,23 @@ static int erofs_fill_inode(struct inode *inode)
>                 goto out_unlock;
>         }
>
> +       mapping_set_large_folios(inode->i_mapping);
>         if (erofs_inode_is_data_compressed(vi->datalayout)) {
>  #ifdef CONFIG_EROFS_FS_ZIP
>                 DO_ONCE_LITE_IF(inode->i_blkbits != PAGE_SHIFT,
>                           erofs_info, inode->i_sb,
>                           "EXPERIMENTAL EROFS subpage compressed block support in use. Use at your own risk!");
>                 inode->i_mapping->a_ops = &z_erofs_aops;
> -               err = 0;
> -               goto out_unlock;
> -#endif
> +#else
>                 err = -EOPNOTSUPP;
> -               goto out_unlock;
> -       }
> -       inode->i_mapping->a_ops = &erofs_raw_access_aops;
> -       mapping_set_large_folios(inode->i_mapping);
> +#endif
> +       } else {
> +               inode->i_mapping->a_ops = &erofs_raw_access_aops;
>  #ifdef CONFIG_EROFS_FS_ONDEMAND
> -       if (erofs_is_fscache_mode(inode->i_sb))
> -               inode->i_mapping->a_ops = &erofs_fscache_access_aops;
> +               if (erofs_is_fscache_mode(inode->i_sb))
> +                       inode->i_mapping->a_ops = &erofs_fscache_access_aops;
>  #endif
> -
> +       }
>  out_unlock:
>         erofs_put_metabuf(&buf);
>         return err;
> --
> 2.43.5
>

Thanks
Barry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ