On 4/27/25 19:17, Chao Yu wrote:
> On 4/1/25 04:10, Matthew Wilcox (Oracle) wrote:
>> Remove a call to find_get_page().  Saves two hidden calls to
>> compound_head().  Change f2fs_folio_put() to check for IS_ERR_OR_NULL
>> to handle the case where we got an error pointer back from
>> filemap_get_folio().
>>
>> Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
>> ---
>>  fs/f2fs/checkpoint.c | 8 ++++----
>>  fs/f2fs/f2fs.h       | 2 +-
>>  2 files changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
>> index 1a5fbecd9356..30e68de82f73 100644
>> --- a/fs/f2fs/checkpoint.c
>> +++ b/fs/f2fs/checkpoint.c
>> @@ -325,16 +325,16 @@ int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, 
>> block_t start, int nrpages,
>>  void f2fs_ra_meta_pages_cond(struct f2fs_sb_info *sbi, pgoff_t index,
>>                                                      unsigned int ra_blocks)
>>  {
>> -    struct page *page;
>> +    struct folio *folio;
>>      bool readahead = false;
>>  
>>      if (ra_blocks == RECOVERY_MIN_RA_BLOCKS)
>>              return;
>>  
>> -    page = find_get_page(META_MAPPING(sbi), index);
>> -    if (!page || !PageUptodate(page))
>> +    folio = filemap_get_folio(META_MAPPING(sbi), index);
>> +    if (IS_ERR(folio) || !folio_test_uptodate(folio))
>>              readahead = true;
>> -    f2fs_put_page(page, 0);
>> +    f2fs_folio_put(folio, 0);
> 
> if (IS_ERR(folio))
>       folio = NULL;

Oh, I missed that f2fs_folio_put() can handle error and NULL folio,
please ignore this.

> 
> if (!folio || !folio_test_uptodate(folio))
>       readahead = true;
> 
> f2fs_folio_put(folio, false);

Only need to clean up the argument.

Thanks,

> 
> Thanks,
> 
>>  
>>      if (readahead)
>>              f2fs_ra_meta_pages(sbi, index, ra_blocks, META_POR, true);
>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>> index 3d2be01f9363..f05185ed1c75 100644
>> --- a/fs/f2fs/f2fs.h
>> +++ b/fs/f2fs/f2fs.h
>> @@ -2871,7 +2871,7 @@ static inline struct page *f2fs_pagecache_get_page(
>>  
>>  static inline void f2fs_folio_put(struct folio *folio, bool unlock)
>>  {
>> -    if (!folio)
>> +    if (IS_ERR_OR_NULL(folio))
>>              return;
>>  
>>      if (unlock) {
> 



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to