projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
a8803e6
)
mm/huge_memory.c: reduce critical section protected by split_queue_lock
author
Wei Yang
<richardw.yang@linux.intel.com>
Fri, 31 Jan 2020 06:14:35 +0000
(22:14 -0800)
committer
Linus Torvalds
<torvalds@linux-foundation.org>
Fri, 31 Jan 2020 18:30:39 +0000
(10:30 -0800)
split_queue_lock protects data in struct deferred_split. We can release
the lock after delete the page from deferred_split_queue.
This patch moves the THP accounting out of the lock protection, which is
introduced in commit
65c453778aea
("mm, rmap: account shmem thp pages").
Link:
http://lkml.kernel.org/r/20200110025516.23996-1-richardw.yang@linux.intel.com
Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/huge_memory.c
patch
|
blob
|
history
diff --git
a/mm/huge_memory.c
b/mm/huge_memory.c
index 4439e91f8443d58652d36dbc0182c45da310f554..5b28769426399e2d77cacfe8fc4137deb6bf9626 100644
(file)
--- a/
mm/huge_memory.c
+++ b/
mm/huge_memory.c
@@
-2799,6
+2799,7
@@
int split_huge_page_to_list(struct page *page, struct list_head *list)
ds_queue->split_queue_len--;
list_del(page_deferred_list(head));
}
+ spin_unlock(&ds_queue->split_queue_lock);
if (mapping) {
if (PageSwapBacked(head))
__dec_node_page_state(head, NR_SHMEM_THPS);
@@
-2806,7
+2807,6
@@
int split_huge_page_to_list(struct page *page, struct list_head *list)
__dec_node_page_state(head, NR_FILE_THPS);
}
- spin_unlock(&ds_queue->split_queue_lock);
__split_huge_page(page, list, end, flags);
if (PageSwapCache(head)) {
swp_entry_t entry = { .val = page_private(head) };