On Mon 24-04-17 19:41:35, Andrey Ryabinin wrote: > cleancache_invalidate_inode() called truncate_inode_pages_range() > and invalidate_inode_pages2_range() twice - on entry and on exit. > It's stupid and waste of time. It's enough to call it once at > exit. > > Signed-off-by: Andrey Ryabinin <aryabinin@xxxxxxxxxxxxx> > Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Looks sensible to me but I don't really know cleancache :). Anyway feel free to add: Acked-by: Jan Kara <jack@xxxxxxx> Honza > --- > mm/truncate.c | 12 +++++++----- > 1 file changed, 7 insertions(+), 5 deletions(-) > > diff --git a/mm/truncate.c b/mm/truncate.c > index 8f12b0e..83a059e 100644 > --- a/mm/truncate.c > +++ b/mm/truncate.c > @@ -266,9 +266,8 @@ void truncate_inode_pages_range(struct address_space *mapping, > pgoff_t index; > int i; > > - cleancache_invalidate_inode(mapping); > if (mapping->nrpages == 0 && mapping->nrexceptional == 0) > - return; > + goto out; > > /* Offsets within partial pages */ > partial_start = lstart & (PAGE_SIZE - 1); > @@ -363,7 +362,7 @@ void truncate_inode_pages_range(struct address_space *mapping, > * will be released, just zeroed, so we can bail out now. > */ > if (start >= end) > - return; > + goto out; > > index = start; > for ( ; ; ) { > @@ -410,6 +409,8 @@ void truncate_inode_pages_range(struct address_space *mapping, > pagevec_release(&pvec); > index++; > } > + > +out: > cleancache_invalidate_inode(mapping); > } > EXPORT_SYMBOL(truncate_inode_pages_range); > @@ -623,9 +624,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping, > int ret2 = 0; > int did_range_unmap = 0; > > - cleancache_invalidate_inode(mapping); > if (mapping->nrpages == 0 && mapping->nrexceptional == 0) > - return 0; > + goto out; > > pagevec_init(&pvec, 0); > index = start; > @@ -689,6 +689,8 @@ int invalidate_inode_pages2_range(struct address_space *mapping, > cond_resched(); > index++; > } > + > +out: > cleancache_invalidate_inode(mapping); > return ret; > } > -- > 2.10.2 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR