diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-13 16:00:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-12-13 16:00:36 -0500 |
commit | 78a45c6f067824cf5d0a9fedea7339ac2e28603c (patch) | |
tree | b4f78c8b6b9059ddace0a18c11629b8d2045f793 /mm/memory-failure.c | |
parent | f96fe225677b3efb74346ebd56fafe3997b02afa (diff) | |
parent | 29d293b6007b91a4463f05bc8d0b26e0e65c5816 (diff) |
Merge branch 'akpm' (second patch-bomb from Andrew)
Merge second patchbomb from Andrew Morton:
- the rest of MM
- misc fs fixes
- add execveat() syscall
- new ratelimit feature for fault-injection
- decompressor updates
- ipc/ updates
- fallocate feature creep
- fsnotify cleanups
- a few other misc things
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (99 commits)
cgroups: Documentation: fix trivial typos and wrong paragraph numberings
parisc: percpu: update comments referring to __get_cpu_var
percpu: update local_ops.txt to reflect this_cpu operations
percpu: remove __get_cpu_var and __raw_get_cpu_var macros
fsnotify: remove destroy_list from fsnotify_mark
fsnotify: unify inode and mount marks handling
fallocate: create FAN_MODIFY and IN_MODIFY events
mm/cma: make kmemleak ignore CMA regions
slub: fix cpuset check in get_any_partial
slab: fix cpuset check in fallback_alloc
shmdt: use i_size_read() instead of ->i_size
ipc/shm.c: fix overly aggressive shmdt() when calls span multiple segments
ipc/msg: increase MSGMNI, remove scaling
ipc/sem.c: increase SEMMSL, SEMMNI, SEMOPM
ipc/sem.c: change memory barrier in sem_lock() to smp_rmb()
lib/decompress.c: consistency of compress formats for kernel image
decompress_bunzip2: off by one in get_next_block()
usr/Kconfig: make initrd compression algorithm selection not expert
fault-inject: add ratelimit option
ratelimit: add initialization macro
...
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r-- | mm/memory-failure.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c index e5ee0ca7ae85..feb803bf3443 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c | |||
@@ -239,19 +239,14 @@ void shake_page(struct page *p, int access) | |||
239 | } | 239 | } |
240 | 240 | ||
241 | /* | 241 | /* |
242 | * Only call shrink_slab here (which would also shrink other caches) if | 242 | * Only call shrink_node_slabs here (which would also shrink |
243 | * access is not potentially fatal. | 243 | * other caches) if access is not potentially fatal. |
244 | */ | 244 | */ |
245 | if (access) { | 245 | if (access) { |
246 | int nr; | 246 | int nr; |
247 | int nid = page_to_nid(p); | 247 | int nid = page_to_nid(p); |
248 | do { | 248 | do { |
249 | struct shrink_control shrink = { | 249 | nr = shrink_node_slabs(GFP_KERNEL, nid, 1000, 1000); |
250 | .gfp_mask = GFP_KERNEL, | ||
251 | }; | ||
252 | node_set(nid, shrink.nodes_to_scan); | ||
253 | |||
254 | nr = shrink_slab(&shrink, 1000, 1000); | ||
255 | if (page_count(p) == 1) | 250 | if (page_count(p) == 1) |
256 | break; | 251 | break; |
257 | } while (nr > 10); | 252 | } while (nr > 10); |
@@ -466,7 +461,7 @@ static void collect_procs_file(struct page *page, struct list_head *to_kill, | |||
466 | struct task_struct *tsk; | 461 | struct task_struct *tsk; |
467 | struct address_space *mapping = page->mapping; | 462 | struct address_space *mapping = page->mapping; |
468 | 463 | ||
469 | mutex_lock(&mapping->i_mmap_mutex); | 464 | i_mmap_lock_read(mapping); |
470 | read_lock(&tasklist_lock); | 465 | read_lock(&tasklist_lock); |
471 | for_each_process(tsk) { | 466 | for_each_process(tsk) { |
472 | pgoff_t pgoff = page_to_pgoff(page); | 467 | pgoff_t pgoff = page_to_pgoff(page); |
@@ -488,7 +483,7 @@ static void collect_procs_file(struct page *page, struct list_head *to_kill, | |||
488 | } | 483 | } |
489 | } | 484 | } |
490 | read_unlock(&tasklist_lock); | 485 | read_unlock(&tasklist_lock); |
491 | mutex_unlock(&mapping->i_mmap_mutex); | 486 | i_mmap_unlock_read(mapping); |
492 | } | 487 | } |
493 | 488 | ||
494 | /* | 489 | /* |