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