* [PATCH] f2fs: fix ref of discard command
@ 2017-06-12 3:04 Jaegeuk Kim
2017-06-12 11:17 ` Chao Yu
2017-06-23 8:16 ` Chao Yu
0 siblings, 2 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-12 3:04 UTC (permalink / raw)
To: linux-kernel, linux-fsdevel, linux-f2fs-devel; +Cc: Jaegeuk Kim
This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
f2fs: add f2fs_bug_on in __remove_discard_cmd
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
---
fs/f2fs/segment.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 86a0c1095939..a6d77388a806 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
list_for_each_entry_safe(dc, tmp, wait_list, list) {
if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
wait_for_completion_io(&dc->wait);
+ if (dc->state == D_DONE && dc->ref)
+ dc->ref--;
__remove_discard_cmd(sbi, dc);
} else {
dc->ref++;
--
2.13.0.rc1.294.g07d810a77f-goog
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
2017-06-12 3:04 [PATCH] f2fs: fix ref of discard command Jaegeuk Kim
@ 2017-06-12 11:17 ` Chao Yu
2017-06-23 8:16 ` Chao Yu
1 sibling, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-12 11:17 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
Hi Jaegeuk,
On 2017/6/12 11:04, Jaegeuk Kim wrote:
> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>
> f2fs: add f2fs_bug_on in __remove_discard_cmd
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/segment.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 86a0c1095939..a6d77388a806 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> wait_for_completion_io(&dc->wait);
> + if (dc->state == D_DONE && dc->ref)
> + dc->ref--;
Should set dc->ref to 0 to avoid panic once we add other referrers?
Thanks,
> __remove_discard_cmd(sbi, dc);
> } else {
> dc->ref++;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-12 11:17 ` Chao Yu
0 siblings, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-12 11:17 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
Hi Jaegeuk,
On 2017/6/12 11:04, Jaegeuk Kim wrote:
> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>
> f2fs: add f2fs_bug_on in __remove_discard_cmd
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/segment.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 86a0c1095939..a6d77388a806 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> wait_for_completion_io(&dc->wait);
> + if (dc->state == D_DONE && dc->ref)
> + dc->ref--;
Should set dc->ref to 0 to avoid panic once we add other referrers?
Thanks,
> __remove_discard_cmd(sbi, dc);
> } else {
> dc->ref++;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
2017-06-12 11:17 ` Chao Yu
@ 2017-06-14 14:26 ` Jaegeuk Kim
-1 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-14 14:26 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-kernel, linux-fsdevel, linux-f2fs-devel
On 06/12, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> > This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >
> > f2fs: add f2fs_bug_on in __remove_discard_cmd
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/segment.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> > index 86a0c1095939..a6d77388a806 100644
> > --- a/fs/f2fs/segment.c
> > +++ b/fs/f2fs/segment.c
> > @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> > list_for_each_entry_safe(dc, tmp, wait_list, list) {
> > if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> > wait_for_completion_io(&dc->wait);
> > + if (dc->state == D_DONE && dc->ref)
> > + dc->ref--;
>
> Should set dc->ref to 0 to avoid panic once we add other referrers?
Sorry, could you please explain this in more detail?
Thanks,
>
> Thanks,
>
> > __remove_discard_cmd(sbi, dc);
> > } else {
> > dc->ref++;
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-14 14:26 ` Jaegeuk Kim
0 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-14 14:26 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 06/12, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> > This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >
> > f2fs: add f2fs_bug_on in __remove_discard_cmd
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/segment.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> > index 86a0c1095939..a6d77388a806 100644
> > --- a/fs/f2fs/segment.c
> > +++ b/fs/f2fs/segment.c
> > @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> > list_for_each_entry_safe(dc, tmp, wait_list, list) {
> > if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> > wait_for_completion_io(&dc->wait);
> > + if (dc->state == D_DONE && dc->ref)
> > + dc->ref--;
>
> Should set dc->ref to 0 to avoid panic once we add other referrers?
Sorry, could you please explain this in more detail?
Thanks,
>
> Thanks,
>
> > __remove_discard_cmd(sbi, dc);
> > } else {
> > dc->ref++;
> >
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix ref of discard command
2017-06-14 14:26 ` Jaegeuk Kim
@ 2017-06-14 14:58 ` Chao Yu
-1 siblings, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-14 14:58 UTC (permalink / raw)
To: Jaegeuk Kim, Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 2017/6/14 22:26, Jaegeuk Kim wrote:
> On 06/12, Chao Yu wrote:
>> Hi Jaegeuk,
>>
>> On 2017/6/12 11:04, Jaegeuk Kim wrote:
>>> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>>>
>>> f2fs: add f2fs_bug_on in __remove_discard_cmd
>>>
>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>> ---
>>> fs/f2fs/segment.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>> index 86a0c1095939..a6d77388a806 100644
>>> --- a/fs/f2fs/segment.c
>>> +++ b/fs/f2fs/segment.c
>>> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
>>> list_for_each_entry_safe(dc, tmp, wait_list, list) {
>>> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
>>> wait_for_completion_io(&dc->wait);
>>> + if (dc->state == D_DONE && dc->ref)
>>> + dc->ref--;
>>
>> Should set dc->ref to 0 to avoid panic once we add other referrers?
>
> Sorry, could you please explain this in more detail?
Oh, I just assume later we may add another referrer for some reason
which will make dc->ref = 2, so dc->ref-- is not enough to avoid the
bug_on in __remove_discard_cmd. I think reseting dc->ref is more safe
here, how do you think?
Thanks,
>
> Thanks,
>
>>
>> Thanks,
>>
>>> __remove_discard_cmd(sbi, dc);
>>> } else {
>>> dc->ref++;
>>>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-14 14:58 ` Chao Yu
0 siblings, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-14 14:58 UTC (permalink / raw)
To: Jaegeuk Kim, Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 2017/6/14 22:26, Jaegeuk Kim wrote:
> On 06/12, Chao Yu wrote:
>> Hi Jaegeuk,
>>
>> On 2017/6/12 11:04, Jaegeuk Kim wrote:
>>> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>>>
>>> f2fs: add f2fs_bug_on in __remove_discard_cmd
>>>
>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>> ---
>>> fs/f2fs/segment.c | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>> index 86a0c1095939..a6d77388a806 100644
>>> --- a/fs/f2fs/segment.c
>>> +++ b/fs/f2fs/segment.c
>>> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
>>> list_for_each_entry_safe(dc, tmp, wait_list, list) {
>>> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
>>> wait_for_completion_io(&dc->wait);
>>> + if (dc->state == D_DONE && dc->ref)
>>> + dc->ref--;
>>
>> Should set dc->ref to 0 to avoid panic once we add other referrers?
>
> Sorry, could you please explain this in more detail?
Oh, I just assume later we may add another referrer for some reason
which will make dc->ref = 2, so dc->ref-- is not enough to avoid the
bug_on in __remove_discard_cmd. I think reseting dc->ref is more safe
here, how do you think?
Thanks,
>
> Thanks,
>
>>
>> Thanks,
>>
>>> __remove_discard_cmd(sbi, dc);
>>> } else {
>>> dc->ref++;
>>>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Linux-f2fs-devel mailing list
> Linux-f2fs-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix ref of discard command
2017-06-14 14:58 ` Chao Yu
@ 2017-06-14 15:20 ` Jaegeuk Kim
-1 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-14 15:20 UTC (permalink / raw)
To: Chao Yu; +Cc: Chao Yu, linux-fsdevel, linux-kernel, linux-f2fs-devel
On 06/14, Chao Yu wrote:
> On 2017/6/14 22:26, Jaegeuk Kim wrote:
> > On 06/12, Chao Yu wrote:
> >> Hi Jaegeuk,
> >>
> >> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> >>> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >>>
> >>> f2fs: add f2fs_bug_on in __remove_discard_cmd
> >>>
> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >>> ---
> >>> fs/f2fs/segment.c | 2 ++
> >>> 1 file changed, 2 insertions(+)
> >>>
> >>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> >>> index 86a0c1095939..a6d77388a806 100644
> >>> --- a/fs/f2fs/segment.c
> >>> +++ b/fs/f2fs/segment.c
> >>> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> >>> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> >>> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> >>> wait_for_completion_io(&dc->wait);
> >>> + if (dc->state == D_DONE && dc->ref)
> >>> + dc->ref--;
> >>
> >> Should set dc->ref to 0 to avoid panic once we add other referrers?
> >
> > Sorry, could you please explain this in more detail?
>
> Oh, I just assume later we may add another referrer for some reason
> which will make dc->ref = 2, so dc->ref-- is not enough to avoid the
> bug_on in __remove_discard_cmd. I think reseting dc->ref is more safe
> here, how do you think?
Well, for now, it makes more sense to do like this when considering ref flow,
IIUC. What will make dc->ref = 2 later? Even in that case, why not making zero
by adding dc->ref-- appropriately?
Thanks,
>
> Thanks,
>
> >
> > Thanks,
> >
> >>
> >> Thanks,
> >>
> >>> __remove_discard_cmd(sbi, dc);
> >>> } else {
> >>> dc->ref++;
> >>>
> >
> > ------------------------------------------------------------------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Linux-f2fs-devel mailing list
> > Linux-f2fs-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-14 15:20 ` Jaegeuk Kim
0 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-14 15:20 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 06/14, Chao Yu wrote:
> On 2017/6/14 22:26, Jaegeuk Kim wrote:
> > On 06/12, Chao Yu wrote:
> >> Hi Jaegeuk,
> >>
> >> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> >>> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >>>
> >>> f2fs: add f2fs_bug_on in __remove_discard_cmd
> >>>
> >>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> >>> ---
> >>> fs/f2fs/segment.c | 2 ++
> >>> 1 file changed, 2 insertions(+)
> >>>
> >>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> >>> index 86a0c1095939..a6d77388a806 100644
> >>> --- a/fs/f2fs/segment.c
> >>> +++ b/fs/f2fs/segment.c
> >>> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> >>> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> >>> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> >>> wait_for_completion_io(&dc->wait);
> >>> + if (dc->state == D_DONE && dc->ref)
> >>> + dc->ref--;
> >>
> >> Should set dc->ref to 0 to avoid panic once we add other referrers?
> >
> > Sorry, could you please explain this in more detail?
>
> Oh, I just assume later we may add another referrer for some reason
> which will make dc->ref = 2, so dc->ref-- is not enough to avoid the
> bug_on in __remove_discard_cmd. I think reseting dc->ref is more safe
> here, how do you think?
Well, for now, it makes more sense to do like this when considering ref flow,
IIUC. What will make dc->ref = 2 later? Even in that case, why not making zero
by adding dc->ref-- appropriately?
Thanks,
>
> Thanks,
>
> >
> > Thanks,
> >
> >>
> >> Thanks,
> >>
> >>> __remove_discard_cmd(sbi, dc);
> >>> } else {
> >>> dc->ref++;
> >>>
> >
> > ------------------------------------------------------------------------------
> > Check out the vibrant tech community on one of the world's most
> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > _______________________________________________
> > Linux-f2fs-devel mailing list
> > Linux-f2fs-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
> >
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix ref of discard command
2017-06-14 15:20 ` Jaegeuk Kim
(?)
@ 2017-06-14 15:40 ` Chao Yu
-1 siblings, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-14 15:40 UTC (permalink / raw)
To: Jaegeuk Kim; +Cc: Chao Yu, linux-fsdevel, linux-kernel, linux-f2fs-devel
On 2017/6/14 23:20, Jaegeuk Kim wrote:
> On 06/14, Chao Yu wrote:
>> On 2017/6/14 22:26, Jaegeuk Kim wrote:
>>> On 06/12, Chao Yu wrote:
>>>> Hi Jaegeuk,
>>>>
>>>> On 2017/6/12 11:04, Jaegeuk Kim wrote:
>>>>> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>>>>>
>>>>> f2fs: add f2fs_bug_on in __remove_discard_cmd
>>>>>
>>>>> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
>>>>> ---
>>>>> fs/f2fs/segment.c | 2 ++
>>>>> 1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
>>>>> index 86a0c1095939..a6d77388a806 100644
>>>>> --- a/fs/f2fs/segment.c
>>>>> +++ b/fs/f2fs/segment.c
>>>>> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
>>>>> list_for_each_entry_safe(dc, tmp, wait_list, list) {
>>>>> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
>>>>> wait_for_completion_io(&dc->wait);
>>>>> + if (dc->state == D_DONE && dc->ref)
>>>>> + dc->ref--;
>>>>
>>>> Should set dc->ref to 0 to avoid panic once we add other referrers?
>>>
>>> Sorry, could you please explain this in more detail?
>>
>> Oh, I just assume later we may add another referrer for some reason
>> which will make dc->ref = 2, so dc->ref-- is not enough to avoid the
>> bug_on in __remove_discard_cmd. I think reseting dc->ref is more safe
>> here, how do you think?
>
> Well, for now, it makes more sense to do like this when considering ref flow,
> IIUC. What will make dc->ref = 2 later? Even in that case, why not making zero
It's just assumption, till now, I do not have it in my mind ;)
> by adding dc->ref-- appropriately?
You mean as below?
dc->ref--;
if (dc->ref > 0)
dc->ref--;
Thanks,
>
> Thanks,
>
>>
>> Thanks,
>>
>>>
>>> Thanks,
>>>
>>>>
>>>> Thanks,
>>>>
>>>>> __remove_discard_cmd(sbi, dc);
>>>>> } else {
>>>>> dc->ref++;
>>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>>> _______________________________________________
>>> Linux-f2fs-devel mailing list
>>> Linux-f2fs-devel@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
>>>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
2017-06-12 3:04 [PATCH] f2fs: fix ref of discard command Jaegeuk Kim
@ 2017-06-23 8:16 ` Chao Yu
2017-06-23 8:16 ` Chao Yu
1 sibling, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-23 8:16 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
Hi Jaegeuk,
On 2017/6/12 11:04, Jaegeuk Kim wrote:
> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>
> f2fs: add f2fs_bug_on in __remove_discard_cmd
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/segment.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 86a0c1095939..a6d77388a806 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> wait_for_completion_io(&dc->wait);
> + if (dc->state == D_DONE && dc->ref)
> + dc->ref--;
How about using ("f2fs: stop discard thread in prior during umount") instead of
this one? As dereference of dc here will lead use-after-free of real referrer.
Thanks,
> __remove_discard_cmd(sbi, dc);
> } else {
> dc->ref++;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-23 8:16 ` Chao Yu
0 siblings, 0 replies; 14+ messages in thread
From: Chao Yu @ 2017-06-23 8:16 UTC (permalink / raw)
To: Jaegeuk Kim, linux-kernel, linux-fsdevel, linux-f2fs-devel
Hi Jaegeuk,
On 2017/6/12 11:04, Jaegeuk Kim wrote:
> This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
>
> f2fs: add f2fs_bug_on in __remove_discard_cmd
>
> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> ---
> fs/f2fs/segment.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 86a0c1095939..a6d77388a806 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> list_for_each_entry_safe(dc, tmp, wait_list, list) {
> if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> wait_for_completion_io(&dc->wait);
> + if (dc->state == D_DONE && dc->ref)
> + dc->ref--;
How about using ("f2fs: stop discard thread in prior during umount") instead of
this one? As dereference of dc here will lead use-after-free of real referrer.
Thanks,
> __remove_discard_cmd(sbi, dc);
> } else {
> dc->ref++;
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
2017-06-23 8:16 ` Chao Yu
@ 2017-06-24 16:26 ` Jaegeuk Kim
-1 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-24 16:26 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-kernel, linux-fsdevel, linux-f2fs-devel
On 06/23, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> > This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >
> > f2fs: add f2fs_bug_on in __remove_discard_cmd
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/segment.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> > index 86a0c1095939..a6d77388a806 100644
> > --- a/fs/f2fs/segment.c
> > +++ b/fs/f2fs/segment.c
> > @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> > list_for_each_entry_safe(dc, tmp, wait_list, list) {
> > if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> > wait_for_completion_io(&dc->wait);
> > + if (dc->state == D_DONE && dc->ref)
> > + dc->ref--;
>
> How about using ("f2fs: stop discard thread in prior during umount") instead of
> this one? As dereference of dc here will lead use-after-free of real referrer.
Yup, I'll also verify that.
Thank you. :)
>
> Thanks,
>
> > __remove_discard_cmd(sbi, dc);
> > } else {
> > dc->ref++;
> >
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH] f2fs: fix ref of discard command
@ 2017-06-24 16:26 ` Jaegeuk Kim
0 siblings, 0 replies; 14+ messages in thread
From: Jaegeuk Kim @ 2017-06-24 16:26 UTC (permalink / raw)
To: Chao Yu; +Cc: linux-fsdevel, linux-kernel, linux-f2fs-devel
On 06/23, Chao Yu wrote:
> Hi Jaegeuk,
>
> On 2017/6/12 11:04, Jaegeuk Kim wrote:
> > This patch resolves kernel panic for xfstests/081, caused by recent f2fs_bug_on
> >
> > f2fs: add f2fs_bug_on in __remove_discard_cmd
> >
> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
> > ---
> > fs/f2fs/segment.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> > index 86a0c1095939..a6d77388a806 100644
> > --- a/fs/f2fs/segment.c
> > +++ b/fs/f2fs/segment.c
> > @@ -1025,6 +1025,8 @@ static void __wait_discard_cmd(struct f2fs_sb_info *sbi, bool wait_cond)
> > list_for_each_entry_safe(dc, tmp, wait_list, list) {
> > if (!wait_cond || (dc->state == D_DONE && !dc->ref)) {
> > wait_for_completion_io(&dc->wait);
> > + if (dc->state == D_DONE && dc->ref)
> > + dc->ref--;
>
> How about using ("f2fs: stop discard thread in prior during umount") instead of
> this one? As dereference of dc here will lead use-after-free of real referrer.
Yup, I'll also verify that.
Thank you. :)
>
> Thanks,
>
> > __remove_discard_cmd(sbi, dc);
> > } else {
> > dc->ref++;
> >
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2017-06-24 16:27 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-12 3:04 [PATCH] f2fs: fix ref of discard command Jaegeuk Kim
2017-06-12 11:17 ` Chao Yu
2017-06-12 11:17 ` Chao Yu
2017-06-14 14:26 ` Jaegeuk Kim
2017-06-14 14:26 ` Jaegeuk Kim
2017-06-14 14:58 ` [f2fs-dev] " Chao Yu
2017-06-14 14:58 ` Chao Yu
2017-06-14 15:20 ` [f2fs-dev] " Jaegeuk Kim
2017-06-14 15:20 ` Jaegeuk Kim
2017-06-14 15:40 ` [f2fs-dev] " Chao Yu
2017-06-23 8:16 ` Chao Yu
2017-06-23 8:16 ` Chao Yu
2017-06-24 16:26 ` Jaegeuk Kim
2017-06-24 16:26 ` Jaegeuk Kim
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.