Hi Jaegeuk,

> -----Original Message-----
> From: Jaegeuk Kim [mailto:jaeg...@kernel.org]
> Sent: Friday, February 26, 2016 3:03 AM
> To: Chao Yu
> Cc: 'He YunLei'; linux-f2fs-devel@lists.sourceforge.net; 
> bintian.w...@huawei.com; 'Biao He'
> Subject: Re: [f2fs-dev] [PATCH] f2fs: avoid hungtask problem caused by losing 
> wake_up
> 
> Hi all,
> 
> On Thu, Feb 25, 2016 at 05:41:26PM +0800, Chao Yu wrote:
> > Hi Yunlei,
> >
> > > -----Original Message-----
> > > From: He YunLei [mailto:heyun...@huawei.com]
> > > Sent: Thursday, February 25, 2016 3:36 PM
> > > To: Chao Yu; jaeg...@kernel.org; linux-f2fs-devel@lists.sourceforge.net
> > > Cc: bintian.w...@huawei.com; 'Biao He'
> > > Subject: Re: [f2fs-dev] [PATCH] f2fs: avoid hungtask problem caused by 
> > > losing wake_up
> > >
> > > On 2016/2/24 11:46, Chao Yu wrote:
> > > >>> > >
> > > >>> > >But I doubt more that the reason we are stuck is there are 
> > > >>> > >remained pages
> > > >>> > >cached in bio buffer without being submitted. To make sure, maybe 
> > > >>> > >in
> > > >>> > >wait_on_all_pages_writeback we could add print info to see whether
> > > >>> > >sbi->write_io[].bio is valid or not.
> > > >>> > >
> > > >> >We use tool dump f2fs_sb_info information and find that:
> > > >> >
> > > >> >      write_io[DATA].bio = 0;
> > > >> >      write_io[NODE].bio = 0;
> > > >> >      write_io[META].bio = 0;
> > > >> >
> > > >> >      nr_pages[F2FS_WRITEBACK] = 0;
> > > >> >      nr_pages[F2FS_DIRTY_DENTS] = 0;
> > > >> >      nr_pages[F2FS_DIRTY_NODES] = 13;
> > > > Weird, dirty nodes count should be 0.
> > > >
> > > > Thanks
> > > >
> > > Hi Chao,
> > >
> > > In our code,
> > >
> > > 1524 static int f2fs_write_end(struct file *file,
> > > 1525                         struct address_space *mapping,
> > > 1526                         loff_t pos, unsigned len, unsigned copied,
> > > 1527                         struct page *page, void *fsdata)
> > > 1528 {
> > > 1529         struct inode *inode = page->mapping->host;
> > > 1530
> > > 1531         trace_f2fs_write_end(inode, pos, len, copied);
> > > 1532
> > > 1533         set_page_dirty(page);
> > > 1534
> > > 1535         if (pos + copied > i_size_read(inode)) {
> > > 1536                 i_size_write(inode, pos + copied);
> > > 1537                 mark_inode_dirty(inode);
> > > 1538                 update_inode_page(inode);
> > > 1539         }
> > > 1540
> > > 1541         f2fs_put_page(page, 1);
> > > 1542         return copied;
> > > 1543 }
> > >
> > > Here update_inode_page(inode) has been removed by Kim, maybe here could
> > > result dirty node page is not zero.
> >
> > As your hint, I found an issue in f2fs_write_inode which may be related to
> > our problem. I wrote a patch for fixing.
> 
> I just remember out that this has no problem, since we only need to disallow
> writing node pages during checkpoint.
> 
> IOW, write_inode or any other functions can update node pages during 
> checkpoint,
> and then f2fs will flush them after checkpoint.

Sounds reasonable to me. :)

Thanks,

> 
> Thanks,
> 
> >
> > Thanks,
> >
> > >
> > > Thanks,
> > >
> > > >> >      nr_pages[F2FS_DIRTY_META] = 0;
> > > >> >      nr_pages[F2FS_INMEM_PAGES] = 0;
> > > >> >
> > > >> >So we believe that the block device is ok!
> > > >> >
> > > >> >Thanks,
> >


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to