diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 08:41:41 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 13:07:53 -0400 |
| commit | 816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch) | |
| tree | 421fa29aedff988e392f92780637553e275d37a0 /include/linux/swapops.h | |
| parent | 70ac4385a13f78bc478f26d317511893741b05bd (diff) | |
| parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff) | |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Conflicts:
fs/nfs/inode.c
fs/super.c
Fix conflicts between patch 'NFS: Split fs/nfs/inode.c' and patch
'VFS: Permit filesystem to override root dentry on mount'
Diffstat (limited to 'include/linux/swapops.h')
| -rw-r--r-- | include/linux/swapops.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 87b9d14c710d..ec639aa3a1d3 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h | |||
| @@ -67,3 +67,56 @@ static inline pte_t swp_entry_to_pte(swp_entry_t entry) | |||
| 67 | BUG_ON(pte_file(__swp_entry_to_pte(arch_entry))); | 67 | BUG_ON(pte_file(__swp_entry_to_pte(arch_entry))); |
| 68 | return __swp_entry_to_pte(arch_entry); | 68 | return __swp_entry_to_pte(arch_entry); |
| 69 | } | 69 | } |
| 70 | |||
| 71 | #ifdef CONFIG_MIGRATION | ||
| 72 | static inline swp_entry_t make_migration_entry(struct page *page, int write) | ||
| 73 | { | ||
| 74 | BUG_ON(!PageLocked(page)); | ||
| 75 | return swp_entry(write ? SWP_MIGRATION_WRITE : SWP_MIGRATION_READ, | ||
| 76 | page_to_pfn(page)); | ||
| 77 | } | ||
| 78 | |||
| 79 | static inline int is_migration_entry(swp_entry_t entry) | ||
| 80 | { | ||
| 81 | return unlikely(swp_type(entry) == SWP_MIGRATION_READ || | ||
| 82 | swp_type(entry) == SWP_MIGRATION_WRITE); | ||
| 83 | } | ||
| 84 | |||
| 85 | static inline int is_write_migration_entry(swp_entry_t entry) | ||
| 86 | { | ||
| 87 | return unlikely(swp_type(entry) == SWP_MIGRATION_WRITE); | ||
| 88 | } | ||
| 89 | |||
| 90 | static inline struct page *migration_entry_to_page(swp_entry_t entry) | ||
| 91 | { | ||
| 92 | struct page *p = pfn_to_page(swp_offset(entry)); | ||
| 93 | /* | ||
| 94 | * Any use of migration entries may only occur while the | ||
| 95 | * corresponding page is locked | ||
| 96 | */ | ||
| 97 | BUG_ON(!PageLocked(p)); | ||
| 98 | return p; | ||
| 99 | } | ||
| 100 | |||
| 101 | static inline void make_migration_entry_read(swp_entry_t *entry) | ||
| 102 | { | ||
| 103 | *entry = swp_entry(SWP_MIGRATION_READ, swp_offset(*entry)); | ||
| 104 | } | ||
| 105 | |||
| 106 | extern void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, | ||
| 107 | unsigned long address); | ||
| 108 | #else | ||
| 109 | |||
| 110 | #define make_migration_entry(page, write) swp_entry(0, 0) | ||
| 111 | #define is_migration_entry(swp) 0 | ||
| 112 | #define migration_entry_to_page(swp) NULL | ||
| 113 | static inline void make_migration_entry_read(swp_entry_t *entryp) { } | ||
| 114 | static inline void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd, | ||
| 115 | unsigned long address) { } | ||
| 116 | static inline int is_write_migration_entry(swp_entry_t entry) | ||
| 117 | { | ||
| 118 | return 0; | ||
| 119 | } | ||
| 120 | |||
| 121 | #endif | ||
| 122 | |||
