Lines Matching refs:entry
221 struct zswap_entry *entry; in zswap_entry_cache_alloc() local
222 entry = kmem_cache_alloc(zswap_entry_cache, gfp); in zswap_entry_cache_alloc()
223 if (!entry) in zswap_entry_cache_alloc()
225 entry->refcount = 1; in zswap_entry_cache_alloc()
226 RB_CLEAR_NODE(&entry->rbnode); in zswap_entry_cache_alloc()
227 return entry; in zswap_entry_cache_alloc()
230 static void zswap_entry_cache_free(struct zswap_entry *entry) in zswap_entry_cache_free() argument
232 kmem_cache_free(zswap_entry_cache, entry); in zswap_entry_cache_free()
241 struct zswap_entry *entry; in zswap_rb_search() local
244 entry = rb_entry(node, struct zswap_entry, rbnode); in zswap_rb_search()
245 if (entry->offset > offset) in zswap_rb_search()
247 else if (entry->offset < offset) in zswap_rb_search()
250 return entry; in zswap_rb_search()
259 static int zswap_rb_insert(struct rb_root *root, struct zswap_entry *entry, in zswap_rb_insert() argument
268 if (myentry->offset > entry->offset) in zswap_rb_insert()
270 else if (myentry->offset < entry->offset) in zswap_rb_insert()
277 rb_link_node(&entry->rbnode, parent, link); in zswap_rb_insert()
278 rb_insert_color(&entry->rbnode, root); in zswap_rb_insert()
282 static void zswap_rb_erase(struct rb_root *root, struct zswap_entry *entry) in zswap_rb_erase() argument
284 if (!RB_EMPTY_NODE(&entry->rbnode)) { in zswap_rb_erase()
285 rb_erase(&entry->rbnode, root); in zswap_rb_erase()
286 RB_CLEAR_NODE(&entry->rbnode); in zswap_rb_erase()
294 static void zswap_free_entry(struct zswap_entry *entry) in zswap_free_entry() argument
296 zpool_free(zswap_pool, entry->handle); in zswap_free_entry()
297 zswap_entry_cache_free(entry); in zswap_free_entry()
303 static void zswap_entry_get(struct zswap_entry *entry) in zswap_entry_get() argument
305 entry->refcount++; in zswap_entry_get()
312 struct zswap_entry *entry) in zswap_entry_put() argument
314 int refcount = --entry->refcount; in zswap_entry_put()
318 zswap_rb_erase(&tree->rbroot, entry); in zswap_entry_put()
319 zswap_free_entry(entry); in zswap_entry_put()
327 struct zswap_entry *entry = NULL; in zswap_entry_find_get() local
329 entry = zswap_rb_search(root, offset); in zswap_entry_find_get()
330 if (entry) in zswap_entry_find_get()
331 zswap_entry_get(entry); in zswap_entry_find_get()
333 return entry; in zswap_entry_find_get()
445 static int zswap_get_swap_cache_page(swp_entry_t entry, in zswap_get_swap_cache_page() argument
449 struct address_space *swapper_space = swap_address_space(entry); in zswap_get_swap_cache_page()
459 found_page = find_get_page(swapper_space, entry.val); in zswap_get_swap_cache_page()
482 err = swapcache_prepare(entry); in zswap_get_swap_cache_page()
495 err = __add_to_swap_cache(new_page, entry); in zswap_get_swap_cache_page()
509 swapcache_free(entry); in zswap_get_swap_cache_page()
538 struct zswap_entry *entry; in zswap_writeback_entry() local
556 entry = zswap_entry_find_get(&tree->rbroot, offset); in zswap_writeback_entry()
557 if (!entry) { in zswap_writeback_entry()
563 BUG_ON(offset != entry->offset); in zswap_writeback_entry()
580 src = (u8 *)zpool_map_handle(zswap_pool, entry->handle, in zswap_writeback_entry()
584 entry->length, dst, &dlen); in zswap_writeback_entry()
586 zpool_unmap_handle(zswap_pool, entry->handle); in zswap_writeback_entry()
604 zswap_entry_put(tree, entry); in zswap_writeback_entry()
613 if (entry == zswap_rb_search(&tree->rbroot, offset)) in zswap_writeback_entry()
614 zswap_entry_put(tree, entry); in zswap_writeback_entry()
628 zswap_entry_put(tree, entry); in zswap_writeback_entry()
643 struct zswap_entry *entry, *dupentry; in zswap_frontswap_store() local
667 entry = zswap_entry_cache_alloc(GFP_KERNEL); in zswap_frontswap_store()
668 if (!entry) { in zswap_frontswap_store()
704 entry->offset = offset; in zswap_frontswap_store()
705 entry->handle = handle; in zswap_frontswap_store()
706 entry->length = dlen; in zswap_frontswap_store()
711 ret = zswap_rb_insert(&tree->rbroot, entry, &dupentry); in zswap_frontswap_store()
729 zswap_entry_cache_free(entry); in zswap_frontswap_store()
742 struct zswap_entry *entry; in zswap_frontswap_load() local
749 entry = zswap_entry_find_get(&tree->rbroot, offset); in zswap_frontswap_load()
750 if (!entry) { in zswap_frontswap_load()
759 src = (u8 *)zpool_map_handle(zswap_pool, entry->handle, in zswap_frontswap_load()
762 ret = zswap_comp_op(ZSWAP_COMPOP_DECOMPRESS, src, entry->length, in zswap_frontswap_load()
765 zpool_unmap_handle(zswap_pool, entry->handle); in zswap_frontswap_load()
769 zswap_entry_put(tree, entry); in zswap_frontswap_load()
779 struct zswap_entry *entry; in zswap_frontswap_invalidate_page() local
783 entry = zswap_rb_search(&tree->rbroot, offset); in zswap_frontswap_invalidate_page()
784 if (!entry) { in zswap_frontswap_invalidate_page()
791 zswap_rb_erase(&tree->rbroot, entry); in zswap_frontswap_invalidate_page()
794 zswap_entry_put(tree, entry); in zswap_frontswap_invalidate_page()
803 struct zswap_entry *entry, *n; in zswap_frontswap_invalidate_area() local
810 rbtree_postorder_for_each_entry_safe(entry, n, &tree->rbroot, rbnode) in zswap_frontswap_invalidate_area()
811 zswap_free_entry(entry); in zswap_frontswap_invalidate_area()