On 10/20, Ju Hyung Park wrote:
> This does seem to fix the problem I've been having.
> 
> I was encountering all I/Os to be blocked on my Android device
> almost on a daily basis, but after this patch I'm rock solid for almost a 
> week.
> 
> I'd appreciate it if you could add the following tags:
> Reported-by: Park Ju Hyung <qkrwngud...@gmail.com>
> Tested-by: Park Ju Hyung <qkrwngud...@gmail.com>
> 
> Also, a little additional note would be helpful
> for those who are unfamiliar with f2fs:
> This fixes a deadlock causing all I/Os to be blocked during heavy GC.

Cool. Please check the below. :P

https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/commit/?h=dev&id=b921ec4e7fb5df13f805bc04375ed529faa095ae

Thanks,

> 
> Thanks,
> On Wed, Oct 17, 2018 at 11:34 AM Jaegeuk Kim <jaeg...@kernel.org> wrote:
> >
> > This reverts commit 66110abc4c931f879d70e83e1281f891699364bf.
> >
> > If we clear the cold data flag out of the writeback flow, we can miscount
> > -1 by end_io.
> >
> > Balancing F2FS Async:
> >  - IO (CP:    1, Data:   -1, Flush: (   0    0    1), Discard: (   ...
> >
> > GC thread:                              IRQ
> > - move_data_page()
> >  - set_page_dirty()
> >   - clear_cold_data()
> >                                         - f2fs_write_end_io()
> >                                          - type = WB_DATA_TYPE(page);
> >                                            here, we get wrong type
> >                                          - dec_page_count(sbi, type);
> >  - f2fs_wait_on_page_writeback()
> >
> > Cc: <sta...@vger.kernel.org>
> > Signed-off-by: Jaegeuk Kim <jaeg...@kernel.org>
> > ---
> >  fs/f2fs/data.c | 4 ----
> >  1 file changed, 4 deletions(-)
> >
> > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
> > index 3f272c18fb61..0d0b4dd55b04 100644
> > --- a/fs/f2fs/data.c
> > +++ b/fs/f2fs/data.c
> > @@ -2650,10 +2650,6 @@ static int f2fs_set_data_page_dirty(struct page 
> > *page)
> >         if (!PageUptodate(page))
> >                 SetPageUptodate(page);
> >
> > -       /* don't remain PG_checked flag which was set during GC */
> > -       if (is_cold_data(page))
> > -               clear_cold_data(page);
> > -
> >         if (f2fs_is_atomic_file(inode) && 
> > !f2fs_is_commit_atomic_write(inode)) {
> >                 if (!IS_ATOMIC_WRITTEN_PAGE(page)) {
> >                         f2fs_register_inmem_page(inode, page);
> > --
> > 2.19.0.605.g01d371f741-goog
> >
> >
> >
> > _______________________________________________
> > 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

Reply via email to