* [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() @ 2020-05-27 2:20 Sahitya Tummala 2020-05-28 2:45 ` Chao Yu 0 siblings, 1 reply; 7+ messages in thread From: Sahitya Tummala @ 2020-05-27 2:20 UTC (permalink / raw) To: Jaegeuk Kim, Chao Yu, linux-f2fs-devel; +Cc: Sahitya Tummala, linux-kernel In case a compressed file is getting overwritten, the current retry logic doesn't include the current page to be retried now as it sets the new start index as 0 and new end index as writeback_index - 1. This causes the corresponding cluster to be uncompressed and written as normal pages without compression. Fix this by allowing writeback to be retried for the current page as well (in case of compressed page getting retried due to index mismatch with cluster index). So that this cluster can be written compressed in case of overwrite. Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> --- fs/f2fs/data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 4af5fcd..bfd1df4 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, if ((!cycled && !done) || retry) { cycled = 1; index = 0; - end = writeback_index - 1; + end = retry ? -1 : writeback_index - 1; goto retry; } if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project. ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-05-27 2:20 [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() Sahitya Tummala @ 2020-05-28 2:45 ` Chao Yu 2020-05-28 2:55 ` [f2fs-dev] " Chao Yu 0 siblings, 1 reply; 7+ messages in thread From: Chao Yu @ 2020-05-28 2:45 UTC (permalink / raw) To: Sahitya Tummala, Jaegeuk Kim, linux-f2fs-devel; +Cc: linux-kernel On 2020/5/27 10:20, Sahitya Tummala wrote: > In case a compressed file is getting overwritten, the current retry > logic doesn't include the current page to be retried now as it sets > the new start index as 0 and new end index as writeback_index - 1. > This causes the corresponding cluster to be uncompressed and written > as normal pages without compression. Fix this by allowing writeback to > be retried for the current page as well (in case of compressed page > getting retried due to index mismatch with cluster index). So that > this cluster can be written compressed in case of overwrite. > > Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> > --- > fs/f2fs/data.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 4af5fcd..bfd1df4 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > if ((!cycled && !done) || retry) { IMO, we add retry logic in wrong place, you can see that cycled value is zero only if wbc->range_cyclic is true, in that case writeback_index is valid. However if retry is true and wbc->range_cyclic is false, then writeback_index would be uninitialized variable. Thoughts? Thanks, > cycled = 1; > index = 0; > - end = writeback_index - 1; > + end = retry ? -1 : writeback_index - 1; > goto retry; > } > if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-05-28 2:45 ` Chao Yu @ 2020-05-28 2:55 ` Chao Yu 2020-05-28 19:18 ` Jaegeuk Kim 0 siblings, 1 reply; 7+ messages in thread From: Chao Yu @ 2020-05-28 2:55 UTC (permalink / raw) To: Sahitya Tummala, Jaegeuk Kim, linux-f2fs-devel; +Cc: linux-kernel On 2020/5/28 10:45, Chao Yu wrote: > On 2020/5/27 10:20, Sahitya Tummala wrote: >> In case a compressed file is getting overwritten, the current retry >> logic doesn't include the current page to be retried now as it sets >> the new start index as 0 and new end index as writeback_index - 1. >> This causes the corresponding cluster to be uncompressed and written >> as normal pages without compression. Fix this by allowing writeback to >> be retried for the current page as well (in case of compressed page >> getting retried due to index mismatch with cluster index). So that >> this cluster can be written compressed in case of overwrite. >> >> Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> >> --- >> fs/f2fs/data.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >> index 4af5fcd..bfd1df4 100644 >> --- a/fs/f2fs/data.c >> +++ b/fs/f2fs/data.c >> @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, >> if ((!cycled && !done) || retry) { > > IMO, we add retry logic in wrong place, you can see that cycled value is > zero only if wbc->range_cyclic is true, in that case writeback_index is valid. > > However if retry is true and wbc->range_cyclic is false, then writeback_index > would be uninitialized variable. > > Thoughts? > > Thanks, > >> cycled = 1; >> index = 0; >> - end = writeback_index - 1; BTW, I notice that range_cyclic writeback flow was refactored in below commit, and skeleton of f2fs.writepages was copied from mm/page-writeback.c::write_cache_pages(), I guess we need follow that change. 64081362e8ff ("mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock") Thanks, >> + end = retry ? -1 : writeback_index - 1; >> goto retry; >> } >> if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) >> > > > _______________________________________________ > 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] 7+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-05-28 2:55 ` [f2fs-dev] " Chao Yu @ 2020-05-28 19:18 ` Jaegeuk Kim 2020-06-01 9:15 ` Sahitya Tummala 2020-06-01 9:20 ` Sahitya Tummala 0 siblings, 2 replies; 7+ messages in thread From: Jaegeuk Kim @ 2020-05-28 19:18 UTC (permalink / raw) To: Chao Yu; +Cc: Sahitya Tummala, linux-f2fs-devel, linux-kernel On 05/28, Chao Yu wrote: > On 2020/5/28 10:45, Chao Yu wrote: > > On 2020/5/27 10:20, Sahitya Tummala wrote: > >> In case a compressed file is getting overwritten, the current retry > >> logic doesn't include the current page to be retried now as it sets > >> the new start index as 0 and new end index as writeback_index - 1. > >> This causes the corresponding cluster to be uncompressed and written > >> as normal pages without compression. Fix this by allowing writeback to > >> be retried for the current page as well (in case of compressed page > >> getting retried due to index mismatch with cluster index). So that > >> this cluster can be written compressed in case of overwrite. > >> > >> Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> > >> --- > >> fs/f2fs/data.c | 2 +- > >> 1 file changed, 1 insertion(+), 1 deletion(-) > >> > >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > >> index 4af5fcd..bfd1df4 100644 > >> --- a/fs/f2fs/data.c > >> +++ b/fs/f2fs/data.c > >> @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > >> if ((!cycled && !done) || retry) { > > > > IMO, we add retry logic in wrong place, you can see that cycled value is > > zero only if wbc->range_cyclic is true, in that case writeback_index is valid. > > > > However if retry is true and wbc->range_cyclic is false, then writeback_index > > would be uninitialized variable. > > > > Thoughts? > > > > Thanks, > > > >> cycled = 1; > >> index = 0; > >> - end = writeback_index - 1; > > BTW, I notice that range_cyclic writeback flow was refactored in below commit, > and skeleton of f2fs.writepages was copied from mm/page-writeback.c::write_cache_pages(), > I guess we need follow that change. > > 64081362e8ff ("mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock") Is that something like this? --- fs/f2fs/data.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 48a622b95b76e..28fcdf0d4dcb9 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -2861,7 +2861,6 @@ static int f2fs_write_cache_pages(struct address_space *mapping, pgoff_t index; pgoff_t end; /* Inclusive */ pgoff_t done_index; - int cycled; int range_whole = 0; xa_mark_t tag; int nwritten = 0; @@ -2879,17 +2878,12 @@ static int f2fs_write_cache_pages(struct address_space *mapping, if (wbc->range_cyclic) { writeback_index = mapping->writeback_index; /* prev offset */ index = writeback_index; - if (index == 0) - cycled = 1; - else - cycled = 0; end = -1; } else { index = wbc->range_start >> PAGE_SHIFT; end = wbc->range_end >> PAGE_SHIFT; if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) range_whole = 1; - cycled = 1; /* ignore range_cyclic tests */ } if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages) tag = PAGECACHE_TAG_TOWRITE; @@ -3054,10 +3048,9 @@ static int f2fs_write_cache_pages(struct address_space *mapping, } } #endif - if ((!cycled && !done) || retry) { - cycled = 1; + if (retry) { index = 0; - end = writeback_index - 1; + end = -1; goto retry; } if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) -- 2.27.0.rc0.183.gde8f92d652-goog ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-05-28 19:18 ` Jaegeuk Kim @ 2020-06-01 9:15 ` Sahitya Tummala 2020-06-01 9:20 ` Sahitya Tummala 1 sibling, 0 replies; 7+ messages in thread From: Sahitya Tummala @ 2020-06-01 9:15 UTC (permalink / raw) To: Jaegeuk Kim; +Cc: Chao Yu, linux-f2fs-devel, linux-kernel, stummala Hi Chao, Can you please help review below diff given by Jaegeuk? If it looks good, I can send a v2. Thanks, On Thu, May 28, 2020 at 12:18:39PM -0700, Jaegeuk Kim wrote: > On 05/28, Chao Yu wrote: > > On 2020/5/28 10:45, Chao Yu wrote: > > > On 2020/5/27 10:20, Sahitya Tummala wrote: > > >> In case a compressed file is getting overwritten, the current retry > > >> logic doesn't include the current page to be retried now as it sets > > >> the new start index as 0 and new end index as writeback_index - 1. > > >> This causes the corresponding cluster to be uncompressed and written > > >> as normal pages without compression. Fix this by allowing writeback to > > >> be retried for the current page as well (in case of compressed page > > >> getting retried due to index mismatch with cluster index). So that > > >> this cluster can be written compressed in case of overwrite. > > >> > > >> Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> > > >> --- > > >> fs/f2fs/data.c | 2 +- > > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > >> > > >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > > >> index 4af5fcd..bfd1df4 100644 > > >> --- a/fs/f2fs/data.c > > >> +++ b/fs/f2fs/data.c > > >> @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > > >> if ((!cycled && !done) || retry) { > > > > > > IMO, we add retry logic in wrong place, you can see that cycled value is > > > zero only if wbc->range_cyclic is true, in that case writeback_index is valid. > > > > > > However if retry is true and wbc->range_cyclic is false, then writeback_index > > > would be uninitialized variable. > > > > > > Thoughts? > > > > > > Thanks, > > > > > >> cycled = 1; > > >> index = 0; > > >> - end = writeback_index - 1; > > > > BTW, I notice that range_cyclic writeback flow was refactored in below commit, > > and skeleton of f2fs.writepages was copied from mm/page-writeback.c::write_cache_pages(), > > I guess we need follow that change. > > > > 64081362e8ff ("mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock") > > Is that something like this? > > --- > fs/f2fs/data.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 48a622b95b76e..28fcdf0d4dcb9 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -2861,7 +2861,6 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > pgoff_t index; > pgoff_t end; /* Inclusive */ > pgoff_t done_index; > - int cycled; > int range_whole = 0; > xa_mark_t tag; > int nwritten = 0; > @@ -2879,17 +2878,12 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > if (wbc->range_cyclic) { > writeback_index = mapping->writeback_index; /* prev offset */ > index = writeback_index; > - if (index == 0) > - cycled = 1; > - else > - cycled = 0; > end = -1; > } else { > index = wbc->range_start >> PAGE_SHIFT; > end = wbc->range_end >> PAGE_SHIFT; > if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) > range_whole = 1; > - cycled = 1; /* ignore range_cyclic tests */ > } > if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages) > tag = PAGECACHE_TAG_TOWRITE; > @@ -3054,10 +3048,9 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > } > } > #endif > - if ((!cycled && !done) || retry) { > - cycled = 1; > + if (retry) { > index = 0; > - end = writeback_index - 1; > + end = -1; > goto retry; > } > if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) > -- > 2.27.0.rc0.183.gde8f92d652-goog > -- -- Sent by a consultant of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-05-28 19:18 ` Jaegeuk Kim 2020-06-01 9:15 ` Sahitya Tummala @ 2020-06-01 9:20 ` Sahitya Tummala 2020-06-01 11:43 ` Chao Yu 1 sibling, 1 reply; 7+ messages in thread From: Sahitya Tummala @ 2020-06-01 9:20 UTC (permalink / raw) To: Jaegeuk Kim; +Cc: Chao Yu, linux-f2fs-devel, linux-kernel, stummala Hi Chao, Can you please help review the diff given by Jaegeuk below? If it looks good, I can post a v2. Thanks, On Thu, May 28, 2020 at 12:18:39PM -0700, Jaegeuk Kim wrote: > On 05/28, Chao Yu wrote: > > On 2020/5/28 10:45, Chao Yu wrote: > > > On 2020/5/27 10:20, Sahitya Tummala wrote: > > >> In case a compressed file is getting overwritten, the current retry > > >> logic doesn't include the current page to be retried now as it sets > > >> the new start index as 0 and new end index as writeback_index - 1. > > >> This causes the corresponding cluster to be uncompressed and written > > >> as normal pages without compression. Fix this by allowing writeback to > > >> be retried for the current page as well (in case of compressed page > > >> getting retried due to index mismatch with cluster index). So that > > >> this cluster can be written compressed in case of overwrite. > > >> > > >> Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> > > >> --- > > >> fs/f2fs/data.c | 2 +- > > >> 1 file changed, 1 insertion(+), 1 deletion(-) > > >> > > >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > > >> index 4af5fcd..bfd1df4 100644 > > >> --- a/fs/f2fs/data.c > > >> +++ b/fs/f2fs/data.c > > >> @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > > >> if ((!cycled && !done) || retry) { > > > > > > IMO, we add retry logic in wrong place, you can see that cycled value is > > > zero only if wbc->range_cyclic is true, in that case writeback_index is valid. > > > > > > However if retry is true and wbc->range_cyclic is false, then writeback_index > > > would be uninitialized variable. > > > > > > Thoughts? > > > > > > Thanks, > > > > > >> cycled = 1; > > >> index = 0; > > >> - end = writeback_index - 1; > > > > BTW, I notice that range_cyclic writeback flow was refactored in below commit, > > and skeleton of f2fs.writepages was copied from mm/page-writeback.c::write_cache_pages(), > > I guess we need follow that change. > > > > 64081362e8ff ("mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock") > > Is that something like this? > > --- > fs/f2fs/data.c | 11 ++--------- > 1 file changed, 2 insertions(+), 9 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index 48a622b95b76e..28fcdf0d4dcb9 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -2861,7 +2861,6 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > pgoff_t index; > pgoff_t end; /* Inclusive */ > pgoff_t done_index; > - int cycled; > int range_whole = 0; > xa_mark_t tag; > int nwritten = 0; > @@ -2879,17 +2878,12 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > if (wbc->range_cyclic) { > writeback_index = mapping->writeback_index; /* prev offset */ > index = writeback_index; > - if (index == 0) > - cycled = 1; > - else > - cycled = 0; > end = -1; > } else { > index = wbc->range_start >> PAGE_SHIFT; > end = wbc->range_end >> PAGE_SHIFT; > if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) > range_whole = 1; > - cycled = 1; /* ignore range_cyclic tests */ > } > if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages) > tag = PAGECACHE_TAG_TOWRITE; > @@ -3054,10 +3048,9 @@ static int f2fs_write_cache_pages(struct address_space *mapping, > } > } > #endif > - if ((!cycled && !done) || retry) { > - cycled = 1; > + if (retry) { > index = 0; > - end = writeback_index - 1; > + end = -1; > goto retry; > } > if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) > -- > 2.27.0.rc0.183.gde8f92d652-goog > -- -- Sent by a consultant of the Qualcomm Innovation Center, Inc. The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [f2fs-dev] [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() 2020-06-01 9:20 ` Sahitya Tummala @ 2020-06-01 11:43 ` Chao Yu 0 siblings, 0 replies; 7+ messages in thread From: Chao Yu @ 2020-06-01 11:43 UTC (permalink / raw) To: Sahitya Tummala, Jaegeuk Kim; +Cc: linux-f2fs-devel, linux-kernel On 2020/6/1 17:20, Sahitya Tummala wrote: > Hi Chao, > > Can you please help review the diff given by Jaegeuk below? > If it looks good, I can post a v2. Oops, I missed to review that patch... > > Thanks, > > On Thu, May 28, 2020 at 12:18:39PM -0700, Jaegeuk Kim wrote: >> On 05/28, Chao Yu wrote: >>> On 2020/5/28 10:45, Chao Yu wrote: >>>> On 2020/5/27 10:20, Sahitya Tummala wrote: >>>>> In case a compressed file is getting overwritten, the current retry >>>>> logic doesn't include the current page to be retried now as it sets >>>>> the new start index as 0 and new end index as writeback_index - 1. >>>>> This causes the corresponding cluster to be uncompressed and written >>>>> as normal pages without compression. Fix this by allowing writeback to >>>>> be retried for the current page as well (in case of compressed page >>>>> getting retried due to index mismatch with cluster index). So that >>>>> this cluster can be written compressed in case of overwrite. >>>>> >>>>> Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> >>>>> --- >>>>> fs/f2fs/data.c | 2 +- >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>> >>>>> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >>>>> index 4af5fcd..bfd1df4 100644 >>>>> --- a/fs/f2fs/data.c >>>>> +++ b/fs/f2fs/data.c >>>>> @@ -3024,7 +3024,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, >>>>> if ((!cycled && !done) || retry) { >>>> >>>> IMO, we add retry logic in wrong place, you can see that cycled value is >>>> zero only if wbc->range_cyclic is true, in that case writeback_index is valid. >>>> >>>> However if retry is true and wbc->range_cyclic is false, then writeback_index >>>> would be uninitialized variable. >>>> >>>> Thoughts? >>>> >>>> Thanks, >>>> >>>>> cycled = 1; >>>>> index = 0; >>>>> - end = writeback_index - 1; >>> >>> BTW, I notice that range_cyclic writeback flow was refactored in below commit, >>> and skeleton of f2fs.writepages was copied from mm/page-writeback.c::write_cache_pages(), >>> I guess we need follow that change. >>> >>> 64081362e8ff ("mm/page-writeback.c: fix range_cyclic writeback vs writepages deadlock") >> >> Is that something like this? >> >> --- >> fs/f2fs/data.c | 11 ++--------- >> 1 file changed, 2 insertions(+), 9 deletions(-) >> >> diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c >> index 48a622b95b76e..28fcdf0d4dcb9 100644 >> --- a/fs/f2fs/data.c >> +++ b/fs/f2fs/data.c >> @@ -2861,7 +2861,6 @@ static int f2fs_write_cache_pages(struct address_space *mapping, >> pgoff_t index; >> pgoff_t end; /* Inclusive */ >> pgoff_t done_index; >> - int cycled; >> int range_whole = 0; >> xa_mark_t tag; >> int nwritten = 0; >> @@ -2879,17 +2878,12 @@ static int f2fs_write_cache_pages(struct address_space *mapping, >> if (wbc->range_cyclic) { >> writeback_index = mapping->writeback_index; /* prev offset */ >> index = writeback_index; >> - if (index == 0) >> - cycled = 1; >> - else >> - cycled = 0; >> end = -1; >> } else { >> index = wbc->range_start >> PAGE_SHIFT; >> end = wbc->range_end >> PAGE_SHIFT; >> if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) >> range_whole = 1; >> - cycled = 1; /* ignore range_cyclic tests */ >> } >> if (wbc->sync_mode == WB_SYNC_ALL || wbc->tagged_writepages) >> tag = PAGECACHE_TAG_TOWRITE; >> @@ -3054,10 +3048,9 @@ static int f2fs_write_cache_pages(struct address_space *mapping, >> } >> } >> #endif >> - if ((!cycled && !done) || retry) { >> - cycled = 1; >> + if (retry) { >> index = 0; >> - end = writeback_index - 1; >> + end = -1; >> goto retry; >> } + if (wbc->range_cyclic && !done) + done_index = 0; Thanks, >> if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0)) >> -- >> 2.27.0.rc0.183.gde8f92d652-goog >> > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-06-01 11:43 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-05-27 2:20 [PATCH] f2fs: fix retry logic in f2fs_write_cache_pages() Sahitya Tummala 2020-05-28 2:45 ` Chao Yu 2020-05-28 2:55 ` [f2fs-dev] " Chao Yu 2020-05-28 19:18 ` Jaegeuk Kim 2020-06-01 9:15 ` Sahitya Tummala 2020-06-01 9:20 ` Sahitya Tummala 2020-06-01 11:43 ` Chao Yu
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).