filemap: remove find_get_pages_range_tag()
All callers to find_get_pages_range_tag(), find_get_pages_tag(), pagevec_lookup_range_tag(), and pagevec_lookup_tag() have been removed. Link: https://lkml.kernel.org/r/20230104211448.4804-24-vishal.moola@gmail.com Signed-off-by: Vishal Moola (Oracle) <vishal.moola@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
243c5ea4f7
commit
c5792d9384
|
@ -741,16 +741,6 @@ unsigned filemap_get_folios_contig(struct address_space *mapping,
|
|||
pgoff_t *start, pgoff_t end, struct folio_batch *fbatch);
|
||||
unsigned filemap_get_folios_tag(struct address_space *mapping, pgoff_t *start,
|
||||
pgoff_t end, xa_mark_t tag, struct folio_batch *fbatch);
|
||||
unsigned find_get_pages_range_tag(struct address_space *mapping, pgoff_t *index,
|
||||
pgoff_t end, xa_mark_t tag, unsigned int nr_pages,
|
||||
struct page **pages);
|
||||
static inline unsigned find_get_pages_tag(struct address_space *mapping,
|
||||
pgoff_t *index, xa_mark_t tag, unsigned int nr_pages,
|
||||
struct page **pages)
|
||||
{
|
||||
return find_get_pages_range_tag(mapping, index, (pgoff_t)-1, tag,
|
||||
nr_pages, pages);
|
||||
}
|
||||
|
||||
struct page *grab_cache_page_write_begin(struct address_space *mapping,
|
||||
pgoff_t index);
|
||||
|
|
|
@ -26,14 +26,6 @@ struct pagevec {
|
|||
};
|
||||
|
||||
void __pagevec_release(struct pagevec *pvec);
|
||||
unsigned pagevec_lookup_range_tag(struct pagevec *pvec,
|
||||
struct address_space *mapping, pgoff_t *index, pgoff_t end,
|
||||
xa_mark_t tag);
|
||||
static inline unsigned pagevec_lookup_tag(struct pagevec *pvec,
|
||||
struct address_space *mapping, pgoff_t *index, xa_mark_t tag)
|
||||
{
|
||||
return pagevec_lookup_range_tag(pvec, mapping, index, (pgoff_t)-1, tag);
|
||||
}
|
||||
|
||||
static inline void pagevec_init(struct pagevec *pvec)
|
||||
{
|
||||
|
|
60
mm/filemap.c
60
mm/filemap.c
|
@ -2337,66 +2337,6 @@ out:
|
|||
}
|
||||
EXPORT_SYMBOL(filemap_get_folios_tag);
|
||||
|
||||
/**
|
||||
* find_get_pages_range_tag - Find and return head pages matching @tag.
|
||||
* @mapping: the address_space to search
|
||||
* @index: the starting page index
|
||||
* @end: The final page index (inclusive)
|
||||
* @tag: the tag index
|
||||
* @nr_pages: the maximum number of pages
|
||||
* @pages: where the resulting pages are placed
|
||||
*
|
||||
* Like find_get_pages_range(), except we only return head pages which are
|
||||
* tagged with @tag. @index is updated to the index immediately after the
|
||||
* last page we return, ready for the next iteration.
|
||||
*
|
||||
* Return: the number of pages which were found.
|
||||
*/
|
||||
unsigned find_get_pages_range_tag(struct address_space *mapping, pgoff_t *index,
|
||||
pgoff_t end, xa_mark_t tag, unsigned int nr_pages,
|
||||
struct page **pages)
|
||||
{
|
||||
XA_STATE(xas, &mapping->i_pages, *index);
|
||||
struct folio *folio;
|
||||
unsigned ret = 0;
|
||||
|
||||
if (unlikely(!nr_pages))
|
||||
return 0;
|
||||
|
||||
rcu_read_lock();
|
||||
while ((folio = find_get_entry(&xas, end, tag))) {
|
||||
/*
|
||||
* Shadow entries should never be tagged, but this iteration
|
||||
* is lockless so there is a window for page reclaim to evict
|
||||
* a page we saw tagged. Skip over it.
|
||||
*/
|
||||
if (xa_is_value(folio))
|
||||
continue;
|
||||
|
||||
pages[ret] = &folio->page;
|
||||
if (++ret == nr_pages) {
|
||||
*index = folio->index + folio_nr_pages(folio);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* We come here when we got to @end. We take care to not overflow the
|
||||
* index @index 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)
|
||||
*index = (pgoff_t)-1;
|
||||
else
|
||||
*index = end + 1;
|
||||
out:
|
||||
rcu_read_unlock();
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(find_get_pages_range_tag);
|
||||
|
||||
/*
|
||||
* CD/DVDs are error prone. When a medium error occurs, the driver may fail
|
||||
* a _large_ part of the i/o request. Imagine the worst scenario:
|
||||
|
|
10
mm/swap.c
10
mm/swap.c
|
@ -1115,16 +1115,6 @@ void folio_batch_remove_exceptionals(struct folio_batch *fbatch)
|
|||
fbatch->nr = j;
|
||||
}
|
||||
|
||||
unsigned pagevec_lookup_range_tag(struct pagevec *pvec,
|
||||
struct address_space *mapping, pgoff_t *index, pgoff_t end,
|
||||
xa_mark_t tag)
|
||||
{
|
||||
pvec->nr = find_get_pages_range_tag(mapping, index, end, tag,
|
||||
PAGEVEC_SIZE, pvec->pages);
|
||||
return pagevec_count(pvec);
|
||||
}
|
||||
EXPORT_SYMBOL(pagevec_lookup_range_tag);
|
||||
|
||||
/*
|
||||
* Perform any setup for the swap system
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue