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.

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