From: Chao Yu <chao@kernel.org>
To: Chaitanya Kulkarni <chaitanyak@nvidia.com>
Cc: chao@kernel.org,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"jaegeuk@kernel.org" <jaegeuk@kernel.org>,
"hch@lst.de" <hch@lst.de>, "song@kernel.org" <song@kernel.org>,
"axboe@kernel.dk" <axboe@kernel.dk>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"dm-devel@lists.linux.dev" <dm-devel@lists.linux.dev>,
"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"linux-nvme@lists.infradead.org" <linux-nvme@lists.infradead.org>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>,
"cem@kernel.org" <cem@kernel.org>,
"linux-xfs@vger.kernel.org" <linux-xfs@vger.kernel.org>,
"sagi@grimberg.me" <sagi@grimberg.me>,
"yukuai@fnnas.com" <yukuai@fnnas.com>,
"bpf@vger.kernel.org" <bpf@vger.kernel.org>,
"mpatocka@redhat.com" <mpatocka@redhat.com>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
"agk@redhat.com" <agk@redhat.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
Chaitanya Kulkarni <ckulkarnilinux@gmail.com>,
"snitzer@kernel.org" <snitzer@kernel.org>
Subject: Re: [PATCH V3 5/6] f2fs: ignore discard return value
Date: Wed, 26 Nov 2025 11:58:29 +0800 [thread overview]
Message-ID: <9079ffb8-3b66-415f-bb2a-4d3f79dc9cb4@kernel.org> (raw)
In-Reply-To: <820ffbc8-56cb-4f47-9112-2f4a79524025@nvidia.com>
On 11/26/25 11:37, Chaitanya Kulkarni wrote:
> On 11/25/25 18:47, Chao Yu wrote:
>> On 11/25/25 07:48, Chaitanya Kulkarni wrote:
>>> __blkdev_issue_discard() always returns 0, making the error assignment
>>> in __submit_discard_cmd() dead code.
>>>
>>> Initialize err to 0 and remove the error assignment from the
>>> __blkdev_issue_discard() call to err. Move fault injection code into
>>> already present if branch where err is set to -EIO.
>>>
>>> This preserves the fault injection behavior while removing dead error
>>> handling.
>>>
>>> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
>>> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
>>> Reviewed-by: Christoph Hellwig <hch@lst.de>
>>> Signed-off-by: Chaitanya Kulkarni <ckulkarnilinux@gmail.com>
>>> ---
>>> fs/f2fs/segment.c | 10 +++-------
>>> 1 file changed, 3 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>> index b45eace879d7..22b736ec9c51 100644
>>> --- a/fs/f2fs/segment.c
>>> +++ b/fs/f2fs/segment.c
>>> @@ -1343,15 +1343,9 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
>>>
>>> dc->di.len += len;
>>>
>>> + err = 0;
>>> if (time_to_inject(sbi, FAULT_DISCARD)) {
>>> err = -EIO;
>>> - } else {
>>> - err = __blkdev_issue_discard(bdev,
>>> - SECTOR_FROM_BLOCK(start),
>>> - SECTOR_FROM_BLOCK(len),
>>> - GFP_NOFS, &bio);
>>> - }
>>> - if (err) {
>>> spin_lock_irqsave(&dc->lock, flags);
>>> if (dc->state == D_PARTIAL)
>>> dc->state = D_SUBMIT;
>>> @@ -1360,6 +1354,8 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
>>> break;
>>> }
>>>
>>> + __blkdev_issue_discard(bdev, SECTOR_FROM_BLOCK(start),
>>> + SECTOR_FROM_BLOCK(len), GFP_NOFS, &bio);
>> Oh, wait, bio can be NULL? Then below f2fs_bug_on() will trigger panic or warning.
>>
>> Thanks,
>
> That will happen without this patch also or not ?
>
> Since __blkdev_issue_discard() is always returning 0 irrespective of bio
> is null or not.
>
> The following condition in original code will only execute when err is set to
> -EIO and that will only happen when time_to_inject() -> true.
> Original call to __blkdev_issue_discard() without this patch will always
> return 0 even for bio == NULL after __blkdev_issue_discard().
>
> This is what we are trying to fix so caller should not rely on
> __blkdev_issue_discard() return value :-
>
> 354 if (err) {
> 1355 spin_lock_irqsave(&dc->lock, flags);
> 1356 if (dc->state == D_PARTIAL)
> 1357 dc->state = D_SUBMIT;
> 1358 spin_unlock_irqrestore(&dc->lock, flags);
> 1359
> 1360 break;
> 1361 }
>
> which will lead f2fs_bug_on() for bio == NULL even without this patch.
>
> This patch is not changing exiting behavior, correct me if I'm wrong.
Yes, I think you're right, thanks for the explanation.
So it's fine to leave this cleanup patch as it is, and let's fix this bug in
a separated patch.
Thanks,
>
>
>>
>>> f2fs_bug_on(sbi, !bio);
>>>
>>> /*
>
> -ck
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Chao Yu via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Chaitanya Kulkarni <chaitanyak@nvidia.com>
Cc: "cem@kernel.org" <cem@kernel.org>,
"linux-nvme@lists.infradead.org" <linux-nvme@lists.infradead.org>,
"song@kernel.org" <song@kernel.org>, "hch@lst.de" <hch@lst.de>,
"agk@redhat.com" <agk@redhat.com>,
"sagi@grimberg.me" <sagi@grimberg.me>,
Chaitanya Kulkarni <ckulkarnilinux@gmail.com>,
"dm-devel@lists.linux.dev" <dm-devel@lists.linux.dev>,
"snitzer@kernel.org" <snitzer@kernel.org>,
"linux-raid@vger.kernel.org" <linux-raid@vger.kernel.org>,
"mpatocka@redhat.com" <mpatocka@redhat.com>,
"jaegeuk@kernel.org" <jaegeuk@kernel.org>,
"yukuai@fnnas.com" <yukuai@fnnas.com>,
"axboe@kernel.dk" <axboe@kernel.dk>,
"linux-block@vger.kernel.org" <linux-block@vger.kernel.org>,
"Martin K . Petersen" <martin.petersen@oracle.com>,
Johannes Thumshirn <johannes.thumshirn@wdc.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>,
"linux-xfs@vger.kernel.org" <linux-xfs@vger.kernel.org>,
"bpf@vger.kernel.org" <bpf@vger.kernel.org>
Subject: Re: [f2fs-dev] [PATCH V3 5/6] f2fs: ignore discard return value
Date: Wed, 26 Nov 2025 11:58:29 +0800 [thread overview]
Message-ID: <9079ffb8-3b66-415f-bb2a-4d3f79dc9cb4@kernel.org> (raw)
In-Reply-To: <820ffbc8-56cb-4f47-9112-2f4a79524025@nvidia.com>
On 11/26/25 11:37, Chaitanya Kulkarni wrote:
> On 11/25/25 18:47, Chao Yu wrote:
>> On 11/25/25 07:48, Chaitanya Kulkarni wrote:
>>> __blkdev_issue_discard() always returns 0, making the error assignment
>>> in __submit_discard_cmd() dead code.
>>>
>>> Initialize err to 0 and remove the error assignment from the
>>> __blkdev_issue_discard() call to err. Move fault injection code into
>>> already present if branch where err is set to -EIO.
>>>
>>> This preserves the fault injection behavior while removing dead error
>>> handling.
>>>
>>> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
>>> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
>>> Reviewed-by: Christoph Hellwig <hch@lst.de>
>>> Signed-off-by: Chaitanya Kulkarni <ckulkarnilinux@gmail.com>
>>> ---
>>> fs/f2fs/segment.c | 10 +++-------
>>> 1 file changed, 3 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>> index b45eace879d7..22b736ec9c51 100644
>>> --- a/fs/f2fs/segment.c
>>> +++ b/fs/f2fs/segment.c
>>> @@ -1343,15 +1343,9 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
>>>
>>> dc->di.len += len;
>>>
>>> + err = 0;
>>> if (time_to_inject(sbi, FAULT_DISCARD)) {
>>> err = -EIO;
>>> - } else {
>>> - err = __blkdev_issue_discard(bdev,
>>> - SECTOR_FROM_BLOCK(start),
>>> - SECTOR_FROM_BLOCK(len),
>>> - GFP_NOFS, &bio);
>>> - }
>>> - if (err) {
>>> spin_lock_irqsave(&dc->lock, flags);
>>> if (dc->state == D_PARTIAL)
>>> dc->state = D_SUBMIT;
>>> @@ -1360,6 +1354,8 @@ static int __submit_discard_cmd(struct f2fs_sb_info *sbi,
>>> break;
>>> }
>>>
>>> + __blkdev_issue_discard(bdev, SECTOR_FROM_BLOCK(start),
>>> + SECTOR_FROM_BLOCK(len), GFP_NOFS, &bio);
>> Oh, wait, bio can be NULL? Then below f2fs_bug_on() will trigger panic or warning.
>>
>> Thanks,
>
> That will happen without this patch also or not ?
>
> Since __blkdev_issue_discard() is always returning 0 irrespective of bio
> is null or not.
>
> The following condition in original code will only execute when err is set to
> -EIO and that will only happen when time_to_inject() -> true.
> Original call to __blkdev_issue_discard() without this patch will always
> return 0 even for bio == NULL after __blkdev_issue_discard().
>
> This is what we are trying to fix so caller should not rely on
> __blkdev_issue_discard() return value :-
>
> 354 if (err) {
> 1355 spin_lock_irqsave(&dc->lock, flags);
> 1356 if (dc->state == D_PARTIAL)
> 1357 dc->state = D_SUBMIT;
> 1358 spin_unlock_irqrestore(&dc->lock, flags);
> 1359
> 1360 break;
> 1361 }
>
> which will lead f2fs_bug_on() for bio == NULL even without this patch.
>
> This patch is not changing exiting behavior, correct me if I'm wrong.
Yes, I think you're right, thanks for the explanation.
So it's fine to leave this cleanup patch as it is, and let's fix this bug in
a separated patch.
Thanks,
>
>
>>
>>> f2fs_bug_on(sbi, !bio);
>>>
>>> /*
>
> -ck
>
>
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
next prev parent reply other threads:[~2025-11-26 3:58 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-24 23:48 [PATCH V3 0/6] block: ignore __blkdev_issue_discard() ret value Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-24 23:48 ` [PATCH V3 1/6] block: ignore discard return value Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-25 17:38 ` Jens Axboe
2025-11-25 17:38 ` [f2fs-dev] " Jens Axboe
2025-11-25 19:09 ` Chaitanya Kulkarni
2025-11-25 19:09 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-25 19:19 ` Jens Axboe
2025-11-25 19:19 ` [f2fs-dev] " Jens Axboe
2025-11-24 23:48 ` [PATCH V3 2/6] md: " Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-12-01 6:22 ` Chaitanya Kulkarni
2026-01-24 21:29 ` Chaitanya Kulkarni
2025-11-24 23:48 ` [PATCH V3 3/6] dm: " Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-12-01 6:23 ` Chaitanya Kulkarni
2025-12-01 21:07 ` Mikulas Patocka
2025-11-24 23:48 ` [PATCH V3 4/6] nvmet: " Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-26 10:14 ` Yongpeng Yang
2025-11-26 10:14 ` Yongpeng Yang
2025-11-26 10:37 ` Christoph Hellwig
2025-11-26 10:37 ` Christoph Hellwig
2026-01-24 21:35 ` Chaitanya Kulkarni
2026-01-24 21:35 ` [f2fs-dev] " Chaitanya Kulkarni via Linux-f2fs-devel
2026-01-26 4:57 ` hch
2026-01-26 4:57 ` [f2fs-dev] " hch
2026-01-27 22:40 ` Chaitanya Kulkarni
2026-01-27 22:40 ` [f2fs-dev] " Chaitanya Kulkarni via Linux-f2fs-devel
2025-11-24 23:48 ` [PATCH V3 5/6] f2fs: " Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-25 1:10 ` Chao Yu
2025-11-25 1:10 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2025-11-25 6:33 ` Christoph Hellwig
2025-11-25 6:33 ` [f2fs-dev] " Christoph Hellwig
2025-11-25 7:11 ` Chao Yu
2025-11-25 7:11 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2025-12-01 6:26 ` Chaitanya Kulkarni via Linux-f2fs-devel
2025-11-26 2:47 ` Chao Yu
2025-11-26 2:47 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2025-11-26 3:37 ` Chaitanya Kulkarni
2025-11-26 3:37 ` [f2fs-dev] " Chaitanya Kulkarni via Linux-f2fs-devel
2025-11-26 3:58 ` Chao Yu [this message]
2025-11-26 3:58 ` Chao Yu via Linux-f2fs-devel
2025-11-24 23:48 ` [PATCH V3 6/6] xfs: " Chaitanya Kulkarni
2025-11-24 23:48 ` [f2fs-dev] " Chaitanya Kulkarni
2025-11-26 2:37 ` Yongpeng Yang
2025-11-26 2:37 ` Yongpeng Yang
2025-11-26 8:07 ` Chaitanya Kulkarni
2025-11-26 8:07 ` Chaitanya Kulkarni via Linux-f2fs-devel
2025-11-26 9:14 ` Yongpeng Yang
2025-11-26 9:14 ` Yongpeng Yang
2025-11-26 9:48 ` Yongpeng Yang
2025-11-26 9:48 ` Yongpeng Yang
2025-11-26 10:34 ` hch
2025-11-26 10:34 ` hch
2025-11-26 10:33 ` Christoph Hellwig
2025-11-26 10:33 ` Christoph Hellwig
2025-12-01 6:28 ` Chaitanya Kulkarni
2025-12-01 12:20 ` Carlos Maiolino
2025-11-25 13:20 ` [PATCH V3 0/6] block: ignore __blkdev_issue_discard() ret value Anuj gupta
2025-11-25 13:20 ` [f2fs-dev] " Anuj gupta
2025-11-25 19:20 ` (subset) " Jens Axboe
2025-11-25 19:20 ` [f2fs-dev] " Jens Axboe
2025-12-03 21:50 ` [f2fs-dev] " patchwork-bot+f2fs
2025-12-03 21:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
2025-12-09 17:18 ` patchwork-bot+f2fs
2025-12-09 17:18 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
2025-12-16 0:50 ` patchwork-bot+f2fs
2025-12-16 0:50 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
2026-02-17 21:14 ` patchwork-bot+f2fs
2026-02-17 21:14 ` patchwork-bot+f2fs--- via Linux-f2fs-devel
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=9079ffb8-3b66-415f-bb2a-4d3f79dc9cb4@kernel.org \
--to=chao@kernel.org \
--cc=agk@redhat.com \
--cc=axboe@kernel.dk \
--cc=bpf@vger.kernel.org \
--cc=cem@kernel.org \
--cc=chaitanyak@nvidia.com \
--cc=ckulkarnilinux@gmail.com \
--cc=dm-devel@lists.linux.dev \
--cc=hch@lst.de \
--cc=jaegeuk@kernel.org \
--cc=johannes.thumshirn@wdc.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-raid@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=mpatocka@redhat.com \
--cc=sagi@grimberg.me \
--cc=snitzer@kernel.org \
--cc=song@kernel.org \
--cc=yukuai@fnnas.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.