diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 16:11:15 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 16:11:15 -0500 |
commit | f6e858a00af788bab0fd4c0b7f5cd788000edc18 (patch) | |
tree | f9403ca3671be9821dbf83e726e61dbe75fbca6b /fs | |
parent | 193c0d682525987db59ac3a24531a77e4947aa95 (diff) | |
parent | 98870901cce098bbe94d90d2c41d8d1fa8d94392 (diff) |
Merge branch 'akpm' (Andrew's patch-bomb)
Merge misc VM changes from Andrew Morton:
"The rest of most-of-MM. The other MM bits await a slab merge.
This patch includes the addition of a huge zero_page. Not a
performance boost but it an save large amounts of physical memory in
some situations.
Also a bunch of Fujitsu engineers are working on memory hotplug.
Which, as it turns out, was badly broken. About half of their patches
are included here; the remainder are 3.8 material."
However, this merge disables CONFIG_MOVABLE_NODE, which was totally
broken. We don't add new features with "default y", nor do we add
Kconfig questions that are incomprehensible to most people without any
help text. Does the feature even make sense without compaction or
memory hotplug?
* akpm: (54 commits)
mm/bootmem.c: remove unused wrapper function reserve_bootmem_generic()
mm/memory.c: remove unused code from do_wp_page()
asm-generic, mm: pgtable: consolidate zero page helpers
mm/hugetlb.c: fix warning on freeing hwpoisoned hugepage
hwpoison, hugetlbfs: fix RSS-counter warning
hwpoison, hugetlbfs: fix "bad pmd" warning in unmapping hwpoisoned hugepage
mm: protect against concurrent vma expansion
memcg: do not check for mm in __mem_cgroup_count_vm_event
tmpfs: support SEEK_DATA and SEEK_HOLE (reprise)
mm: provide more accurate estimation of pages occupied by memmap
fs/buffer.c: remove redundant initialization in alloc_page_buffers()
fs/buffer.c: do not inline exported function
writeback: fix a typo in comment
mm: introduce new field "managed_pages" to struct zone
mm, oom: remove statically defined arch functions of same name
mm, oom: remove redundant sleep in pagefault oom handler
mm, oom: cleanup pagefault oom handler
memory_hotplug: allow online/offline memory to result movable node
numa: add CONFIG_MOVABLE_NODE for movable-dedicated node
mm, memcg: avoid unnecessary function call when memcg is disabled
...
Diffstat (limited to 'fs')
-rw-r--r-- | fs/buffer.c | 6 | ||||
-rw-r--r-- | fs/fs-writeback.c | 2 | ||||
-rw-r--r-- | fs/proc/kcore.c | 2 | ||||
-rw-r--r-- | fs/proc/task_mmu.c | 6 |
4 files changed, 6 insertions, 10 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index 6e9ed48064fc..c017a2dfb909 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -46,8 +46,7 @@ static int fsync_buffers_list(spinlock_t *lock, struct list_head *list); | |||
46 | 46 | ||
47 | #define BH_ENTRY(list) list_entry((list), struct buffer_head, b_assoc_buffers) | 47 | #define BH_ENTRY(list) list_entry((list), struct buffer_head, b_assoc_buffers) |
48 | 48 | ||
49 | inline void | 49 | void init_buffer(struct buffer_head *bh, bh_end_io_t *handler, void *private) |
50 | init_buffer(struct buffer_head *bh, bh_end_io_t *handler, void *private) | ||
51 | { | 50 | { |
52 | bh->b_end_io = handler; | 51 | bh->b_end_io = handler; |
53 | bh->b_private = private; | 52 | bh->b_private = private; |
@@ -850,13 +849,10 @@ try_again: | |||
850 | if (!bh) | 849 | if (!bh) |
851 | goto no_grow; | 850 | goto no_grow; |
852 | 851 | ||
853 | bh->b_bdev = NULL; | ||
854 | bh->b_this_page = head; | 852 | bh->b_this_page = head; |
855 | bh->b_blocknr = -1; | 853 | bh->b_blocknr = -1; |
856 | head = bh; | 854 | head = bh; |
857 | 855 | ||
858 | bh->b_state = 0; | ||
859 | atomic_set(&bh->b_count, 0); | ||
860 | bh->b_size = size; | 856 | bh->b_size = size; |
861 | 857 | ||
862 | /* Link the buffer to its page */ | 858 | /* Link the buffer to its page */ |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 3e3422f7f0a4..310972b72a66 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -1034,7 +1034,7 @@ int bdi_writeback_thread(void *data) | |||
1034 | while (!kthread_freezable_should_stop(NULL)) { | 1034 | while (!kthread_freezable_should_stop(NULL)) { |
1035 | /* | 1035 | /* |
1036 | * Remove own delayed wake-up timer, since we are already awake | 1036 | * Remove own delayed wake-up timer, since we are already awake |
1037 | * and we'll take care of the preriodic write-back. | 1037 | * and we'll take care of the periodic write-back. |
1038 | */ | 1038 | */ |
1039 | del_timer(&wb->wakeup_timer); | 1039 | del_timer(&wb->wakeup_timer); |
1040 | 1040 | ||
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index 86c67eee439f..e96d4f18ca3a 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c | |||
@@ -249,7 +249,7 @@ static int kcore_update_ram(void) | |||
249 | /* Not inialized....update now */ | 249 | /* Not inialized....update now */ |
250 | /* find out "max pfn" */ | 250 | /* find out "max pfn" */ |
251 | end_pfn = 0; | 251 | end_pfn = 0; |
252 | for_each_node_state(nid, N_HIGH_MEMORY) { | 252 | for_each_node_state(nid, N_MEMORY) { |
253 | unsigned long node_end; | 253 | unsigned long node_end; |
254 | node_end = NODE_DATA(nid)->node_start_pfn + | 254 | node_end = NODE_DATA(nid)->node_start_pfn + |
255 | NODE_DATA(nid)->node_spanned_pages; | 255 | NODE_DATA(nid)->node_spanned_pages; |
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 90c63f9392a5..48775628abbf 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
@@ -643,7 +643,7 @@ static int clear_refs_pte_range(pmd_t *pmd, unsigned long addr, | |||
643 | spinlock_t *ptl; | 643 | spinlock_t *ptl; |
644 | struct page *page; | 644 | struct page *page; |
645 | 645 | ||
646 | split_huge_page_pmd(walk->mm, pmd); | 646 | split_huge_page_pmd(vma, addr, pmd); |
647 | if (pmd_trans_unstable(pmd)) | 647 | if (pmd_trans_unstable(pmd)) |
648 | return 0; | 648 | return 0; |
649 | 649 | ||
@@ -1126,7 +1126,7 @@ static struct page *can_gather_numa_stats(pte_t pte, struct vm_area_struct *vma, | |||
1126 | return NULL; | 1126 | return NULL; |
1127 | 1127 | ||
1128 | nid = page_to_nid(page); | 1128 | nid = page_to_nid(page); |
1129 | if (!node_isset(nid, node_states[N_HIGH_MEMORY])) | 1129 | if (!node_isset(nid, node_states[N_MEMORY])) |
1130 | return NULL; | 1130 | return NULL; |
1131 | 1131 | ||
1132 | return page; | 1132 | return page; |
@@ -1279,7 +1279,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid) | |||
1279 | if (md->writeback) | 1279 | if (md->writeback) |
1280 | seq_printf(m, " writeback=%lu", md->writeback); | 1280 | seq_printf(m, " writeback=%lu", md->writeback); |
1281 | 1281 | ||
1282 | for_each_node_state(n, N_HIGH_MEMORY) | 1282 | for_each_node_state(n, N_MEMORY) |
1283 | if (md->node[n]) | 1283 | if (md->node[n]) |
1284 | seq_printf(m, " N%d=%lu", n, md->node[n]); | 1284 | seq_printf(m, " N%d=%lu", n, md->node[n]); |
1285 | out: | 1285 | out: |