From: Yongpeng Yang <yangyongpeng.storage@gmail.com>
To: Chao Yu <chao@kernel.org>,
Yongpeng Yang <yangyongpeng.storage@gmail.com>,
Jaegeuk Kim <jaegeuk@kernel.org>
Cc: Yongpeng Yang <yangyongpeng@xiaomi.com>,
linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH] f2fs: change the unlock parameter of f2fs_put_page to bool
Date: Mon, 27 Oct 2025 20:52:01 +0800 [thread overview]
Message-ID: <5dd3e347-00e9-4353-a62b-d851d84231be@gmail.com> (raw)
In-Reply-To: <2170f364-b48a-47ef-a8b8-f6e72027999a@kernel.org>
On 10/27/25 16:20, Chao Yu via Linux-f2fs-devel wrote:
> On 10/24/25 21:13, Yongpeng Yang wrote:
>> From: Yongpeng Yang <yangyongpeng@xiaomi.com>
>>
>> Change the type of the unlock parameter of f2fs_put_page to bool.
>> All callers should consistently pass true or false. No logical change.
>>
>> Signed-off-by: Yongpeng Yang <yangyongpeng@xiaomi.com>
>> ---
>> fs/f2fs/compress.c | 8 ++++----
>> fs/f2fs/data.c | 12 ++++--------
>> fs/f2fs/f2fs.h | 2 +-
>> fs/f2fs/gc.c | 6 +++---
>> fs/f2fs/inline.c | 4 ++--
>> fs/f2fs/namei.c | 4 ++--
>> 6 files changed, 16 insertions(+), 20 deletions(-)
>>
>> diff --git a/fs/f2fs/compress.c b/fs/f2fs/compress.c
>> index 811bfe38e5c0..716004ba44dc 100644
>> --- a/fs/f2fs/compress.c
>> +++ b/fs/f2fs/compress.c
>> @@ -120,7 +120,7 @@ static void f2fs_unlock_rpages(struct compress_ctx *cc, int len)
>> }
>>
>> static void f2fs_put_rpages_wbc(struct compress_ctx *cc,
>> - struct writeback_control *wbc, bool redirty, int unlock)
>> + struct writeback_control *wbc, bool redirty, bool unlock)
>> {
>> unsigned int i;
>>
>> @@ -1202,7 +1202,7 @@ bool f2fs_compress_write_end(struct inode *inode, void *fsdata,
>> if (copied)
>> set_cluster_dirty(&cc);
>>
>> - f2fs_put_rpages_wbc(&cc, NULL, false, 1);
>> + f2fs_put_rpages_wbc(&cc, NULL, false, true);
>> f2fs_destroy_compress_ctx(&cc, false);
>>
>> return first_index;
>> @@ -1605,7 +1605,7 @@ int f2fs_write_multi_pages(struct compress_ctx *cc,
>> add_compr_block_stat(cc->inode, cc->cluster_size);
>> goto write;
>> } else if (err) {
>> - f2fs_put_rpages_wbc(cc, wbc, true, 1);
>> + f2fs_put_rpages_wbc(cc, wbc, true, true);
>> goto destroy_out;
>> }
>>
>> @@ -1619,7 +1619,7 @@ int f2fs_write_multi_pages(struct compress_ctx *cc,
>> f2fs_bug_on(F2FS_I_SB(cc->inode), *submitted);
>>
>> err = f2fs_write_raw_pages(cc, submitted, wbc, io_type);
>> - f2fs_put_rpages_wbc(cc, wbc, false, 0);
>> + f2fs_put_rpages_wbc(cc, wbc, false, false);
>> destroy_out:
>> f2fs_destroy_compress_ctx(cc, false);
>> return err;
>> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
>> index 1f090c018f1b..daca2a42b20c 100644
>> --- a/fs/f2fs/data.c
>> +++ b/fs/f2fs/data.c
>> @@ -3621,8 +3621,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>> folio_lock(folio);
>> if (folio->mapping != mapping) {
>> /* The folio got truncated from under us */
>> - folio_unlock(folio);
>> - folio_put(folio);
>> + f2fs_folio_put(folio, true);
>
> Yongpeng,
>
> I prefer to not use f2fs_folio_put() here, to avoid potential null-ptr dereference
> on folio->mapping via f2fs_folio_put() -> F2FS_F_SB(), as folio->mapping could be
> NULL due to race w/ truncation.
>
Thanks for pointing it out. I’ll fix this in v2. ^_^
Yongpeng
>> goto repeat;
>> }
>> }
>> @@ -3653,8 +3652,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>>
>> folio_lock(folio);
>> if (unlikely(folio->mapping != mapping)) {
>> - folio_unlock(folio);
>> - folio_put(folio);
>> + f2fs_folio_put(folio, true);
>
> Ditto,
>
> Thanks,
>
>> goto repeat;
>> }
>> if (unlikely(!folio_test_uptodate(folio))) {
>> @@ -3665,8 +3663,7 @@ static int f2fs_write_begin(const struct kiocb *iocb,
>> return 0;
>>
>> put_folio:
>> - folio_unlock(folio);
>> - folio_put(folio);
>> + f2fs_folio_put(folio, true);
>> fail:
>> f2fs_write_failed(inode, pos + len);
>> return err;
>> @@ -3722,8 +3719,7 @@ static int f2fs_write_end(const struct kiocb *iocb,
>> pos + copied);
>> }
>> unlock_out:
>> - folio_unlock(folio);
>> - folio_put(folio);
>> + f2fs_folio_put(folio, true);
>> f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
>> return copied;
>> }
>> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
>> index 94eb9a2d3a73..32fb2e7338b7 100644
>> --- a/fs/f2fs/f2fs.h
>> +++ b/fs/f2fs/f2fs.h
>> @@ -2979,7 +2979,7 @@ static inline void f2fs_folio_put(struct folio *folio, bool unlock)
>> folio_put(folio);
>> }
>>
>> -static inline void f2fs_put_page(struct page *page, int unlock)
>> +static inline void f2fs_put_page(struct page *page, bool unlock)
>> {
>> if (!page)
>> return;
>> diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
>> index 22fe6e2c6d5c..fd8bb0424bf3 100644
>> --- a/fs/f2fs/gc.c
>> +++ b/fs/f2fs/gc.c
>> @@ -1278,7 +1278,7 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
>> err = f2fs_submit_page_bio(&fio);
>> if (err)
>> goto put_encrypted_page;
>> - f2fs_put_page(fio.encrypted_page, 0);
>> + f2fs_put_page(fio.encrypted_page, false);
>> f2fs_folio_put(folio, true);
>>
>> f2fs_update_iostat(sbi, inode, FS_DATA_READ_IO, F2FS_BLKSIZE);
>> @@ -1286,7 +1286,7 @@ static int ra_data_block(struct inode *inode, pgoff_t index)
>>
>> return 0;
>> put_encrypted_page:
>> - f2fs_put_page(fio.encrypted_page, 1);
>> + f2fs_put_page(fio.encrypted_page, true);
>> put_folio:
>> f2fs_folio_put(folio, true);
>> return err;
>> @@ -1442,7 +1442,7 @@ static int move_data_block(struct inode *inode, block_t bidx,
>> f2fs_update_data_blkaddr(&dn, newaddr);
>> set_inode_flag(inode, FI_APPEND_WRITE);
>>
>> - f2fs_put_page(fio.encrypted_page, 1);
>> + f2fs_put_page(fio.encrypted_page, true);
>> recover_block:
>> if (err)
>> f2fs_do_replace_block(fio.sbi, &sum, newaddr, fio.old_blkaddr,
>> diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
>> index 58ac831ef704..e5c6a08b7e4f 100644
>> --- a/fs/f2fs/inline.c
>> +++ b/fs/f2fs/inline.c
>> @@ -287,7 +287,7 @@ int f2fs_write_inline_data(struct inode *inode, struct folio *folio)
>> set_inode_flag(inode, FI_DATA_EXIST);
>>
>> folio_clear_f2fs_inline(ifolio);
>> - f2fs_folio_put(ifolio, 1);
>> + f2fs_folio_put(ifolio, true);
>> return 0;
>> }
>>
>> @@ -577,7 +577,7 @@ static int f2fs_move_rehashed_dirents(struct inode *dir, struct folio *ifolio,
>> f2fs_i_depth_write(dir, 0);
>> f2fs_i_size_write(dir, MAX_INLINE_DATA(dir));
>> folio_mark_dirty(ifolio);
>> - f2fs_folio_put(ifolio, 1);
>> + f2fs_folio_put(ifolio, true);
>>
>> kfree(backup_dentry);
>> return err;
>> diff --git a/fs/f2fs/namei.c b/fs/f2fs/namei.c
>> index 68b33e8089b0..07ceed173ffe 100644
>> --- a/fs/f2fs/namei.c
>> +++ b/fs/f2fs/namei.c
>> @@ -1259,11 +1259,11 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
>> return 0;
>> out_new_dir:
>> if (new_dir_entry) {
>> - f2fs_folio_put(new_dir_folio, 0);
>> + f2fs_folio_put(new_dir_folio, false);
>> }
>> out_old_dir:
>> if (old_dir_entry) {
>> - f2fs_folio_put(old_dir_folio, 0);
>> + f2fs_folio_put(old_dir_folio, false);
>> }
>> out_new:
>> f2fs_folio_put(new_folio, false);
>
>
>
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
prev parent reply other threads:[~2025-10-27 12:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-24 13:13 [f2fs-dev] [PATCH] f2fs: change the unlock parameter of f2fs_put_page to bool Yongpeng Yang
2025-10-27 8:20 ` Chao Yu via Linux-f2fs-devel
2025-10-27 12:52 ` Yongpeng Yang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5dd3e347-00e9-4353-a62b-d851d84231be@gmail.com \
--to=yangyongpeng.storage@gmail.com \
--cc=chao@kernel.org \
--cc=jaegeuk@kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=yangyongpeng@xiaomi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).