Lines Matching refs:lnum

97 					    int lnum)  in ltree_lookup()  argument
112 if (lnum < le->lnum) in ltree_lookup()
114 else if (lnum > le->lnum) in ltree_lookup()
136 int vol_id, int lnum) in ltree_add_entry() argument
147 le->lnum = lnum; in ltree_add_entry()
150 le1 = ltree_lookup(ubi, vol_id, lnum); in ltree_add_entry()
178 ubi_assert(lnum != le1->lnum); in ltree_add_entry()
179 if (lnum < le1->lnum) in ltree_add_entry()
205 static int leb_read_lock(struct ubi_device *ubi, int vol_id, int lnum) in leb_read_lock() argument
209 le = ltree_add_entry(ubi, vol_id, lnum); in leb_read_lock()
222 static void leb_read_unlock(struct ubi_device *ubi, int vol_id, int lnum) in leb_read_unlock() argument
227 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
247 static int leb_write_lock(struct ubi_device *ubi, int vol_id, int lnum) in leb_write_lock() argument
251 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_lock()
269 static int leb_write_trylock(struct ubi_device *ubi, int vol_id, int lnum) in leb_write_trylock() argument
273 le = ltree_add_entry(ubi, vol_id, lnum); in leb_write_trylock()
298 static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum) in leb_write_unlock() argument
303 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
325 int lnum) in ubi_eba_unmap_leb() argument
332 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_unmap_leb()
336 pnum = vol->eba_tbl[lnum]; in ubi_eba_unmap_leb()
341 dbg_eba("erase LEB %d:%d, PEB %d", vol_id, lnum, pnum); in ubi_eba_unmap_leb()
344 vol->eba_tbl[lnum] = UBI_LEB_UNMAPPED; in ubi_eba_unmap_leb()
346 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 0); in ubi_eba_unmap_leb()
349 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_unmap_leb()
372 int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, in ubi_eba_read_leb() argument
379 err = leb_read_lock(ubi, vol_id, lnum); in ubi_eba_read_leb()
383 pnum = vol->eba_tbl[lnum]; in ubi_eba_read_leb()
391 len, offset, vol_id, lnum); in ubi_eba_read_leb()
392 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
399 len, offset, vol_id, lnum, pnum); in ubi_eba_read_leb()
426 pnum, vol_id, lnum); in ubi_eba_read_leb()
454 ubi_assert(lnum < be32_to_cpu(vid_hdr->used_ebs)); in ubi_eba_read_leb()
491 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
497 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
516 struct ubi_sgl *sgl, int lnum, int offset, int len, in ubi_eba_read_leb_sg() argument
531 ret = ubi_eba_read_leb(ubi, vol, lnum, in ubi_eba_read_leb_sg()
572 static int recover_peb(struct ubi_device *ubi, int pnum, int vol_id, int lnum, in recover_peb() argument
634 vol->eba_tbl[lnum] = new_pnum; in recover_peb()
636 ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in recover_peb()
644 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); in recover_peb()
654 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); in recover_peb()
677 int ubi_eba_write_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum, in ubi_eba_write_leb() argument
686 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_write_leb()
690 pnum = vol->eba_tbl[lnum]; in ubi_eba_write_leb()
693 len, offset, vol_id, lnum, pnum); in ubi_eba_write_leb()
699 err = recover_peb(ubi, pnum, vol_id, lnum, buf, in ubi_eba_write_leb()
704 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
714 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
721 vid_hdr->lnum = cpu_to_be32(lnum); in ubi_eba_write_leb()
729 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
735 len, offset, vol_id, lnum, pnum); in ubi_eba_write_leb()
740 vol_id, lnum, pnum); in ubi_eba_write_leb()
749 len, offset, vol_id, lnum, pnum); in ubi_eba_write_leb()
755 vol->eba_tbl[lnum] = pnum; in ubi_eba_write_leb()
758 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
765 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
775 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_write_leb()
778 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
811 int lnum, const void *buf, int len, int used_ebs) in ubi_eba_write_leb_st() argument
820 if (lnum == used_ebs - 1) in ubi_eba_write_leb_st()
830 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
838 vid_hdr->lnum = cpu_to_be32(lnum); in ubi_eba_write_leb_st()
852 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
858 len, vol_id, lnum, pnum, used_ebs); in ubi_eba_write_leb_st()
863 vol_id, lnum, pnum); in ubi_eba_write_leb_st()
876 ubi_assert(vol->eba_tbl[lnum] < 0); in ubi_eba_write_leb_st()
877 vol->eba_tbl[lnum] = pnum; in ubi_eba_write_leb_st()
880 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
892 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
897 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_write_leb_st()
900 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
928 int lnum, const void *buf, int len) in ubi_eba_atomic_leb_change() argument
942 err = ubi_eba_unmap_leb(ubi, vol, lnum); in ubi_eba_atomic_leb_change()
945 return ubi_eba_write_leb(ubi, vol, lnum, NULL, 0, 0); in ubi_eba_atomic_leb_change()
953 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_atomic_leb_change()
959 vid_hdr->lnum = cpu_to_be32(lnum); in ubi_eba_atomic_leb_change()
978 vol_id, lnum, vol->eba_tbl[lnum], pnum); in ubi_eba_atomic_leb_change()
983 vol_id, lnum, pnum); in ubi_eba_atomic_leb_change()
996 old_pnum = vol->eba_tbl[lnum]; in ubi_eba_atomic_leb_change()
997 vol->eba_tbl[lnum] = pnum; in ubi_eba_atomic_leb_change()
1001 err = ubi_wl_put_peb(ubi, vol_id, lnum, old_pnum, 0); in ubi_eba_atomic_leb_change()
1007 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_atomic_leb_change()
1024 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_atomic_leb_change()
1079 int err, vol_id, lnum, data_size, aldata_size, idx; in ubi_eba_copy_leb() local
1084 lnum = be32_to_cpu(vid_hdr->lnum); in ubi_eba_copy_leb()
1086 dbg_wl("copy LEB %d:%d, PEB %d to PEB %d", vol_id, lnum, from, to); in ubi_eba_copy_leb()
1126 err = leb_write_trylock(ubi, vol_id, lnum); in ubi_eba_copy_leb()
1128 dbg_wl("contention on LEB %d:%d, cancel", vol_id, lnum); in ubi_eba_copy_leb()
1137 if (vol->eba_tbl[lnum] != from) { in ubi_eba_copy_leb()
1139 vol_id, lnum, from, vol->eba_tbl[lnum]); in ubi_eba_copy_leb()
1250 ubi_assert(vol->eba_tbl[lnum] == from); in ubi_eba_copy_leb()
1252 vol->eba_tbl[lnum] = to; in ubi_eba_copy_leb()
1258 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_copy_leb()
1362 scan_eba[i][aeb->lnum] = aeb->pnum; in self_check_eba()
1369 fm_eba[i][aeb->lnum] = aeb->pnum; in self_check_eba()
1446 if (aeb->lnum >= vol->reserved_pebs) in ubi_eba_init()
1453 vol->eba_tbl[aeb->lnum] = aeb->pnum; in ubi_eba_init()