Lines Matching refs:le
214 struct ubi_ltree_entry *le; in ltree_lookup() local
216 le = rb_entry(p, struct ubi_ltree_entry, rb); in ltree_lookup()
218 if (vol_id < le->vol_id) in ltree_lookup()
220 else if (vol_id > le->vol_id) in ltree_lookup()
223 if (lnum < le->lnum) in ltree_lookup()
225 else if (lnum > le->lnum) in ltree_lookup()
228 return le; in ltree_lookup()
249 struct ubi_ltree_entry *le, *le1, *le_free; in ltree_add_entry() local
251 le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS); in ltree_add_entry()
252 if (!le) in ltree_add_entry()
255 le->users = 0; in ltree_add_entry()
256 init_rwsem(&le->mutex); in ltree_add_entry()
257 le->vol_id = vol_id; in ltree_add_entry()
258 le->lnum = lnum; in ltree_add_entry()
268 le_free = le; in ltree_add_entry()
269 le = le1; in ltree_add_entry()
297 rb_link_node(&le->rb, parent, p); in ltree_add_entry()
298 rb_insert_color(&le->rb, &ubi->ltree); in ltree_add_entry()
300 le->users += 1; in ltree_add_entry()
304 return le; in ltree_add_entry()
318 struct ubi_ltree_entry *le; in leb_read_lock() local
320 le = ltree_add_entry(ubi, vol_id, lnum); in leb_read_lock()
321 if (IS_ERR(le)) in leb_read_lock()
322 return PTR_ERR(le); in leb_read_lock()
323 down_read(&le->mutex); in leb_read_lock()
335 struct ubi_ltree_entry *le; in leb_read_unlock() local
338 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
339 le->users -= 1; in leb_read_unlock()
340 ubi_assert(le->users >= 0); in leb_read_unlock()
341 up_read(&le->mutex); in leb_read_unlock()
342 if (le->users == 0) { in leb_read_unlock()
343 rb_erase(&le->rb, &ubi->ltree); in leb_read_unlock()
344 kfree(le); in leb_read_unlock()
360 struct ubi_ltree_entry *le; in leb_write_lock() local
362 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_lock()
363 if (IS_ERR(le)) in leb_write_lock()
364 return PTR_ERR(le); in leb_write_lock()
365 down_write(&le->mutex); in leb_write_lock()
382 struct ubi_ltree_entry *le; in leb_write_trylock() local
384 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_trylock()
385 if (IS_ERR(le)) in leb_write_trylock()
386 return PTR_ERR(le); in leb_write_trylock()
387 if (down_write_trylock(&le->mutex)) in leb_write_trylock()
392 le->users -= 1; in leb_write_trylock()
393 ubi_assert(le->users >= 0); in leb_write_trylock()
394 if (le->users == 0) { in leb_write_trylock()
395 rb_erase(&le->rb, &ubi->ltree); in leb_write_trylock()
396 kfree(le); in leb_write_trylock()
411 struct ubi_ltree_entry *le; in leb_write_unlock() local
414 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
415 le->users -= 1; in leb_write_unlock()
416 ubi_assert(le->users >= 0); in leb_write_unlock()
417 up_write(&le->mutex); in leb_write_unlock()
418 if (le->users == 0) { in leb_write_unlock()
419 rb_erase(&le->rb, &ubi->ltree); in leb_write_unlock()
420 kfree(le); in leb_write_unlock()