On Thu, Apr 28, 2016 at 07:51:04PM +0800, Chao Yu wrote: > > On Wed, Apr 27, 2016 at 09:41:48PM +0800, Chao Yu wrote: > >> From: Chao Yu <[email protected]> > >> > >> The following condition can happen in a preemptible kernel, it may cause > >> checkpointer hunging. > >> > >> CPU0: CPU1: > >> - write_checkpoint > >> - do_checkpoint > >> - wait_on_all_pages_writeback > >> - f2fs_write_end_io > >> - wake_up > >> this is last writebacked page, but > >> no sleeper in sbi->cp_wait wait > >> queue, wake_up is not been called. > >> - prepare_to_wait(TASK_UNINTERRUPTIBLE) > >> Here, current task can been preempted, > >> but there will be no waker since last > >> write_end_io has bypassed wake_up. So > >> current task will sleep forever.
But here, you should be verifying if you really should go sleep; as the code did; it tests for !get_pages(, F2FS_WRITEBACK), and if you've just completed that very last one, this will break out. > >> - io_schedule_timeout > > ------------------------------------------------------------------------------ Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! https://ad.doubleclick.net/ddm/clk/302982198;130105516;z _______________________________________________ Linux-f2fs-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
