diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 20:54:03 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-21 20:54:03 -0500 |
commit | 81ec44a6c69342fec1b1140c60a604027e429f69 (patch) | |
tree | ee6bec8a94ef28e111bf766cf4b7a9366cb4f7c1 /mm | |
parent | 48a732dfaa77a4dfec803aa8f248373998704f76 (diff) | |
parent | e80cfc31d872b6b85b8966bce6ba80bee401a7dd (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 update from Martin Schwidefsky:
"The most prominent change in this patch set is the software dirty bit
patch for s390. It removes __HAVE_ARCH_PAGE_TEST_AND_CLEAR_DIRTY and
the page_test_and_clear_dirty primitive which makes the common memory
management code a bit less obscure.
Heiko fixed most of the PCI related fallout, more often than not
missing GENERIC_HARDIRQS dependencies. Notable is one of the 3270
patches which adds an export to tty_io to be able to resize a tty.
The rest is the usual bunch of cleanups and bug fixes."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (42 commits)
s390/module: Add missing R_390_NONE relocation type
drivers/gpio: add missing GENERIC_HARDIRQ dependency
drivers/input: add couple of missing GENERIC_HARDIRQS dependencies
s390/cleanup: rename SPP to LPP
s390/mm: implement software dirty bits
s390/mm: Fix crst upgrade of mmap with MAP_FIXED
s390/linker skript: discard exit.data at runtime
drivers/media: add missing GENERIC_HARDIRQS dependency
s390/bpf,jit: add vlan tag support
drivers/net,AT91RM9200: add missing GENERIC_HARDIRQS dependency
iucv: fix kernel panic at reboot
s390/Kconfig: sort list of arch selected config options
phylib: remove !S390 dependeny from Kconfig
uio: remove !S390 dependency from Kconfig
dasd: fix sysfs cleanup in dasd_generic_remove
s390/pci: fix hotplug module init
s390/pci: cleanup clp page allocation
s390/pci: cleanup clp inline assembly
s390/perf: cpum_cf: fallback to software sampling events
s390/mm: provide PAGE_SHARED define
...
Diffstat (limited to 'mm')
-rw-r--r-- | mm/rmap.c | 24 |
1 files changed, 0 insertions, 24 deletions
@@ -1126,7 +1126,6 @@ void page_add_file_rmap(struct page *page) | |||
1126 | */ | 1126 | */ |
1127 | void page_remove_rmap(struct page *page) | 1127 | void page_remove_rmap(struct page *page) |
1128 | { | 1128 | { |
1129 | struct address_space *mapping = page_mapping(page); | ||
1130 | bool anon = PageAnon(page); | 1129 | bool anon = PageAnon(page); |
1131 | bool locked; | 1130 | bool locked; |
1132 | unsigned long flags; | 1131 | unsigned long flags; |
@@ -1144,29 +1143,6 @@ void page_remove_rmap(struct page *page) | |||
1144 | goto out; | 1143 | goto out; |
1145 | 1144 | ||
1146 | /* | 1145 | /* |
1147 | * Now that the last pte has gone, s390 must transfer dirty | ||
1148 | * flag from storage key to struct page. We can usually skip | ||
1149 | * this if the page is anon, so about to be freed; but perhaps | ||
1150 | * not if it's in swapcache - there might be another pte slot | ||
1151 | * containing the swap entry, but page not yet written to swap. | ||
1152 | * | ||
1153 | * And we can skip it on file pages, so long as the filesystem | ||
1154 | * participates in dirty tracking (note that this is not only an | ||
1155 | * optimization but also solves problems caused by dirty flag in | ||
1156 | * storage key getting set by a write from inside kernel); but need to | ||
1157 | * catch shm and tmpfs and ramfs pages which have been modified since | ||
1158 | * creation by read fault. | ||
1159 | * | ||
1160 | * Note that mapping must be decided above, before decrementing | ||
1161 | * mapcount (which luckily provides a barrier): once page is unmapped, | ||
1162 | * it could be truncated and page->mapping reset to NULL at any moment. | ||
1163 | * Note also that we are relying on page_mapping(page) to set mapping | ||
1164 | * to &swapper_space when PageSwapCache(page). | ||
1165 | */ | ||
1166 | if (mapping && !mapping_cap_account_dirty(mapping) && | ||
1167 | page_test_and_clear_dirty(page_to_pfn(page), 1)) | ||
1168 | set_page_dirty(page); | ||
1169 | /* | ||
1170 | * Hugepages are not counted in NR_ANON_PAGES nor NR_FILE_MAPPED | 1146 | * Hugepages are not counted in NR_ANON_PAGES nor NR_FILE_MAPPED |
1171 | * and not charged by memcg for now. | 1147 | * and not charged by memcg for now. |
1172 | */ | 1148 | */ |