Skip to content

Commit

Permalink
mm, pagevec: remove cold parameter for pagevecs
Browse files Browse the repository at this point in the history
Every pagevec_init user claims the pages being released are hot even in
cases where it is unlikely the pages are hot.  As no one cares about the
hotness of pages being released to the allocator, just ditch the
parameter.

No performance impact is expected as the overhead is marginal.  The
parameter is removed simply because it is a bit stupid to have a useless
parameter copied everywhere.

Link: https://lkml.kernel.org/r/[email protected]
Signed-off-by: Mel Gorman <[email protected]>
Acked-by: Vlastimil Babka <[email protected]>
Cc: Andi Kleen <[email protected]>
Cc: Dave Chinner <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Johannes Weiner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
gormanm authored and torvalds committed Nov 16, 2017
1 parent d9ed0d0 commit 8667982
Show file tree
Hide file tree
Showing 24 changed files with 45 additions and 47 deletions.
2 changes: 1 addition & 1 deletion drivers/gpu/drm/i915/i915_gem_gtt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1859,7 +1859,7 @@ static void i915_address_space_init(struct i915_address_space *vm,
INIT_LIST_HEAD(&vm->unbound_list);

list_add_tail(&vm->global_link, &dev_priv->vm_list);
pagevec_init(&vm->free_pages, false);
pagevec_init(&vm->free_pages);
}

static void i915_address_space_fini(struct i915_address_space *vm)
Expand Down
4 changes: 2 additions & 2 deletions fs/afs/write.c
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ static void afs_kill_pages(struct afs_vnode *vnode, bool error,
_enter("{%x:%u},%lx-%lx",
vnode->fid.vid, vnode->fid.vnode, first, last);

pagevec_init(&pv, 0);
pagevec_init(&pv);

do {
_debug("kill %lx-%lx", first, last);
Expand Down Expand Up @@ -602,7 +602,7 @@ void afs_pages_written_back(struct afs_vnode *vnode, struct afs_call *call)

ASSERT(wb != NULL);

pagevec_init(&pv, 0);
pagevec_init(&pv);

do {
_debug("done %lx-%lx", first, last);
Expand Down
4 changes: 2 additions & 2 deletions fs/btrfs/extent_io.c
Original file line number Diff line number Diff line change
Expand Up @@ -3797,7 +3797,7 @@ int btree_write_cache_pages(struct address_space *mapping,
int scanned = 0;
int tag;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
if (wbc->range_cyclic) {
index = mapping->writeback_index; /* Start from prev offset */
end = -1;
Expand Down Expand Up @@ -3936,7 +3936,7 @@ static int extent_write_cache_pages(struct address_space *mapping,
if (!igrab(inode))
return 0;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
if (wbc->range_cyclic) {
index = mapping->writeback_index; /* Start from prev offset */
end = -1;
Expand Down
4 changes: 2 additions & 2 deletions fs/buffer.c
Original file line number Diff line number Diff line change
Expand Up @@ -1592,7 +1592,7 @@ void clean_bdev_aliases(struct block_device *bdev, sector_t block, sector_t len)
struct buffer_head *head;

end = (block + len - 1) >> (PAGE_SHIFT - bd_inode->i_blkbits);
pagevec_init(&pvec, 0);
pagevec_init(&pvec);
while (pagevec_lookup_range(&pvec, bd_mapping, &index, end)) {
count = pagevec_count(&pvec);
for (i = 0; i < count; i++) {
Expand Down Expand Up @@ -3514,7 +3514,7 @@ page_cache_seek_hole_data(struct inode *inode, loff_t offset, loff_t length,
if (length <= 0)
return -ENOENT;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

do {
unsigned nr_pages, i;
Expand Down
4 changes: 2 additions & 2 deletions fs/cachefiles/rdwr.c
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ int cachefiles_read_or_alloc_pages(struct fscache_retrieval *op,
/* calculate the shift required to use bmap */
shift = PAGE_SHIFT - inode->i_sb->s_blocksize_bits;

pagevec_init(&pagevec, 0);
pagevec_init(&pagevec);

op->op.flags &= FSCACHE_OP_KEEP_FLAGS;
op->op.flags |= FSCACHE_OP_ASYNC;
Expand Down Expand Up @@ -844,7 +844,7 @@ int cachefiles_allocate_pages(struct fscache_retrieval *op,

ret = cachefiles_has_space(cache, 0, *nr_pages);
if (ret == 0) {
pagevec_init(&pagevec, 0);
pagevec_init(&pagevec);

list_for_each_entry(page, pages, lru) {
if (pagevec_add(&pagevec, page) == 0)
Expand Down
4 changes: 2 additions & 2 deletions fs/ceph/addr.c
Original file line number Diff line number Diff line change
Expand Up @@ -680,7 +680,7 @@ static void ceph_release_pages(struct page **pages, int num)
struct pagevec pvec;
int i;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
for (i = 0; i < num; i++) {
if (pagevec_add(&pvec, pages[i]) == 0)
pagevec_release(&pvec);
Expand Down Expand Up @@ -811,7 +811,7 @@ static int ceph_writepages_start(struct address_space *mapping,
if (fsc->mount_options->wsize < wsize)
wsize = fsc->mount_options->wsize;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

start_index = wbc->range_cyclic ? mapping->writeback_index : 0;
index = start_index;
Expand Down
2 changes: 1 addition & 1 deletion fs/dax.c
Original file line number Diff line number Diff line change
Expand Up @@ -794,7 +794,7 @@ int dax_writeback_mapping_range(struct address_space *mapping,

tag_pages_for_writeback(mapping, start_index, end_index);

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
while (!done) {
pvec.nr = find_get_entries_tag(mapping, start_index,
PAGECACHE_TAG_TOWRITE, PAGEVEC_SIZE,
Expand Down
6 changes: 3 additions & 3 deletions fs/ext4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -1719,7 +1719,7 @@ static void mpage_release_unused_pages(struct mpage_da_data *mpd,
ext4_es_remove_extent(inode, start, last - start + 1);
}

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
while (index <= end) {
nr_pages = pagevec_lookup_range(&pvec, mapping, &index, end);
if (nr_pages == 0)
Expand Down Expand Up @@ -2345,7 +2345,7 @@ static int mpage_map_and_submit_buffers(struct mpage_da_data *mpd)
lblk = start << bpp_bits;
pblock = mpd->map.m_pblk;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
while (start <= end) {
nr_pages = pagevec_lookup_range(&pvec, inode->i_mapping,
&start, end);
Expand Down Expand Up @@ -2616,7 +2616,7 @@ static int mpage_prepare_extent_to_map(struct mpage_da_data *mpd)
else
tag = PAGECACHE_TAG_DIRTY;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
mpd->map.m_len = 0;
mpd->next_page = index;
while (index <= end) {
Expand Down
2 changes: 1 addition & 1 deletion fs/f2fs/checkpoint.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ long sync_meta_pages(struct f2fs_sb_info *sbi, enum page_type type,
};
struct blk_plug plug;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

blk_start_plug(&plug);

Expand Down
2 changes: 1 addition & 1 deletion fs/f2fs/data.c
Original file line number Diff line number Diff line change
Expand Up @@ -1635,7 +1635,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping,
int range_whole = 0;
int tag;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

if (get_dirty_pages(mapping->host) <=
SM_I(F2FS_M_SB(mapping))->min_hot_blocks)
Expand Down
8 changes: 4 additions & 4 deletions fs/f2fs/node.c
Original file line number Diff line number Diff line change
Expand Up @@ -1282,7 +1282,7 @@ static struct page *last_fsync_dnode(struct f2fs_sb_info *sbi, nid_t ino)
struct page *last_page = NULL;
int nr_pages;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
index = 0;

while ((nr_pages = pagevec_lookup_tag(&pvec, NODE_MAPPING(sbi), &index,
Expand Down Expand Up @@ -1436,7 +1436,7 @@ int fsync_node_pages(struct f2fs_sb_info *sbi, struct inode *inode,
return PTR_ERR_OR_ZERO(last_page);
}
retry:
pagevec_init(&pvec, 0);
pagevec_init(&pvec);
index = 0;

while ((nr_pages = pagevec_lookup_tag(&pvec, NODE_MAPPING(sbi), &index,
Expand Down Expand Up @@ -1547,7 +1547,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, struct writeback_control *wbc,
int ret = 0;
int nr_pages;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

next_step:
index = 0;
Expand Down Expand Up @@ -1648,7 +1648,7 @@ int wait_on_node_pages_writeback(struct f2fs_sb_info *sbi, nid_t ino)
int ret2, ret = 0;
int nr_pages;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

while ((nr_pages = pagevec_lookup_tag(&pvec, NODE_MAPPING(sbi), &index,
PAGECACHE_TAG_WRITEBACK))) {
Expand Down
2 changes: 1 addition & 1 deletion fs/fscache/page.c
Original file line number Diff line number Diff line change
Expand Up @@ -1175,7 +1175,7 @@ void __fscache_uncache_all_inode_pages(struct fscache_cookie *cookie,
return;
}

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
next = 0;
do {
if (!pagevec_lookup(&pvec, mapping, &next))
Expand Down
2 changes: 1 addition & 1 deletion fs/gfs2/aops.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ static int gfs2_write_cache_jdata(struct address_space *mapping,
int range_whole = 0;
int tag;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
if (wbc->range_cyclic) {
writeback_index = mapping->writeback_index; /* prev offset */
index = writeback_index;
Expand Down
2 changes: 1 addition & 1 deletion fs/hugetlbfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart,

memset(&pseudo_vma, 0, sizeof(struct vm_area_struct));
pseudo_vma.vm_flags = (VM_HUGETLB | VM_MAYSHARE | VM_SHARED);
pagevec_init(&pvec, 0);
pagevec_init(&pvec);
next = start;
while (next < end) {
/*
Expand Down
2 changes: 1 addition & 1 deletion fs/nilfs2/btree.c
Original file line number Diff line number Diff line change
Expand Up @@ -2156,7 +2156,7 @@ static void nilfs_btree_lookup_dirty_buffers(struct nilfs_bmap *btree,
level++)
INIT_LIST_HEAD(&lists[level]);

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

while (pagevec_lookup_tag(&pvec, btcache, &index,
PAGECACHE_TAG_DIRTY)) {
Expand Down
8 changes: 4 additions & 4 deletions fs/nilfs2/page.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ int nilfs_copy_dirty_pages(struct address_space *dmap,
pgoff_t index = 0;
int err = 0;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
repeat:
if (!pagevec_lookup_tag(&pvec, smap, &index, PAGECACHE_TAG_DIRTY))
return 0;
Expand Down Expand Up @@ -309,7 +309,7 @@ void nilfs_copy_back_pages(struct address_space *dmap,
pgoff_t index = 0;
int err;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
repeat:
n = pagevec_lookup(&pvec, smap, &index);
if (!n)
Expand Down Expand Up @@ -373,7 +373,7 @@ void nilfs_clear_dirty_pages(struct address_space *mapping, bool silent)
unsigned int i;
pgoff_t index = 0;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

while (pagevec_lookup_tag(&pvec, mapping, &index,
PAGECACHE_TAG_DIRTY)) {
Expand Down Expand Up @@ -518,7 +518,7 @@ unsigned long nilfs_find_uncommitted_extent(struct inode *inode,
index = start_blk >> (PAGE_SHIFT - inode->i_blkbits);
nblocks_in_page = 1U << (PAGE_SHIFT - inode->i_blkbits);

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

repeat:
pvec.nr = find_get_pages_contig(inode->i_mapping, index, PAGEVEC_SIZE,
Expand Down
4 changes: 2 additions & 2 deletions fs/nilfs2/segment.c
Original file line number Diff line number Diff line change
Expand Up @@ -708,7 +708,7 @@ static size_t nilfs_lookup_dirty_data_buffers(struct inode *inode,
index = start >> PAGE_SHIFT;
last = end >> PAGE_SHIFT;
}
pagevec_init(&pvec, 0);
pagevec_init(&pvec);
repeat:
if (unlikely(index > last) ||
!pagevec_lookup_range_tag(&pvec, mapping, &index, last,
Expand Down Expand Up @@ -753,7 +753,7 @@ static void nilfs_lookup_dirty_node_buffers(struct inode *inode,
unsigned int i;
pgoff_t index = 0;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);

while (pagevec_lookup_tag(&pvec, mapping, &index,
PAGECACHE_TAG_DIRTY)) {
Expand Down
4 changes: 1 addition & 3 deletions include/linux/pagevec.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ struct address_space;

struct pagevec {
unsigned long nr;
bool cold;
bool drained;
struct page *pages[PAGEVEC_SIZE];
};
Expand Down Expand Up @@ -51,10 +50,9 @@ static inline unsigned pagevec_lookup_tag(struct pagevec *pvec,
return pagevec_lookup_range_tag(pvec, mapping, index, (pgoff_t)-1, tag);
}

static inline void pagevec_init(struct pagevec *pvec, int cold)
static inline void pagevec_init(struct pagevec *pvec)
{
pvec->nr = 0;
pvec->cold = cold;
pvec->drained = false;
}

Expand Down
2 changes: 1 addition & 1 deletion mm/filemap.c
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ static void __filemap_fdatawait_range(struct address_space *mapping,
if (end_byte < start_byte)
return;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
while (index <= end) {
unsigned i;

Expand Down
4 changes: 2 additions & 2 deletions mm/mlock.c
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@ static void __munlock_pagevec(struct pagevec *pvec, struct zone *zone)
struct pagevec pvec_putback;
int pgrescued = 0;

pagevec_init(&pvec_putback, 0);
pagevec_init(&pvec_putback);

/* Phase 1: page isolation */
spin_lock_irq(zone_lru_lock(zone));
Expand Down Expand Up @@ -448,7 +448,7 @@ void munlock_vma_pages_range(struct vm_area_struct *vma,
struct pagevec pvec;
struct zone *zone;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
/*
* Although FOLL_DUMP is intended for get_dump_page(),
* it just so happens that its special treatment of the
Expand Down
2 changes: 1 addition & 1 deletion mm/page-writeback.c
Original file line number Diff line number Diff line change
Expand Up @@ -2168,7 +2168,7 @@ int write_cache_pages(struct address_space *mapping,
int range_whole = 0;
int tag;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
if (wbc->range_cyclic) {
writeback_index = mapping->writeback_index; /* prev offset */
index = writeback_index;
Expand Down
6 changes: 3 additions & 3 deletions mm/shmem.c
Original file line number Diff line number Diff line change
Expand Up @@ -747,7 +747,7 @@ void shmem_unlock_mapping(struct address_space *mapping)
pgoff_t indices[PAGEVEC_SIZE];
pgoff_t index = 0;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
/*
* Minor point, but we might as well stop if someone else SHM_LOCKs it.
*/
Expand Down Expand Up @@ -790,7 +790,7 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, loff_t lend,
if (lend == -1)
end = -1; /* unsigned, so actually very big */

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
index = start;
while (index < end) {
pvec.nr = find_get_entries(mapping, index,
Expand Down Expand Up @@ -2528,7 +2528,7 @@ static pgoff_t shmem_seek_hole_data(struct address_space *mapping,
bool done = false;
int i;

pagevec_init(&pvec, 0);
pagevec_init(&pvec);
pvec.nr = 1; /* start small: we may be there already */
while (!done) {
pvec.nr = find_get_entries(mapping, index,
Expand Down
4 changes: 2 additions & 2 deletions mm/swap.c
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ static void pagevec_lru_move_fn(struct pagevec *pvec,
}
if (pgdat)
spin_unlock_irqrestore(&pgdat->lru_lock, flags);
release_pages(pvec->pages, pvec->nr, pvec->cold);
release_pages(pvec->pages, pvec->nr, 0);
pagevec_reinit(pvec);
}

Expand Down Expand Up @@ -837,7 +837,7 @@ void __pagevec_release(struct pagevec *pvec)
lru_add_drain();
pvec->drained = true;
}
release_pages(pvec->pages, pagevec_count(pvec), pvec->cold);
release_pages(pvec->pages, pagevec_count(pvec), 0);
pagevec_reinit(pvec);
}
EXPORT_SYMBOL(__pagevec_release);
Expand Down
Loading

0 comments on commit 8667982

Please sign in to comment.