Lines Matching refs:objagg_hints
15 struct objagg_hints { struct
35 objagg_hints_lookup(struct objagg_hints *objagg_hints, void *obj) in objagg_hints_lookup() argument
37 if (!objagg_hints) in objagg_hints_lookup()
39 return rhashtable_lookup_fast(&objagg_hints->node_ht, obj, in objagg_hints_lookup()
40 objagg_hints->ht_params); in objagg_hints_lookup()
51 struct objagg_hints *hints;
518 struct objagg_hints *objagg_hints, void *priv) in objagg_create() argument
532 if (objagg_hints) { in objagg_create()
533 objagg->hints = objagg_hints; in objagg_create()
534 objagg_hints->refcount++; in objagg_create()
652 objagg_hints_node_create(struct objagg_hints *objagg_hints, in objagg_hints_node_create() argument
669 hnode->root_id = objagg_hints->root_count++; in objagg_hints_node_create()
674 err = rhashtable_insert_fast(&objagg_hints->node_ht, &hnode->ht_node, in objagg_hints_node_create()
675 objagg_hints->ht_params); in objagg_hints_node_create()
679 list_add(&hnode->list, &objagg_hints->node_list); in objagg_hints_node_create()
681 objagg_hints->node_count++; in objagg_hints_node_create()
690 static void objagg_hints_flush(struct objagg_hints *objagg_hints) in objagg_hints_flush() argument
694 list_for_each_entry_safe(hnode, tmp, &objagg_hints->node_list, list) { in objagg_hints_flush()
696 rhashtable_remove_fast(&objagg_hints->node_ht, &hnode->ht_node, in objagg_hints_flush()
697 objagg_hints->ht_params); in objagg_hints_flush()
842 objagg_opt_simple_greedy_fillup_hints(struct objagg_hints *objagg_hints, in objagg_opt_simple_greedy_fillup_hints() argument
862 hnode = objagg_hints_node_create(objagg_hints, in objagg_opt_simple_greedy_fillup_hints()
878 hnode = objagg_hints_node_create(objagg_hints, in objagg_opt_simple_greedy_fillup_hints()
896 int (*fillup_hints)(struct objagg_hints *objagg_hints,
926 struct objagg_hints *objagg_hints_get(struct objagg *objagg, in objagg_hints_get()
930 struct objagg_hints *objagg_hints; in objagg_hints_get() local
933 objagg_hints = kzalloc(sizeof(*objagg_hints), GFP_KERNEL); in objagg_hints_get()
934 if (!objagg_hints) in objagg_hints_get()
937 objagg_hints->ops = objagg->ops; in objagg_hints_get()
938 objagg_hints->refcount = 1; in objagg_hints_get()
940 INIT_LIST_HEAD(&objagg_hints->node_list); in objagg_hints_get()
942 objagg_hints->ht_params.key_len = objagg->ops->obj_size; in objagg_hints_get()
943 objagg_hints->ht_params.key_offset = in objagg_hints_get()
945 objagg_hints->ht_params.head_offset = in objagg_hints_get()
948 err = rhashtable_init(&objagg_hints->node_ht, &objagg_hints->ht_params); in objagg_hints_get()
952 err = algo->fillup_hints(objagg_hints, objagg); in objagg_hints_get()
956 if (WARN_ON(objagg_hints->node_count != objagg->obj_count)) { in objagg_hints_get()
961 return objagg_hints; in objagg_hints_get()
965 objagg_hints_flush(objagg_hints); in objagg_hints_get()
966 rhashtable_destroy(&objagg_hints->node_ht); in objagg_hints_get()
968 kfree(objagg_hints); in objagg_hints_get()
979 void objagg_hints_put(struct objagg_hints *objagg_hints) in objagg_hints_put() argument
981 if (--objagg_hints->refcount) in objagg_hints_put()
983 objagg_hints_flush(objagg_hints); in objagg_hints_put()
984 rhashtable_destroy(&objagg_hints->node_ht); in objagg_hints_put()
985 kfree(objagg_hints); in objagg_hints_put()
1007 objagg_hints_stats_get(struct objagg_hints *objagg_hints) in objagg_hints_stats_get() argument
1014 objagg_hints->node_count), in objagg_hints_stats_get()
1020 list_for_each_entry(hnode, &objagg_hints->node_list, list) { in objagg_hints_stats_get()