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