Lines Matching refs:le

103 		struct ubi_ltree_entry *le;  in ltree_lookup()  local
105 le = rb_entry(p, struct ubi_ltree_entry, rb); in ltree_lookup()
107 if (vol_id < le->vol_id) in ltree_lookup()
109 else if (vol_id > le->vol_id) in ltree_lookup()
112 if (lnum < le->lnum) in ltree_lookup()
114 else if (lnum > le->lnum) in ltree_lookup()
117 return le; in ltree_lookup()
138 struct ubi_ltree_entry *le, *le1, *le_free; in ltree_add_entry() local
140 le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS); in ltree_add_entry()
141 if (!le) in ltree_add_entry()
144 le->users = 0; in ltree_add_entry()
145 init_rwsem(&le->mutex); in ltree_add_entry()
146 le->vol_id = vol_id; in ltree_add_entry()
147 le->lnum = lnum; in ltree_add_entry()
157 le_free = le; in ltree_add_entry()
158 le = le1; in ltree_add_entry()
186 rb_link_node(&le->rb, parent, p); in ltree_add_entry()
187 rb_insert_color(&le->rb, &ubi->ltree); in ltree_add_entry()
189 le->users += 1; in ltree_add_entry()
193 return le; in ltree_add_entry()
207 struct ubi_ltree_entry *le; in leb_read_lock() local
209 le = ltree_add_entry(ubi, vol_id, lnum); in leb_read_lock()
210 if (IS_ERR(le)) in leb_read_lock()
211 return PTR_ERR(le); in leb_read_lock()
212 down_read(&le->mutex); in leb_read_lock()
224 struct ubi_ltree_entry *le; in leb_read_unlock() local
227 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
228 le->users -= 1; in leb_read_unlock()
229 ubi_assert(le->users >= 0); in leb_read_unlock()
230 up_read(&le->mutex); in leb_read_unlock()
231 if (le->users == 0) { in leb_read_unlock()
232 rb_erase(&le->rb, &ubi->ltree); in leb_read_unlock()
233 kfree(le); in leb_read_unlock()
249 struct ubi_ltree_entry *le; in leb_write_lock() local
251 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_lock()
252 if (IS_ERR(le)) in leb_write_lock()
253 return PTR_ERR(le); in leb_write_lock()
254 down_write(&le->mutex); in leb_write_lock()
271 struct ubi_ltree_entry *le; in leb_write_trylock() local
273 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_trylock()
274 if (IS_ERR(le)) in leb_write_trylock()
275 return PTR_ERR(le); in leb_write_trylock()
276 if (down_write_trylock(&le->mutex)) in leb_write_trylock()
281 le->users -= 1; in leb_write_trylock()
282 ubi_assert(le->users >= 0); in leb_write_trylock()
283 if (le->users == 0) { in leb_write_trylock()
284 rb_erase(&le->rb, &ubi->ltree); in leb_write_trylock()
285 kfree(le); in leb_write_trylock()
300 struct ubi_ltree_entry *le; in leb_write_unlock() local
303 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
304 le->users -= 1; in leb_write_unlock()
305 ubi_assert(le->users >= 0); in leb_write_unlock()
306 up_write(&le->mutex); in leb_write_unlock()
307 if (le->users == 0) { in leb_write_unlock()
308 rb_erase(&le->rb, &ubi->ltree); in leb_write_unlock()
309 kfree(le); in leb_write_unlock()