Lines Matching defs:rel

53 static void devlink_rel_free(struct devlink_rel *rel)
55 xa_erase(&devlink_rels, rel->index);
56 kfree(rel);
59 static void __devlink_rel_get(struct devlink_rel *rel)
61 refcount_inc(&rel->refcount);
64 static void __devlink_rel_put(struct devlink_rel *rel)
66 if (refcount_dec_and_test(&rel->refcount))
67 devlink_rel_free(rel);
72 struct devlink_rel *rel = container_of(work, struct devlink_rel,
76 devlink = devlinks_xa_get(rel->nested_in.devlink_index);
88 if (!xa_get_mark(&devlink_rels, rel->index, DEVLINK_REL_IN_USE))
89 rel->nested_in.cleanup_cb(devlink, rel->nested_in.obj_index, rel->index);
90 rel->nested_in.notify_cb(devlink, rel->nested_in.obj_index);
95 __devlink_rel_put(rel);
99 schedule_delayed_work(&rel->nested_in.notify_work, 1);
102 static void devlink_rel_nested_in_notify_work_schedule(struct devlink_rel *rel)
104 __devlink_rel_get(rel);
105 schedule_delayed_work(&rel->nested_in.notify_work, 0);
110 struct devlink_rel *rel;
114 rel = kzalloc(sizeof(*rel), GFP_KERNEL);
115 if (!rel)
118 err = xa_alloc_cyclic(&devlink_rels, &rel->index, rel,
121 kfree(rel);
125 refcount_set(&rel->refcount, 1);
126 INIT_DELAYED_WORK(&rel->nested_in.notify_work,
128 return rel;
133 struct devlink_rel *rel = devlink->rel;
135 if (!rel)
137 xa_clear_mark(&devlink_rels, rel->index, DEVLINK_REL_IN_USE);
138 devlink_rel_nested_in_notify_work_schedule(rel);
139 __devlink_rel_put(rel);
140 devlink->rel = NULL;
153 struct devlink_rel *rel = devlink_rel_alloc();
157 if (IS_ERR(rel))
158 return PTR_ERR(rel);
160 rel->devlink_index = devlink->index;
161 rel->nested_in.devlink_index = devlink_index;
162 rel->nested_in.obj_index = obj_index;
163 rel->nested_in.notify_cb = notify_cb;
164 rel->nested_in.cleanup_cb = cleanup_cb;
165 *rel_index = rel->index;
166 xa_set_mark(&devlink_rels, rel->index, DEVLINK_REL_IN_USE);
167 devlink->rel = rel;
187 struct devlink_rel *rel = devlink->rel;
189 if (!rel)
191 devlink_rel_nested_in_notify_work_schedule(rel);
202 struct devlink_rel *rel;
208 rel = devlink_rel_find(rel_index);
209 if (rel)
210 devlink_index = rel->devlink_index;
212 if (!rel)