Lines Matching refs:le

231 		struct ubi_ltree_entry *le;  in ltree_lookup()  local
233 le = rb_entry(p, struct ubi_ltree_entry, rb); in ltree_lookup()
235 if (vol_id < le->vol_id) in ltree_lookup()
237 else if (vol_id > le->vol_id) in ltree_lookup()
240 if (lnum < le->lnum) in ltree_lookup()
242 else if (lnum > le->lnum) in ltree_lookup()
245 return le; in ltree_lookup()
266 struct ubi_ltree_entry *le, *le1, *le_free; in ltree_add_entry() local
268 le = kmalloc(sizeof(struct ubi_ltree_entry), GFP_NOFS); in ltree_add_entry()
269 if (!le) in ltree_add_entry()
272 le->users = 0; in ltree_add_entry()
273 init_rwsem(&le->mutex); in ltree_add_entry()
274 le->vol_id = vol_id; in ltree_add_entry()
275 le->lnum = lnum; in ltree_add_entry()
285 le_free = le; in ltree_add_entry()
286 le = le1; in ltree_add_entry()
314 rb_link_node(&le->rb, parent, p); in ltree_add_entry()
315 rb_insert_color(&le->rb, &ubi->ltree); in ltree_add_entry()
317 le->users += 1; in ltree_add_entry()
321 return le; in ltree_add_entry()
335 struct ubi_ltree_entry *le; in leb_read_lock() local
337 le = ltree_add_entry(ubi, vol_id, lnum); in leb_read_lock()
338 if (IS_ERR(le)) in leb_read_lock()
339 return PTR_ERR(le); in leb_read_lock()
340 down_read(&le->mutex); in leb_read_lock()
352 struct ubi_ltree_entry *le; in leb_read_unlock() local
355 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
356 le->users -= 1; in leb_read_unlock()
357 ubi_assert(le->users >= 0); in leb_read_unlock()
358 up_read(&le->mutex); in leb_read_unlock()
359 if (le->users == 0) { in leb_read_unlock()
360 rb_erase(&le->rb, &ubi->ltree); in leb_read_unlock()
361 kfree(le); in leb_read_unlock()
377 struct ubi_ltree_entry *le; in leb_write_lock() local
379 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_lock()
380 if (IS_ERR(le)) in leb_write_lock()
381 return PTR_ERR(le); in leb_write_lock()
382 down_write(&le->mutex); in leb_write_lock()
399 struct ubi_ltree_entry *le; in leb_write_trylock() local
401 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_trylock()
402 if (IS_ERR(le)) in leb_write_trylock()
403 return PTR_ERR(le); in leb_write_trylock()
404 if (down_write_trylock(&le->mutex)) in leb_write_trylock()
409 le->users -= 1; in leb_write_trylock()
410 ubi_assert(le->users >= 0); in leb_write_trylock()
411 if (le->users == 0) { in leb_write_trylock()
412 rb_erase(&le->rb, &ubi->ltree); in leb_write_trylock()
413 kfree(le); in leb_write_trylock()
428 struct ubi_ltree_entry *le; in leb_write_unlock() local
431 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
432 le->users -= 1; in leb_write_unlock()
433 ubi_assert(le->users >= 0); in leb_write_unlock()
434 up_write(&le->mutex); in leb_write_unlock()
435 if (le->users == 0) { in leb_write_unlock()
436 rb_erase(&le->rb, &ubi->ltree); in leb_write_unlock()
437 kfree(le); in leb_write_unlock()