Hi Chao, On 2017/3/1 17:32, Chao Yu wrote: > On 2017/3/1 17:21, Yunlei He wrote: >> Skip writeback meta pages if cp_mutex lock acquire failed, cp will >> flush dirty pages instead. > > Make sense to me. :) > >> >> Signed-off-by: Yunlei He <heyun...@huawei.com> >> --- >> fs/f2fs/checkpoint.c | 12 +++++++----- >> 1 file changed, 7 insertions(+), 5 deletions(-) >> >> diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c >> index 0339daf..5ce24b1 100644 >> --- a/fs/f2fs/checkpoint.c >> +++ b/fs/f2fs/checkpoint.c >> @@ -275,13 +275,15 @@ static int f2fs_write_meta_pages(struct address_space >> *mapping, >> get_pages(sbi, F2FS_DIRTY_META) < nr_pages_to_skip(sbi, META)) >> goto skip_write; >> >> - trace_f2fs_writepages(mapping->host, wbc, META); >> + /* if locked failed, cp will flush dirty pages instead */ >> + if (mutex_trylock(&sbi->cp_mutex)) { >> + diff = nr_pages_to_write(sbi, META, wbc); >> + written = sync_meta_pages(sbi, META, wbc->nr_to_write); >> + } else >> + goto skip_write; > > Would it be better to change: > > /* your comments */ > if (!mutex_trylock(&sbi->cp_mutex)) > goto skip_write; > > trace_f2fs_writepages(); > diff = nr_pages_to_write(); > ... > > Thanks, Yes, it's better, I'll send a new version.
Thanks. > >> >> - /* if mounting is failed, skip writing node pages */ >> - mutex_lock(&sbi->cp_mutex); >> - diff = nr_pages_to_write(sbi, META, wbc); >> - written = sync_meta_pages(sbi, META, wbc->nr_to_write); >> mutex_unlock(&sbi->cp_mutex); >> + trace_f2fs_writepages(mapping->host, wbc, META); >> wbc->nr_to_write = max((long)0, wbc->nr_to_write - written - diff); >> return 0; >> >> > > > . > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel