[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y9P4MYXE9NcC8+gv@casper.infradead.org>
Date: Fri, 27 Jan 2023 16:13:37 +0000
From: Matthew Wilcox <willy@...radead.org>
To: Eric Biggers <ebiggers@...nel.org>
Cc: Theodore Tso <tytso@....edu>,
Andreas Dilger <adilger.kernel@...ger.ca>,
linux-ext4@...r.kernel.org, linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH 02/31] fscrypt: Add some folio helper functions
On Thu, Jan 26, 2023 at 07:02:14PM -0800, Eric Biggers wrote:
> On Thu, Jan 26, 2023 at 08:23:46PM +0000, Matthew Wilcox (Oracle) wrote:
> > fscrypt_is_bounce_folio() is the equivalent of fscrypt_is_bounce_page()
> > and fscrypt_pagecache_folio() is the equivalent of fscrypt_pagecache_page().
> >
> > Signed-off-by: Matthew Wilcox (Oracle) <willy@...radead.org>
> > ---
> > include/linux/fscrypt.h | 21 +++++++++++++++++++++
> > 1 file changed, 21 insertions(+)
> >
> > diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h
> > index 4f5f8a651213..c2c07d36fb3a 100644
> > --- a/include/linux/fscrypt.h
> > +++ b/include/linux/fscrypt.h
> > @@ -273,6 +273,16 @@ static inline struct page *fscrypt_pagecache_page(struct page *bounce_page)
> > return (struct page *)page_private(bounce_page);
> > }
> >
> > +static inline bool fscrypt_is_bounce_folio(struct folio *folio)
> > +{
> > + return folio->mapping == NULL;
> > +}
> > +
> > +static inline struct folio *fscrypt_pagecache_folio(struct folio *bounce_folio)
> > +{
> > + return bounce_folio->private;
> > +}
>
> ext4_bio_write_folio() is still doing:
>
> bounce_page = fscrypt_encrypt_pagecache_blocks(&folio->page, ...);
>
> Should it be creating a "bounce folio" instead, or is that not in the scope of
> this patchset?
It's out of scope for _this_ patchset. I think it's a patchset that
could come either before or after, and is needed to support large folios
with ext4. The biggest problem with doing that conversion is that
bounce pages are allocated from a mempool which obviously only allocates
order-0 folios. I don't know what to do about that. Have a mempool
for each order of folio that the filesystem supports? Try to allocate
folios without a mempool and then split the folio if allocation fails?
Have a mempool containing PMD-order pages and split them ourselves if
we need to allocate from the mempool?
Nothing's really standing out to me as the perfect answer. There are
probably other alternatives.
Powered by blists - more mailing lists