Lines Matching refs:rn
11 * represented by struct range_node or 'rn' for short.
12 * rn->rn_rbnode links it into an interval tree while
13 * rn->rb_range_size links it into a second rbtree sorted by size of the range.
49 static u32 rn_size(struct range_node *rn)
51 return rn->rn_last - rn->rn_start + 1;
61 struct range_node *rn = rb_to_range_node(rb);
63 if (len <= rn_size(rn)) {
64 best = rn;
76 struct range_node *rn;
78 rn = __find_range(rt, len);
79 if (!rn)
81 return rn->rn_start;
85 static inline void __range_size_insert(struct range_node *rn,
89 u64 size = rn_size(rn);
102 rb_link_node(&rn->rb_range_size, rb, link);
103 rb_insert_color_cached(&rn->rb_range_size, root, leftmost);
115 range_it_insert(struct range_node *rn, struct range_tree *rt)
117 __range_size_insert(rn, &rt->range_size_root);
118 __range_it_insert(rn, &rt->it_root);
122 range_it_remove(struct range_node *rn, struct range_tree *rt)
124 rb_erase_cached(&rn->rb_range_size, &rt->range_size_root);
125 RB_CLEAR_NODE(&rn->rb_range_size);
126 __range_it_remove(rn, &rt->it_root);
140 struct range_node *rn;
142 while ((rn = range_it_iter_first(rt, start, last))) {
143 if (rn->rn_start < start && rn->rn_last > last) {
144 u32 old_last = rn->rn_last;
147 range_it_remove(rn, rt);
148 rn->rn_last = start - 1;
149 range_it_insert(rn, rt);
158 } else if (rn->rn_start < start) {
160 range_it_remove(rn, rt);
161 rn->rn_last = start - 1;
162 range_it_insert(rn, rt);
163 } else if (rn->rn_last > last) {
165 range_it_remove(rn, rt);
166 rn->rn_start = last + 1;
167 range_it_insert(rn, rt);
171 range_it_remove(rn, rt);
172 kfree_nolock(rn);
249 struct range_node *rn;
251 while ((rn = range_it_iter_first(rt, 0, -1U))) {
252 range_it_remove(rn, rt);
253 kfree_nolock(rn);