filemap: Remove find_get_pages_range() and associated functions
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Sat, 4 Jun 2022 21:46:02 +0000 (17:46 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 29 Jun 2022 12:51:06 +0000 (08:51 -0400)
All callers of find_get_pages_range(), pagevec_lookup_range() and
pagevec_lookup() have now been removed.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Christian Brauner (Microsoft) <brauner@kernel.org>
include/linux/pagemap.h
include/linux/pagevec.h
mm/filemap.c
mm/swap.c

index cfd0e80..87d4ea5 100644 (file)
@@ -720,9 +720,6 @@ static inline struct page *find_subpage(struct page *head, pgoff_t index)
 
 unsigned filemap_get_folios(struct address_space *mapping, pgoff_t *start,
                pgoff_t end, struct folio_batch *fbatch);
-unsigned find_get_pages_range(struct address_space *mapping, pgoff_t *start,
-                       pgoff_t end, unsigned int nr_pages,
-                       struct page **pages);
 unsigned find_get_pages_contig(struct address_space *mapping, pgoff_t start,
                               unsigned int nr_pages, struct page **pages);
 unsigned find_get_pages_range_tag(struct address_space *mapping, pgoff_t *index,
index 67b1246..6649154 100644 (file)
@@ -27,16 +27,6 @@ struct pagevec {
 
 void __pagevec_release(struct pagevec *pvec);
 void __pagevec_lru_add(struct pagevec *pvec);
-unsigned pagevec_lookup_range(struct pagevec *pvec,
-                             struct address_space *mapping,
-                             pgoff_t *start, pgoff_t end);
-static inline unsigned pagevec_lookup(struct pagevec *pvec,
-                                     struct address_space *mapping,
-                                     pgoff_t *start)
-{
-       return pagevec_lookup_range(pvec, mapping, start, (pgoff_t)-1);
-}
-
 unsigned pagevec_lookup_range_tag(struct pagevec *pvec,
                struct address_space *mapping, pgoff_t *index, pgoff_t end,
                xa_mark_t tag);
index ce3209a..15399e8 100644 (file)
@@ -2197,73 +2197,6 @@ bool folio_more_pages(struct folio *folio, pgoff_t index, pgoff_t max)
 }
 
 /**
- * find_get_pages_range - gang pagecache lookup
- * @mapping:   The address_space to search
- * @start:     The starting page index
- * @end:       The final page index (inclusive)
- * @nr_pages:  The maximum number of pages
- * @pages:     Where the resulting pages are placed
- *
- * find_get_pages_range() will search for and return a group of up to @nr_pages
- * pages in the mapping starting at index @start and up to index @end
- * (inclusive).  The pages are placed at @pages.  find_get_pages_range() takes
- * a reference against the returned pages.
- *
- * The search returns a group of mapping-contiguous pages with ascending
- * indexes.  There may be holes in the indices due to not-present pages.
- * We also update @start to index the next page for the traversal.
- *
- * Return: the number of pages which were found. If this number is
- * smaller than @nr_pages, the end of specified range has been
- * reached.
- */
-unsigned find_get_pages_range(struct address_space *mapping, pgoff_t *start,
-                             pgoff_t end, unsigned int nr_pages,
-                             struct page **pages)
-{
-       XA_STATE(xas, &mapping->i_pages, *start);
-       struct folio *folio;
-       unsigned ret = 0;
-
-       if (unlikely(!nr_pages))
-               return 0;
-
-       rcu_read_lock();
-       while ((folio = find_get_entry(&xas, end, XA_PRESENT))) {
-               /* Skip over shadow, swap and DAX entries */
-               if (xa_is_value(folio))
-                       continue;
-
-again:
-               pages[ret] = folio_file_page(folio, xas.xa_index);
-               if (++ret == nr_pages) {
-                       *start = xas.xa_index + 1;
-                       goto out;
-               }
-               if (folio_more_pages(folio, xas.xa_index, end)) {
-                       xas.xa_index++;
-                       folio_ref_inc(folio);
-                       goto again;
-               }
-       }
-
-       /*
-        * We come here when there is no page beyond @end. We take care to not
-        * overflow the index @start as it confuses some of the callers. This
-        * breaks the iteration when there is a page at index -1 but that is
-        * already broken anyway.
-        */
-       if (end == (pgoff_t)-1)
-               *start = (pgoff_t)-1;
-       else
-               *start = end + 1;
-out:
-       rcu_read_unlock();
-
-       return ret;
-}
-
-/**
  * find_get_pages_contig - gang contiguous pagecache lookup
  * @mapping:   The address_space to search
  * @index:     The starting page index
index f3922a9..f65e284 100644 (file)
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -1086,35 +1086,6 @@ void folio_batch_remove_exceptionals(struct folio_batch *fbatch)
        fbatch->nr = j;
 }
 
-/**
- * pagevec_lookup_range - gang pagecache lookup
- * @pvec:      Where the resulting pages are placed
- * @mapping:   The address_space to search
- * @start:     The starting page index
- * @end:       The final page index
- *
- * pagevec_lookup_range() will search for & return a group of up to PAGEVEC_SIZE
- * pages in the mapping starting from index @start and upto index @end
- * (inclusive).  The pages are placed in @pvec.  pagevec_lookup() takes a
- * reference against the pages in @pvec.
- *
- * The search returns a group of mapping-contiguous pages with ascending
- * indexes.  There may be holes in the indices due to not-present pages. We
- * also update @start to index the next page for the traversal.
- *
- * pagevec_lookup_range() returns the number of pages which were found. If this
- * number is smaller than PAGEVEC_SIZE, the end of specified range has been
- * reached.
- */
-unsigned pagevec_lookup_range(struct pagevec *pvec,
-               struct address_space *mapping, pgoff_t *start, pgoff_t end)
-{
-       pvec->nr = find_get_pages_range(mapping, start, end, PAGEVEC_SIZE,
-                                       pvec->pages);
-       return pagevec_count(pvec);
-}
-EXPORT_SYMBOL(pagevec_lookup_range);
-
 unsigned pagevec_lookup_range_tag(struct pagevec *pvec,
                struct address_space *mapping, pgoff_t *index, pgoff_t end,
                xa_mark_t tag)