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, > > - /* 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