As part of the linux kernel's migration to folio-based APIs, introduce fscrypt_finalize_bounce_folio() as the folio equivalent of fscrypt_finalize_bounce_page(), and clean up f2fs codes with this new helper.
Suggested-by: Matthew Wilcox <[email protected]> Cc: Eric Biggers <[email protected]> Signed-off-by: Chao Yu <[email protected]> --- Is it worth to introduce fscrypt_finalize_bounce_folio(), then try to do clean in f2fs_write_end_bio() first, and then replace fscrypt_finalize_bounce_page() later? fs/f2fs/data.c | 7 +------ include/linux/fscrypt.h | 11 +++++++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index ac1cf4de3d62..e0fca6c60e34 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -362,12 +362,7 @@ static void f2fs_write_end_bio(struct bio *bio) struct folio *folio = fi.folio; enum count_type type; - if (fscrypt_is_bounce_folio(folio)) { - struct folio *io_folio = folio; - - folio = fscrypt_pagecache_folio(io_folio); - fscrypt_free_bounce_page(&io_folio->page); - } + fscrypt_finalize_bounce_folio(&folio); #ifdef CONFIG_F2FS_FS_COMPRESSION if (f2fs_is_compressed_page(folio)) { diff --git a/include/linux/fscrypt.h b/include/linux/fscrypt.h index 54712ec61ffb..20b59b021c94 100644 --- a/include/linux/fscrypt.h +++ b/include/linux/fscrypt.h @@ -1132,4 +1132,15 @@ static inline void fscrypt_finalize_bounce_page(struct page **pagep) } } +/* If *foliop is a bounce folio, free it and set *foliop to the pagecache folio */ +static inline void fscrypt_finalize_bounce_folio(struct folio **foliop) +{ + struct folio *folio = *foliop; + + if (fscrypt_is_bounce_folio(folio)) { + *foliop = fscrypt_pagecache_folio(folio); + fscrypt_free_bounce_page(&folio->page); + } +} + #endif /* _LINUX_FSCRYPT_H */ -- 2.49.0

