diff options
author | Alex Shi <alex.shi@linaro.org> | 2015-04-20 13:51:21 +0800 |
---|---|---|
committer | Alex Shi <alex.shi@linaro.org> | 2015-04-20 13:51:21 +0800 |
commit | 663276faa26c2837eca83a5800b3668be19aaaff (patch) | |
tree | aee6a1964c83eb2153bde4a4c442af88204a28a8 /mm | |
parent | 667ea3959654ae48ef303df13f2635fd07766cb4 (diff) | |
parent | 5c43c539346972b9a1d5f38dc62db5a39997488d (diff) |
Merge tag 'v3.14.39' into linux-linaro-lsk-v3.14
This is the 3.14.39 stable release
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memory_hotplug.c | 13 | ||||
-rw-r--r-- | mm/page-writeback.c | 7 |
2 files changed, 9 insertions, 11 deletions
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index f6f23833de44..c8e450132813 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1016,6 +1016,10 @@ static pg_data_t __ref *hotadd_new_pgdat(int nid, u64 start) return NULL; arch_refresh_nodedata(nid, pgdat); + } else { + /* Reset the nr_zones and classzone_idx to 0 before reuse */ + pgdat->nr_zones = 0; + pgdat->classzone_idx = 0; } /* we can use NODE_DATA(nid) from here */ @@ -1863,15 +1867,6 @@ void try_offline_node(int nid) if (is_vmalloc_addr(zone->wait_table)) vfree(zone->wait_table); } - - /* - * Since there is no way to guarentee the address of pgdat/zone is not - * on stack of any kernel threads or used by other kernel objects - * without reference counting or other symchronizing method, do not - * reset node_data and free pgdat here. Just reset it to 0 and reuse - * the memory when the node is online again. - */ - memset(pgdat, 0, sizeof(*pgdat)); } EXPORT_SYMBOL(try_offline_node); diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 9f45f87a5859..51d8d15f48d7 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -878,8 +878,11 @@ static void bdi_update_write_bandwidth(struct backing_dev_info *bdi, * bw * elapsed + write_bandwidth * (period - elapsed) * write_bandwidth = --------------------------------------------------- * period + * + * @written may have decreased due to account_page_redirty(). + * Avoid underflowing @bw calculation. */ - bw = written - bdi->written_stamp; + bw = written - min(written, bdi->written_stamp); bw *= HZ; if (unlikely(elapsed > period)) { do_div(bw, elapsed); @@ -943,7 +946,7 @@ static void global_update_bandwidth(unsigned long thresh, unsigned long now) { static DEFINE_SPINLOCK(dirty_lock); - static unsigned long update_time; + static unsigned long update_time = INITIAL_JIFFIES; /* * check locklessly first to optimize away locking for the most time |