@@ -3774,24 +3774,23 @@ int page_evictable(struct page *page)
3774
3774
void check_move_unevictable_pages (struct page * * pages , int nr_pages )
3775
3775
{
3776
3776
struct lruvec * lruvec ;
3777
- struct zone * zone = NULL ;
3777
+ struct pglist_data * pgdat = NULL ;
3778
3778
int pgscanned = 0 ;
3779
3779
int pgrescued = 0 ;
3780
3780
int i ;
3781
3781
3782
3782
for (i = 0 ; i < nr_pages ; i ++ ) {
3783
3783
struct page * page = pages [i ];
3784
- struct zone * pagezone ;
3784
+ struct pglist_data * pagepgdat = page_pgdat ( page ) ;
3785
3785
3786
3786
pgscanned ++ ;
3787
- pagezone = page_zone (page );
3788
- if (pagezone != zone ) {
3789
- if (zone )
3790
- spin_unlock_irq (zone_lru_lock (zone ));
3791
- zone = pagezone ;
3792
- spin_lock_irq (zone_lru_lock (zone ));
3787
+ if (pagepgdat != pgdat ) {
3788
+ if (pgdat )
3789
+ spin_unlock_irq (& pgdat -> lru_lock );
3790
+ pgdat = pagepgdat ;
3791
+ spin_lock_irq (& pgdat -> lru_lock );
3793
3792
}
3794
- lruvec = mem_cgroup_page_lruvec (page , zone -> zone_pgdat );
3793
+ lruvec = mem_cgroup_page_lruvec (page , pgdat );
3795
3794
3796
3795
if (!PageLRU (page ) || !PageUnevictable (page ))
3797
3796
continue ;
@@ -3807,10 +3806,10 @@ void check_move_unevictable_pages(struct page **pages, int nr_pages)
3807
3806
}
3808
3807
}
3809
3808
3810
- if (zone ) {
3809
+ if (pgdat ) {
3811
3810
__count_vm_events (UNEVICTABLE_PGRESCUED , pgrescued );
3812
3811
__count_vm_events (UNEVICTABLE_PGSCANNED , pgscanned );
3813
- spin_unlock_irq (zone_lru_lock ( zone ) );
3812
+ spin_unlock_irq (& pgdat -> lru_lock );
3814
3813
}
3815
3814
}
3816
3815
#endif /* CONFIG_SHMEM */
0 commit comments