On 07/26/2017 04:47 AM, Jan Kara wrote: > We want only pages from given range in remove_inode_hugepages(). Use > pagevec_lookup_range() instead of pagevec_lookup(). > > CC: Nadia Yvette Chambers <nyc@xxxxxxxxxxxxxx> > Signed-off-by: Jan Kara <jack@xxxxxxx> Nice. I like the new interface. Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> > --- > fs/hugetlbfs/inode.c | 18 ++---------------- > 1 file changed, 2 insertions(+), 16 deletions(-) > > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index b9678ce91e25..8931236f3ef4 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -403,7 +403,6 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart, > struct pagevec pvec; > pgoff_t next, index; > int i, freed = 0; > - long lookup_nr = PAGEVEC_SIZE; > bool truncate_op = (lend == LLONG_MAX); > > memset(&pseudo_vma, 0, sizeof(struct vm_area_struct)); > @@ -412,30 +411,17 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart, > next = start; > while (next < end) { > /* > - * Don't grab more pages than the number left in the range. > - */ > - if (end - next < lookup_nr) > - lookup_nr = end - next; > - > - /* > * When no more pages are found, we are done. > */ > - if (!pagevec_lookup(&pvec, mapping, &next, lookup_nr)) > + if (!pagevec_lookup_range(&pvec, mapping, &next, end - 1, > + PAGEVEC_SIZE)) > break; > > for (i = 0; i < pagevec_count(&pvec); ++i) { > struct page *page = pvec.pages[i]; > u32 hash; > > - /* > - * The page (index) could be beyond end. This is > - * only possible in the punch hole case as end is > - * max page offset in the truncate case. > - */ > index = page->index; > - if (index >= end) > - break; > - > hash = hugetlb_fault_mutex_hash(h, current->mm, > &pseudo_vma, > mapping, index, 0); > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>