All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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.