rmap_item 123 mm/ksm.c struct rmap_item *rmap_list; rmap_item 139 mm/ksm.c struct rmap_item **rmap_list; rmap_item 196 mm/ksm.c struct rmap_item *rmap_list; rmap_item 308 mm/ksm.c rmap_item_cache = KSM_KMEM_CACHE(rmap_item, 0); rmap_item 377 mm/ksm.c static inline struct rmap_item *alloc_rmap_item(void) rmap_item 379 mm/ksm.c struct rmap_item *rmap_item; rmap_item 381 mm/ksm.c rmap_item = kmem_cache_zalloc(rmap_item_cache, GFP_KERNEL | rmap_item 383 mm/ksm.c if (rmap_item) rmap_item 385 mm/ksm.c return rmap_item; rmap_item 388 mm/ksm.c static inline void free_rmap_item(struct rmap_item *rmap_item) rmap_item 391 mm/ksm.c rmap_item->mm = NULL; /* debug safety */ rmap_item 392 mm/ksm.c kmem_cache_free(rmap_item_cache, rmap_item); rmap_item 533 mm/ksm.c static void break_cow(struct rmap_item *rmap_item) rmap_item 535 mm/ksm.c struct mm_struct *mm = rmap_item->mm; rmap_item 536 mm/ksm.c unsigned long addr = rmap_item->address; rmap_item 543 mm/ksm.c put_anon_vma(rmap_item->anon_vma); rmap_item 552 mm/ksm.c static struct page *get_mergeable_page(struct rmap_item *rmap_item) rmap_item 554 mm/ksm.c struct mm_struct *mm = rmap_item->mm; rmap_item 555 mm/ksm.c unsigned long addr = rmap_item->address; rmap_item 633 mm/ksm.c struct rmap_item *rmap_item; rmap_item 638 mm/ksm.c hlist_for_each_entry(rmap_item, &stable_node->hlist, hlist) { rmap_item 639 mm/ksm.c if (rmap_item->hlist.next) rmap_item 645 mm/ksm.c put_anon_vma(rmap_item->anon_vma); rmap_item 646 mm/ksm.c rmap_item->address &= PAGE_MASK; rmap_item 773 mm/ksm.c static void remove_rmap_item_from_tree(struct rmap_item *rmap_item) rmap_item 775 mm/ksm.c if (rmap_item->address & STABLE_FLAG) { rmap_item 779 mm/ksm.c stable_node = rmap_item->head; rmap_item 784 mm/ksm.c hlist_del(&rmap_item->hlist); rmap_item 795 mm/ksm.c put_anon_vma(rmap_item->anon_vma); rmap_item 796 mm/ksm.c rmap_item->address &= PAGE_MASK; rmap_item 798 mm/ksm.c } else if (rmap_item->address & UNSTABLE_FLAG) { rmap_item 807 mm/ksm.c age = (unsigned char)(ksm_scan.seqnr - rmap_item->address); rmap_item 810 mm/ksm.c rb_erase(&rmap_item->node, rmap_item 811 mm/ksm.c root_unstable_tree + NUMA(rmap_item->nid)); rmap_item 813 mm/ksm.c rmap_item->address &= PAGE_MASK; rmap_item 820 mm/ksm.c struct rmap_item **rmap_list) rmap_item 823 mm/ksm.c struct rmap_item *rmap_item = *rmap_list; rmap_item 824 mm/ksm.c *rmap_list = rmap_item->rmap_list; rmap_item 825 mm/ksm.c remove_rmap_item_from_tree(rmap_item); rmap_item 826 mm/ksm.c free_rmap_item(rmap_item); rmap_item 1276 mm/ksm.c static int try_to_merge_with_ksm_page(struct rmap_item *rmap_item, rmap_item 1279 mm/ksm.c struct mm_struct *mm = rmap_item->mm; rmap_item 1284 mm/ksm.c vma = find_mergeable_vma(mm, rmap_item->address); rmap_item 1293 mm/ksm.c remove_rmap_item_from_tree(rmap_item); rmap_item 1296 mm/ksm.c rmap_item->anon_vma = vma->anon_vma; rmap_item 1313 mm/ksm.c static struct page *try_to_merge_two_pages(struct rmap_item *rmap_item, rmap_item 1315 mm/ksm.c struct rmap_item *tree_rmap_item, rmap_item 1320 mm/ksm.c err = try_to_merge_with_ksm_page(rmap_item, page, NULL); rmap_item 1329 mm/ksm.c break_cow(rmap_item); rmap_item 1923 mm/ksm.c struct rmap_item *unstable_tree_search_insert(struct rmap_item *rmap_item, rmap_item 1937 mm/ksm.c struct rmap_item *tree_rmap_item; rmap_item 1942 mm/ksm.c tree_rmap_item = rb_entry(*new, struct rmap_item, node); rmap_item 1979 mm/ksm.c rmap_item->address |= UNSTABLE_FLAG; rmap_item 1980 mm/ksm.c rmap_item->address |= (ksm_scan.seqnr & SEQNR_MASK); rmap_item 1981 mm/ksm.c DO_NUMA(rmap_item->nid = nid); rmap_item 1982 mm/ksm.c rb_link_node(&rmap_item->node, parent, new); rmap_item 1983 mm/ksm.c rb_insert_color(&rmap_item->node, root); rmap_item 1994 mm/ksm.c static void stable_tree_append(struct rmap_item *rmap_item, rmap_item 2016 mm/ksm.c rmap_item->head = stable_node; rmap_item 2017 mm/ksm.c rmap_item->address |= STABLE_FLAG; rmap_item 2018 mm/ksm.c hlist_add_head(&rmap_item->hlist, &stable_node->hlist); rmap_item 2020 mm/ksm.c if (rmap_item->hlist.next) rmap_item 2035 mm/ksm.c static void cmp_and_merge_page(struct page *page, struct rmap_item *rmap_item) rmap_item 2037 mm/ksm.c struct mm_struct *mm = rmap_item->mm; rmap_item 2038 mm/ksm.c struct rmap_item *tree_rmap_item; rmap_item 2056 mm/ksm.c rmap_item->head == stable_node) rmap_item 2068 mm/ksm.c if (kpage == page && rmap_item->head == stable_node) { rmap_item 2073 mm/ksm.c remove_rmap_item_from_tree(rmap_item); rmap_item 2079 mm/ksm.c err = try_to_merge_with_ksm_page(rmap_item, page, kpage); rmap_item 2086 mm/ksm.c stable_tree_append(rmap_item, page_stable_node(kpage), rmap_item 2101 mm/ksm.c if (rmap_item->oldchecksum != checksum) { rmap_item 2102 mm/ksm.c rmap_item->oldchecksum = checksum; rmap_item 2114 mm/ksm.c vma = find_mergeable_vma(mm, rmap_item->address); rmap_item 2117 mm/ksm.c ZERO_PAGE(rmap_item->address)); rmap_item 2134 mm/ksm.c unstable_tree_search_insert(rmap_item, page, &tree_page); rmap_item 2138 mm/ksm.c kpage = try_to_merge_two_pages(rmap_item, page, rmap_item 2163 mm/ksm.c stable_tree_append(rmap_item, stable_node, rmap_item 2176 mm/ksm.c break_cow(rmap_item); rmap_item 2196 mm/ksm.c static struct rmap_item *get_next_rmap_item(struct mm_slot *mm_slot, rmap_item 2197 mm/ksm.c struct rmap_item **rmap_list, rmap_item 2200 mm/ksm.c struct rmap_item *rmap_item; rmap_item 2203 mm/ksm.c rmap_item = *rmap_list; rmap_item 2204 mm/ksm.c if ((rmap_item->address & PAGE_MASK) == addr) rmap_item 2205 mm/ksm.c return rmap_item; rmap_item 2206 mm/ksm.c if (rmap_item->address > addr) rmap_item 2208 mm/ksm.c *rmap_list = rmap_item->rmap_list; rmap_item 2209 mm/ksm.c remove_rmap_item_from_tree(rmap_item); rmap_item 2210 mm/ksm.c free_rmap_item(rmap_item); rmap_item 2213 mm/ksm.c rmap_item = alloc_rmap_item(); rmap_item 2214 mm/ksm.c if (rmap_item) { rmap_item 2216 mm/ksm.c rmap_item->mm = mm_slot->mm; rmap_item 2217 mm/ksm.c rmap_item->address = addr; rmap_item 2218 mm/ksm.c rmap_item->rmap_list = *rmap_list; rmap_item 2219 mm/ksm.c *rmap_list = rmap_item; rmap_item 2221 mm/ksm.c return rmap_item; rmap_item 2224 mm/ksm.c static struct rmap_item *scan_get_next_rmap_item(struct page **page) rmap_item 2229 mm/ksm.c struct rmap_item *rmap_item; rmap_item 2314 mm/ksm.c rmap_item = get_next_rmap_item(slot, rmap_item 2316 mm/ksm.c if (rmap_item) { rmap_item 2318 mm/ksm.c &rmap_item->rmap_list; rmap_item 2323 mm/ksm.c return rmap_item; rmap_item 2389 mm/ksm.c struct rmap_item *rmap_item; rmap_item 2394 mm/ksm.c rmap_item = scan_get_next_rmap_item(&page); rmap_item 2395 mm/ksm.c if (!rmap_item) rmap_item 2397 mm/ksm.c cmp_and_merge_page(page, rmap_item); rmap_item 2601 mm/ksm.c struct rmap_item *rmap_item; rmap_item 2616 mm/ksm.c hlist_for_each_entry(rmap_item, &stable_node->hlist, hlist) { rmap_item 2617 mm/ksm.c struct anon_vma *anon_vma = rmap_item->anon_vma; rmap_item 2631 mm/ksm.c addr = rmap_item->address & ~KSM_FLAG_MASK; rmap_item 2641 mm/ksm.c if ((rmap_item->mm == vma->vm_mm) == search_new_forks)