mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-11-01 02:21:16 +00:00
Merge "mm: page-writeback: fix page state calculation in throttle_vm_writeout"
This commit is contained in:
commit
141207c633
2 changed files with 25 additions and 0 deletions
|
@ -142,6 +142,25 @@ static inline unsigned long zone_page_state_snapshot(struct zone *zone,
|
|||
return x;
|
||||
}
|
||||
|
||||
static inline unsigned long global_page_state_snapshot(enum zone_stat_item item)
|
||||
{
|
||||
long x = atomic_long_read(&vm_stat[item]);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
struct zone *zone;
|
||||
int cpu;
|
||||
for_each_online_cpu(cpu) {
|
||||
for_each_populated_zone(zone)
|
||||
x += per_cpu_ptr(zone->pageset,
|
||||
cpu)->vm_stat_diff[item];
|
||||
}
|
||||
|
||||
if (x < 0)
|
||||
x = 0;
|
||||
#endif
|
||||
return x;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
/*
|
||||
* Determine the per node value of a stat item. This function
|
||||
|
|
|
@ -1670,6 +1670,12 @@ void throttle_vm_writeout(gfp_t gfp_mask)
|
|||
if (global_page_state(NR_UNSTABLE_NFS) +
|
||||
global_page_state(NR_WRITEBACK) <= dirty_thresh)
|
||||
break;
|
||||
/* Try safe version */
|
||||
else if (unlikely(global_page_state_snapshot(NR_UNSTABLE_NFS) +
|
||||
global_page_state_snapshot(NR_WRITEBACK) <=
|
||||
dirty_thresh))
|
||||
break;
|
||||
|
||||
congestion_wait(BLK_RW_ASYNC, HZ/10);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue