Lines Matching refs:ubi
60 unsigned long long ubi_next_sqnum(struct ubi_device *ubi) in ubi_next_sqnum() argument
64 spin_lock(&ubi->ltree_lock); in ubi_next_sqnum()
65 sqnum = ubi->global_sqnum++; in ubi_next_sqnum()
66 spin_unlock(&ubi->ltree_lock); in ubi_next_sqnum()
79 static int ubi_get_compat(const struct ubi_device *ubi, int vol_id) in ubi_get_compat() argument
96 static struct ubi_ltree_entry *ltree_lookup(struct ubi_device *ubi, int vol_id, in ltree_lookup() argument
101 p = ubi->ltree.rb_node; in ltree_lookup()
135 static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi, in ltree_add_entry() argument
149 spin_lock(&ubi->ltree_lock); in ltree_add_entry()
150 le1 = ltree_lookup(ubi, vol_id, lnum); in ltree_add_entry()
168 p = &ubi->ltree.rb_node; in ltree_add_entry()
187 rb_insert_color(&le->rb, &ubi->ltree); in ltree_add_entry()
190 spin_unlock(&ubi->ltree_lock); 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
226 spin_lock(&ubi->ltree_lock); in leb_read_unlock()
227 le = ltree_lookup(ubi, vol_id, lnum); in leb_read_unlock()
232 rb_erase(&le->rb, &ubi->ltree); in leb_read_unlock()
235 spin_unlock(&ubi->ltree_lock); 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()
280 spin_lock(&ubi->ltree_lock); in leb_write_trylock()
284 rb_erase(&le->rb, &ubi->ltree); in leb_write_trylock()
287 spin_unlock(&ubi->ltree_lock); in leb_write_trylock()
298 static void leb_write_unlock(struct ubi_device *ubi, int vol_id, int lnum) in leb_write_unlock() argument
302 spin_lock(&ubi->ltree_lock); in leb_write_unlock()
303 le = ltree_lookup(ubi, vol_id, lnum); in leb_write_unlock()
308 rb_erase(&le->rb, &ubi->ltree); in leb_write_unlock()
311 spin_unlock(&ubi->ltree_lock); in leb_write_unlock()
324 int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol, in ubi_eba_unmap_leb() argument
329 if (ubi->ro_mode) in ubi_eba_unmap_leb()
332 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_unmap_leb()
343 down_read(&ubi->fm_eba_sem); in ubi_eba_unmap_leb()
345 up_read(&ubi->fm_eba_sem); 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()
392 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
406 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); in ubi_eba_read_leb()
412 err = ubi_io_read_vid_hdr(ubi, pnum, vid_hdr, 1); in ubi_eba_read_leb()
425 ubi_warn(ubi, "corrupted VID header at PEB %d, LEB %d:%d", in ubi_eba_read_leb()
442 if (ubi->fast_attach) { in ubi_eba_read_leb()
446 ubi_ro_mode(ubi); in ubi_eba_read_leb()
458 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_read_leb()
461 err = ubi_io_read_data(ubi, buf, pnum, offset, len); in ubi_eba_read_leb()
470 ubi_msg(ubi, "force data checking"); in ubi_eba_read_leb()
481 ubi_warn(ubi, "CRC error: calculated %#08x, must be %#08x", in ubi_eba_read_leb()
489 err = ubi_wl_scrub_peb(ubi, pnum); in ubi_eba_read_leb()
491 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
495 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_read_leb()
497 leb_read_unlock(ubi, vol_id, lnum); in ubi_eba_read_leb()
515 int ubi_eba_read_leb_sg(struct ubi_device *ubi, struct ubi_volume *vol, 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
575 int err, idx = vol_id2idx(ubi, vol_id), new_pnum, data_size, tries = 0; in recover_peb()
576 struct ubi_volume *vol = ubi->volumes[idx]; in recover_peb()
579 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); in recover_peb()
584 new_pnum = ubi_wl_get_peb(ubi); in recover_peb()
586 ubi_free_vid_hdr(ubi, vid_hdr); in recover_peb()
587 up_read(&ubi->fm_eba_sem); in recover_peb()
591 ubi_msg(ubi, "recover PEB %d, move data to PEB %d", in recover_peb()
594 err = ubi_io_read_vid_hdr(ubi, pnum, vid_hdr, 1); in recover_peb()
598 up_read(&ubi->fm_eba_sem); in recover_peb()
602 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in recover_peb()
603 err = ubi_io_write_vid_hdr(ubi, new_pnum, vid_hdr); in recover_peb()
605 up_read(&ubi->fm_eba_sem); in recover_peb()
610 mutex_lock(&ubi->buf_mutex); in recover_peb()
611 memset(ubi->peb_buf + offset, 0xFF, len); in recover_peb()
615 err = ubi_io_read_data(ubi, ubi->peb_buf, pnum, 0, offset); in recover_peb()
617 up_read(&ubi->fm_eba_sem); in recover_peb()
622 memcpy(ubi->peb_buf + offset, buf, len); in recover_peb()
624 err = ubi_io_write_data(ubi, ubi->peb_buf, new_pnum, 0, data_size); in recover_peb()
626 mutex_unlock(&ubi->buf_mutex); in recover_peb()
627 up_read(&ubi->fm_eba_sem); in recover_peb()
631 mutex_unlock(&ubi->buf_mutex); in recover_peb()
632 ubi_free_vid_hdr(ubi, vid_hdr); in recover_peb()
635 up_read(&ubi->fm_eba_sem); in recover_peb()
636 ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in recover_peb()
638 ubi_msg(ubi, "data was successfully recovered"); in recover_peb()
642 mutex_unlock(&ubi->buf_mutex); in recover_peb()
644 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); in recover_peb()
645 ubi_free_vid_hdr(ubi, vid_hdr); in recover_peb()
653 ubi_warn(ubi, "failed to write to PEB %d", new_pnum); in recover_peb()
654 ubi_wl_put_peb(ubi, vol_id, lnum, new_pnum, 1); in recover_peb()
656 ubi_free_vid_hdr(ubi, vid_hdr); in recover_peb()
659 ubi_msg(ubi, "try again"); 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
683 if (ubi->ro_mode) in ubi_eba_write_leb()
686 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_write_leb()
695 err = ubi_io_write_data(ubi, buf, pnum, offset, len); in ubi_eba_write_leb()
697 ubi_warn(ubi, "failed to write data to PEB %d", pnum); in ubi_eba_write_leb()
698 if (err == -EIO && ubi->bad_allowed) in ubi_eba_write_leb()
699 err = recover_peb(ubi, pnum, vol_id, lnum, buf, in ubi_eba_write_leb()
702 ubi_ro_mode(ubi); in ubi_eba_write_leb()
704 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
712 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); in ubi_eba_write_leb()
714 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
719 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_write_leb()
722 vid_hdr->compat = ubi_get_compat(ubi, vol_id); in ubi_eba_write_leb()
726 pnum = ubi_wl_get_peb(ubi); in ubi_eba_write_leb()
728 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb()
729 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
730 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb()
737 err = ubi_io_write_vid_hdr(ubi, pnum, vid_hdr); in ubi_eba_write_leb()
739 ubi_warn(ubi, "failed to write VID header to LEB %d:%d, PEB %d", in ubi_eba_write_leb()
741 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb()
746 err = ubi_io_write_data(ubi, buf, pnum, offset, len); in ubi_eba_write_leb()
748 ubi_warn(ubi, "failed to write %d bytes at offset %d of LEB %d:%d, PEB %d", in ubi_eba_write_leb()
750 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb()
756 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb()
758 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
759 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb()
763 if (err != -EIO || !ubi->bad_allowed) { in ubi_eba_write_leb()
764 ubi_ro_mode(ubi); in ubi_eba_write_leb()
765 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
766 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb()
775 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_write_leb()
777 ubi_ro_mode(ubi); in ubi_eba_write_leb()
778 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb()
779 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb()
783 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_write_leb()
784 ubi_msg(ubi, "try another PEB"); in ubi_eba_write_leb()
810 int ubi_eba_write_leb_st(struct ubi_device *ubi, struct ubi_volume *vol, in ubi_eba_write_leb_st() argument
817 if (ubi->ro_mode) in ubi_eba_write_leb_st()
822 len = ALIGN(data_size, ubi->min_io_size); in ubi_eba_write_leb_st()
824 ubi_assert(!(len & (ubi->min_io_size - 1))); in ubi_eba_write_leb_st()
826 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); in ubi_eba_write_leb_st()
830 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
832 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb_st()
836 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_write_leb_st()
839 vid_hdr->compat = ubi_get_compat(ubi, vol_id); in ubi_eba_write_leb_st()
849 pnum = ubi_wl_get_peb(ubi); in ubi_eba_write_leb_st()
851 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb_st()
852 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
853 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb_st()
860 err = ubi_io_write_vid_hdr(ubi, pnum, vid_hdr); in ubi_eba_write_leb_st()
862 ubi_warn(ubi, "failed to write VID header to LEB %d:%d, PEB %d", in ubi_eba_write_leb_st()
864 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb_st()
868 err = ubi_io_write_data(ubi, buf, pnum, 0, len); in ubi_eba_write_leb_st()
870 ubi_warn(ubi, "failed to write %d bytes of data to PEB %d", in ubi_eba_write_leb_st()
872 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb_st()
878 up_read(&ubi->fm_eba_sem); in ubi_eba_write_leb_st()
880 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
881 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb_st()
885 if (err != -EIO || !ubi->bad_allowed) { in ubi_eba_write_leb_st()
891 ubi_ro_mode(ubi); in ubi_eba_write_leb_st()
892 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
893 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb_st()
897 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_write_leb_st()
899 ubi_ro_mode(ubi); in ubi_eba_write_leb_st()
900 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_write_leb_st()
901 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_write_leb_st()
905 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_write_leb_st()
906 ubi_msg(ubi, "try another PEB"); in ubi_eba_write_leb_st()
927 int ubi_eba_atomic_leb_change(struct ubi_device *ubi, struct ubi_volume *vol, in ubi_eba_atomic_leb_change() argument
934 if (ubi->ro_mode) in ubi_eba_atomic_leb_change()
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()
948 vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS); in ubi_eba_atomic_leb_change()
952 mutex_lock(&ubi->alc_mutex); in ubi_eba_atomic_leb_change()
953 err = leb_write_lock(ubi, vol_id, lnum); in ubi_eba_atomic_leb_change()
957 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_atomic_leb_change()
960 vid_hdr->compat = ubi_get_compat(ubi, vol_id); in ubi_eba_atomic_leb_change()
970 pnum = ubi_wl_get_peb(ubi); in ubi_eba_atomic_leb_change()
973 up_read(&ubi->fm_eba_sem); in ubi_eba_atomic_leb_change()
980 err = ubi_io_write_vid_hdr(ubi, pnum, vid_hdr); in ubi_eba_atomic_leb_change()
982 ubi_warn(ubi, "failed to write VID header to LEB %d:%d, PEB %d", in ubi_eba_atomic_leb_change()
984 up_read(&ubi->fm_eba_sem); in ubi_eba_atomic_leb_change()
988 err = ubi_io_write_data(ubi, buf, pnum, 0, len); in ubi_eba_atomic_leb_change()
990 ubi_warn(ubi, "failed to write %d bytes of data to PEB %d", in ubi_eba_atomic_leb_change()
992 up_read(&ubi->fm_eba_sem); in ubi_eba_atomic_leb_change()
998 up_read(&ubi->fm_eba_sem); 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()
1009 mutex_unlock(&ubi->alc_mutex); in ubi_eba_atomic_leb_change()
1010 ubi_free_vid_hdr(ubi, vid_hdr); in ubi_eba_atomic_leb_change()
1014 if (err != -EIO || !ubi->bad_allowed) { in ubi_eba_atomic_leb_change()
1020 ubi_ro_mode(ubi); in ubi_eba_atomic_leb_change()
1024 err = ubi_wl_put_peb(ubi, vol_id, lnum, pnum, 1); in ubi_eba_atomic_leb_change()
1026 ubi_ro_mode(ubi); in ubi_eba_atomic_leb_change()
1030 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_atomic_leb_change()
1031 ubi_msg(ubi, "try another PEB"); in ubi_eba_atomic_leb_change()
1076 int ubi_eba_copy_leb(struct ubi_device *ubi, int from, int to, in ubi_eba_copy_leb() argument
1090 aldata_size = ALIGN(data_size, ubi->min_io_size); in ubi_eba_copy_leb()
1093 ubi->leb_size - be32_to_cpu(vid_hdr->data_pad); in ubi_eba_copy_leb()
1095 idx = vol_id2idx(ubi, vol_id); in ubi_eba_copy_leb()
1096 spin_lock(&ubi->volumes_lock); in ubi_eba_copy_leb()
1103 vol = ubi->volumes[idx]; in ubi_eba_copy_leb()
1104 spin_unlock(&ubi->volumes_lock); in ubi_eba_copy_leb()
1126 err = leb_write_trylock(ubi, vol_id, lnum); in ubi_eba_copy_leb()
1150 mutex_lock(&ubi->buf_mutex); in ubi_eba_copy_leb()
1152 err = ubi_io_read_data(ubi, ubi->peb_buf, from, 0, aldata_size); in ubi_eba_copy_leb()
1154 ubi_warn(ubi, "error %d while reading data from PEB %d", in ubi_eba_copy_leb()
1172 ubi_calc_data_len(ubi, ubi->peb_buf, data_size); in ubi_eba_copy_leb()
1175 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size); in ubi_eba_copy_leb()
1189 vid_hdr->sqnum = cpu_to_be64(ubi_next_sqnum(ubi)); in ubi_eba_copy_leb()
1191 err = ubi_io_write_vid_hdr(ubi, to, vid_hdr); in ubi_eba_copy_leb()
1201 err = ubi_io_read_vid_hdr(ubi, to, vid_hdr, 1); in ubi_eba_copy_leb()
1204 ubi_warn(ubi, "error %d while reading VID header back from PEB %d", in ubi_eba_copy_leb()
1214 err = ubi_io_write_data(ubi, ubi->peb_buf, to, 0, aldata_size); in ubi_eba_copy_leb()
1227 memset(ubi->peb_buf, 0xFF, aldata_size); in ubi_eba_copy_leb()
1228 err = ubi_io_read_data(ubi, ubi->peb_buf, to, 0, aldata_size); in ubi_eba_copy_leb()
1231 ubi_warn(ubi, "error %d while reading data back from PEB %d", in ubi_eba_copy_leb()
1242 if (crc != crc32(UBI_CRC32_INIT, ubi->peb_buf, data_size)) { in ubi_eba_copy_leb()
1243 ubi_warn(ubi, "read data back from PEB %d and it is different", in ubi_eba_copy_leb()
1251 down_read(&ubi->fm_eba_sem); in ubi_eba_copy_leb()
1253 up_read(&ubi->fm_eba_sem); in ubi_eba_copy_leb()
1256 mutex_unlock(&ubi->buf_mutex); in ubi_eba_copy_leb()
1258 leb_write_unlock(ubi, vol_id, lnum); in ubi_eba_copy_leb()
1280 static void print_rsvd_warning(struct ubi_device *ubi, in print_rsvd_warning() argument
1288 int min = ubi->beb_rsvd_level / 10; in print_rsvd_warning()
1292 if (ubi->beb_rsvd_pebs > min) in print_rsvd_warning()
1296 ubi_warn(ubi, "cannot reserve enough PEBs for bad PEB handling, reserved %d, need %d", in print_rsvd_warning()
1297 ubi->beb_rsvd_pebs, ubi->beb_rsvd_level); in print_rsvd_warning()
1298 if (ubi->corr_peb_count) in print_rsvd_warning()
1299 ubi_warn(ubi, "%d PEBs are corrupted and not used", in print_rsvd_warning()
1300 ubi->corr_peb_count); in print_rsvd_warning()
1313 int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap, in self_check_eba() argument
1323 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; in self_check_eba()
1336 vol = ubi->volumes[i]; in self_check_eba()
1357 av = ubi_find_av(ai_scan, idx2vol_id(ubi, i)); in self_check_eba()
1364 av = ubi_find_av(ai_fastmap, idx2vol_id(ubi, i)); in self_check_eba()
1377 ubi_err(ubi, "LEB:%i:%i is PEB:%i instead of %i!", in self_check_eba()
1387 if (!ubi->volumes[i]) in self_check_eba()
1407 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai) in ubi_eba_init() argument
1417 spin_lock_init(&ubi->ltree_lock); in ubi_eba_init()
1418 mutex_init(&ubi->alc_mutex); in ubi_eba_init()
1419 ubi->ltree = RB_ROOT; in ubi_eba_init()
1421 ubi->global_sqnum = ai->max_sqnum + 1; in ubi_eba_init()
1422 num_volumes = ubi->vtbl_slots + UBI_INT_VOL_COUNT; in ubi_eba_init()
1425 vol = ubi->volumes[i]; in ubi_eba_init()
1441 av = ubi_find_av(ai, idx2vol_id(ubi, i)); in ubi_eba_init()
1457 if (ubi->avail_pebs < EBA_RESERVED_PEBS) { in ubi_eba_init()
1458 ubi_err(ubi, "no enough physical eraseblocks (%d, need %d)", in ubi_eba_init()
1459 ubi->avail_pebs, EBA_RESERVED_PEBS); in ubi_eba_init()
1460 if (ubi->corr_peb_count) in ubi_eba_init()
1461 ubi_err(ubi, "%d PEBs are corrupted and not used", in ubi_eba_init()
1462 ubi->corr_peb_count); in ubi_eba_init()
1466 ubi->avail_pebs -= EBA_RESERVED_PEBS; in ubi_eba_init()
1467 ubi->rsvd_pebs += EBA_RESERVED_PEBS; in ubi_eba_init()
1469 if (ubi->bad_allowed) { in ubi_eba_init()
1470 ubi_calculate_reserved(ubi); in ubi_eba_init()
1472 if (ubi->avail_pebs < ubi->beb_rsvd_level) { in ubi_eba_init()
1474 ubi->beb_rsvd_pebs = ubi->avail_pebs; in ubi_eba_init()
1475 print_rsvd_warning(ubi, ai); in ubi_eba_init()
1477 ubi->beb_rsvd_pebs = ubi->beb_rsvd_level; in ubi_eba_init()
1479 ubi->avail_pebs -= ubi->beb_rsvd_pebs; in ubi_eba_init()
1480 ubi->rsvd_pebs += ubi->beb_rsvd_pebs; in ubi_eba_init()
1488 if (!ubi->volumes[i]) in ubi_eba_init()
1490 kfree(ubi->volumes[i]->eba_tbl); in ubi_eba_init()
1491 ubi->volumes[i]->eba_tbl = NULL; in ubi_eba_init()