Lines Matching refs:le

217 		struct ubi_ltree_entry *le;  in ltree_lookup()  local
219 le = rb_entry(p, struct ubi_ltree_entry, rb); in ltree_lookup()
221 if (vol_id < le->vol_id) in ltree_lookup()
223 else if (vol_id > le->vol_id) in ltree_lookup()
226 if (lnum < le->lnum) in ltree_lookup()
228 else if (lnum > le->lnum) in ltree_lookup()
231 return le; in ltree_lookup()
252 struct ubi_ltree_entry *le, *le1, *le_free; in ltree_add_entry() local
254 le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS); in ltree_add_entry()
255 if (!le) in ltree_add_entry()
258 le->users = 0; in ltree_add_entry()
259 init_rwsem(&le->mutex); in ltree_add_entry()
260 le->vol_id = vol_id; in ltree_add_entry()
261 le->lnum = lnum; in ltree_add_entry()
271 le_free = le; in ltree_add_entry()
272 le = le1; in ltree_add_entry()
300 rb_link_node(&le->rb, parent, p); in ltree_add_entry()
301 rb_insert_color(&le->rb, &ubi->ltree); in ltree_add_entry()
303 le->users += 1; in ltree_add_entry()
307 return le; in ltree_add_entry()
321 struct ubi_ltree_entry *le; in leb_read_lock() local
323 le = ltree_add_entry(ubi, vol_id, lnum); in leb_read_lock()
324 if (IS_ERR(le)) in leb_read_lock()
325 return PTR_ERR(le); in leb_read_lock()
326 down_read(&le->mutex); in leb_read_lock()
338 struct ubi_ltree_entry *le; in leb_read_unlock() local
341 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
342 le->users -= 1; in leb_read_unlock()
343 ubi_assert(le->users >= 0); in leb_read_unlock()
344 up_read(&le->mutex); in leb_read_unlock()
345 if (le->users == 0) { in leb_read_unlock()
346 rb_erase(&le->rb, &ubi->ltree); in leb_read_unlock()
347 kfree(le); in leb_read_unlock()
363 struct ubi_ltree_entry *le; in leb_write_lock() local
365 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_lock()
366 if (IS_ERR(le)) in leb_write_lock()
367 return PTR_ERR(le); in leb_write_lock()
368 down_write(&le->mutex); in leb_write_lock()
385 struct ubi_ltree_entry *le; in leb_write_trylock() local
387 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_trylock()
388 if (IS_ERR(le)) in leb_write_trylock()
389 return PTR_ERR(le); in leb_write_trylock()
390 if (down_write_trylock(&le->mutex)) in leb_write_trylock()
395 le->users -= 1; in leb_write_trylock()
396 ubi_assert(le->users >= 0); in leb_write_trylock()
397 if (le->users == 0) { in leb_write_trylock()
398 rb_erase(&le->rb, &ubi->ltree); in leb_write_trylock()
399 kfree(le); in leb_write_trylock()
414 struct ubi_ltree_entry *le; in leb_write_unlock() local
417 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
418 le->users -= 1; in leb_write_unlock()
419 ubi_assert(le->users >= 0); in leb_write_unlock()
420 up_write(&le->mutex); in leb_write_unlock()
421 if (le->users == 0) { in leb_write_unlock()
422 rb_erase(&le->rb, &ubi->ltree); in leb_write_unlock()
423 kfree(le); in leb_write_unlock()