diff options
| author | Cyrill Gorcunov <gorcunov@gmail.com> | 2013-08-13 19:00:51 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-08-13 20:57:48 -0400 |
| commit | 41bb3476b361ef38576cf9d539b19bae2ac93167 (patch) | |
| tree | 907f72f0cc27762a9cb9c2857fe6c360524112f9 /include/asm-generic/pgtable.h | |
| parent | 179ef71cbc085252e3fe6b8159263a7ed1d88ea4 (diff) | |
mm: save soft-dirty bits on file pages
Andy reported that if file page get reclaimed we lose the soft-dirty bit
if it was there, so save _PAGE_BIT_SOFT_DIRTY bit when page address get
encoded into pte entry. Thus when #pf happens on such non-present pte
we can restore it back.
Reported-by: Andy Lutomirski <luto@amacapital.net>
Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Acked-by: Pavel Emelyanov <xemul@parallels.com>
Cc: Matt Mackall <mpm@selenic.com>
Cc: Xiao Guangrong <xiaoguangrong@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Wanpeng Li <liwanp@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/asm-generic/pgtable.h')
| -rw-r--r-- | include/asm-generic/pgtable.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/include/asm-generic/pgtable.h b/include/asm-generic/pgtable.h index 2a7e0d10ad9a..0807ddf97b05 100644 --- a/include/asm-generic/pgtable.h +++ b/include/asm-generic/pgtable.h | |||
| @@ -432,6 +432,21 @@ static inline pte_t pte_swp_clear_soft_dirty(pte_t pte) | |||
| 432 | { | 432 | { |
| 433 | return pte; | 433 | return pte; |
| 434 | } | 434 | } |
| 435 | |||
| 436 | static inline pte_t pte_file_clear_soft_dirty(pte_t pte) | ||
| 437 | { | ||
| 438 | return pte; | ||
| 439 | } | ||
| 440 | |||
| 441 | static inline pte_t pte_file_mksoft_dirty(pte_t pte) | ||
| 442 | { | ||
| 443 | return pte; | ||
| 444 | } | ||
| 445 | |||
| 446 | static inline int pte_file_soft_dirty(pte_t pte) | ||
| 447 | { | ||
| 448 | return 0; | ||
| 449 | } | ||
| 435 | #endif | 450 | #endif |
| 436 | 451 | ||
| 437 | #ifndef __HAVE_PFNMAP_TRACKING | 452 | #ifndef __HAVE_PFNMAP_TRACKING |
