Lines Matching refs:objcg

257 	struct obj_cgroup *objcg = container_of(ref, struct obj_cgroup, refcnt);  in obj_cgroup_release()  local
283 nr_bytes = atomic_read(&objcg->nr_charged_bytes); in obj_cgroup_release()
288 memcg = obj_cgroup_memcg(objcg); in obj_cgroup_release()
291 list_del(&objcg->list); in obj_cgroup_release()
296 kfree_rcu(objcg, rcu); in obj_cgroup_release()
301 struct obj_cgroup *objcg; in obj_cgroup_alloc() local
304 objcg = kzalloc(sizeof(struct obj_cgroup), GFP_KERNEL); in obj_cgroup_alloc()
305 if (!objcg) in obj_cgroup_alloc()
308 ret = percpu_ref_init(&objcg->refcnt, obj_cgroup_release, 0, in obj_cgroup_alloc()
311 kfree(objcg); in obj_cgroup_alloc()
314 INIT_LIST_HEAD(&objcg->list); in obj_cgroup_alloc()
315 return objcg; in obj_cgroup_alloc()
321 struct obj_cgroup *objcg, *iter; in memcg_reparent_objcgs() local
323 objcg = rcu_replace_pointer(memcg->objcg, NULL, true); in memcg_reparent_objcgs()
328 xchg(&objcg->memcg, parent); in memcg_reparent_objcgs()
330 list_add(&objcg->list, &parent->objcg_list); in memcg_reparent_objcgs()
342 percpu_ref_kill(&objcg->refcnt); in memcg_reparent_objcgs()
2957 struct obj_cgroup *objcg; in mem_cgroup_from_obj() local
2961 objcg = page_obj_cgroups(page)[off]; in mem_cgroup_from_obj()
2962 if (objcg) in mem_cgroup_from_obj()
2963 return obj_cgroup_memcg(objcg); in mem_cgroup_from_obj()
2974 struct obj_cgroup *objcg = NULL; in get_obj_cgroup_from_current() local
2987 objcg = rcu_dereference(memcg->objcg); in get_obj_cgroup_from_current()
2988 if (objcg && obj_cgroup_tryget(objcg)) in get_obj_cgroup_from_current()
2993 return objcg; in get_obj_cgroup_from_current()
3139 static bool consume_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) in consume_obj_stock() argument
3148 if (objcg == stock->cached_objcg && stock->nr_bytes >= nr_bytes) { in consume_obj_stock()
3207 static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes) in refill_obj_stock() argument
3215 if (stock->cached_objcg != objcg) { /* reset if necessary */ in refill_obj_stock()
3217 obj_cgroup_get(objcg); in refill_obj_stock()
3218 stock->cached_objcg = objcg; in refill_obj_stock()
3219 stock->nr_bytes = atomic_xchg(&objcg->nr_charged_bytes, 0); in refill_obj_stock()
3229 int obj_cgroup_charge(struct obj_cgroup *objcg, gfp_t gfp, size_t size) in obj_cgroup_charge() argument
3235 if (consume_obj_stock(objcg, size)) in obj_cgroup_charge()
3249 memcg = obj_cgroup_memcg(objcg); in obj_cgroup_charge()
3261 refill_obj_stock(objcg, PAGE_SIZE - nr_bytes); in obj_cgroup_charge()
3267 void obj_cgroup_uncharge(struct obj_cgroup *objcg, size_t size) in obj_cgroup_uncharge() argument
3269 refill_obj_stock(objcg, size); in obj_cgroup_uncharge()
3692 struct obj_cgroup *objcg; in memcg_online_kmem() local
3705 objcg = obj_cgroup_alloc(); in memcg_online_kmem()
3706 if (!objcg) { in memcg_online_kmem()
3710 objcg->memcg = memcg; in memcg_online_kmem()
3711 rcu_assign_pointer(memcg->objcg, objcg); in memcg_online_kmem()