Lines Matching refs:region
63 struct dmem_cgroup_region *region; member
137 kref_put(&pool->region->ref, dmemcg_free_region); in dmemcg_pool_free_rcu()
234 find_cg_pool_locked(struct dmemcg_state *dmemcs, struct dmem_cgroup_region *region) in find_cg_pool_locked() argument
239 if (pool->region == region) in find_cg_pool_locked()
271 if (pool->region == limit_pool->region) { in dmem_cgroup_calculate_protection()
355 alloc_pool_single(struct dmemcg_state *dmemcs, struct dmem_cgroup_region *region, in alloc_pool_single() argument
370 pool->region = region; in alloc_pool_single()
374 ppool = find_cg_pool_locked(parent, region); in alloc_pool_single()
380 kref_get(®ion->ref); in alloc_pool_single()
387 list_add_tail(&pool->region_node, ®ion->pools); in alloc_pool_single()
397 get_cg_pool_locked(struct dmemcg_state *dmemcs, struct dmem_cgroup_region *region, in get_cg_pool_locked() argument
408 pool = find_cg_pool_locked(p, region); in get_cg_pool_locked()
410 pool = alloc_pool_single(p, region, allocpool); in get_cg_pool_locked()
422 retpool = pool = find_cg_pool_locked(dmemcs, region); in get_cg_pool_locked()
428 ppool = find_cg_pool_locked(pp, region); in get_cg_pool_locked()
446 struct dmem_cgroup_region *region = container_of(rcu, typeof(*region), rcu); in dmemcg_free_rcu() local
449 list_for_each_entry_safe(pool, next, ®ion->pools, region_node) in dmemcg_free_rcu()
451 kfree(region->name); in dmemcg_free_rcu()
452 kfree(region); in dmemcg_free_rcu()
468 void dmem_cgroup_unregister_region(struct dmem_cgroup_region *region) in dmem_cgroup_unregister_region() argument
472 if (!region) in dmem_cgroup_unregister_region()
478 list_del_rcu(®ion->region_node); in dmem_cgroup_unregister_region()
480 list_for_each_entry_safe(pool, next, ®ion->pools, region_node) { in dmem_cgroup_unregister_region()
491 region->unregistered = true; in dmem_cgroup_unregister_region()
494 kref_put(®ion->ref, dmemcg_free_region); in dmem_cgroup_unregister_region()
545 struct dmem_cgroup_region *region; in dmemcg_get_region_by_name() local
547 list_for_each_entry_rcu(region, &dmem_cgroup_regions, region_node, spin_is_locked(&dmemcg_lock)) in dmemcg_get_region_by_name()
548 if (!strcmp(name, region->name) && in dmemcg_get_region_by_name()
549 kref_get_unless_zero(®ion->ref)) in dmemcg_get_region_by_name()
550 return region; in dmemcg_get_region_by_name()
572 get_cg_pool_unlocked(struct dmemcg_state *cg, struct dmem_cgroup_region *region) in get_cg_pool_unlocked() argument
578 pool = find_cg_pool_locked(cg, region); in get_cg_pool_unlocked()
587 if (!region->unregistered) in get_cg_pool_unlocked()
588 pool = get_cg_pool_locked(cg, region, &allocpool); in get_cg_pool_unlocked()
651 int dmem_cgroup_try_charge(struct dmem_cgroup_region *region, u64 size, in dmem_cgroup_try_charge() argument
670 pool = get_cg_pool_unlocked(cg, region); in dmem_cgroup_try_charge()
699 struct dmem_cgroup_region *region; in dmem_cgroup_region_capacity_show() local
702 list_for_each_entry_rcu(region, &dmem_cgroup_regions, region_node) { in dmem_cgroup_region_capacity_show()
703 seq_puts(sf, region->name); in dmem_cgroup_region_capacity_show()
704 seq_printf(sf, " %llu\n", region->size); in dmem_cgroup_region_capacity_show()
710 static int dmemcg_parse_limit(char *options, struct dmem_cgroup_region *region, in dmemcg_parse_limit() argument
737 struct dmem_cgroup_region *region; in dmemcg_limit_write() local
759 region = dmemcg_get_region_by_name(region_name); in dmemcg_limit_write()
762 if (!region) in dmemcg_limit_write()
765 err = dmemcg_parse_limit(options, region, &new_limit); in dmemcg_limit_write()
769 pool = get_cg_pool_unlocked(dmemcs, region); in dmemcg_limit_write()
780 kref_put(®ion->ref, dmemcg_free_region); in dmemcg_limit_write()
791 struct dmem_cgroup_region *region; in dmemcg_limit_show() local
794 list_for_each_entry_rcu(region, &dmem_cgroup_regions, region_node) { in dmemcg_limit_show()
795 struct dmem_cgroup_pool_state *pool = find_cg_pool_locked(dmemcs, region); in dmemcg_limit_show()
798 seq_puts(sf, region->name); in dmemcg_limit_show()