Lines Matching defs:ai

128  * @ai: UBI attach info object
136 static int add_aeb(struct ubi_attach_info *ai, struct list_head *list,
141 aeb = ubi_alloc_aeb(ai, pnum, ec);
149 ai->ec_sum += aeb->ec;
150 ai->ec_count++;
152 if (ai->max_ec < aeb->ec)
153 ai->max_ec = aeb->ec;
155 if (ai->min_ec > aeb->ec)
156 ai->min_ec = aeb->ec;
165 * @ai: ubi_attach_info object
175 static struct ubi_ainf_volume *add_vol(struct ubi_attach_info *ai, int vol_id,
181 av = ubi_add_av(ai, vol_id);
199 * @ai: ubi_attach_info object
203 static void assign_aeb_to_av(struct ubi_attach_info *ai,
235 * @ai: attach info object
242 static int update_vol(struct ubi_device *ubi, struct ubi_attach_info *ai,
269 ubi_free_aeb(ai, new_aeb);
280 victim = ubi_alloc_aeb(ai, aeb->pnum, aeb->ec);
284 list_add_tail(&victim->u.list, &ai->erase);
298 ubi_free_aeb(ai, new_aeb);
304 list_add_tail(&new_aeb->u.list, &ai->erase);
330 * @ai: attach info object
336 static int process_pool_aeb(struct ubi_device *ubi, struct ubi_attach_info *ai,
344 ubi_free_aeb(ai, new_aeb);
350 av = ubi_find_av(ai, vol_id);
353 ubi_free_aeb(ai, new_aeb);
359 return update_vol(ubi, ai, av, new_vh, new_aeb);
367 * @ai: UBI attach info object
370 static void unmap_peb(struct ubi_attach_info *ai, int pnum)
376 ubi_rb_for_each_entry(node, av, &ai->volumes, rb) {
381 ubi_free_aeb(ai, aeb);
391 * @ai: attach info object
395 * @free: list of PEBs which are most likely free (and go into @ai->free)
400 static int scan_pool(struct ubi_device *ubi, struct ubi_attach_info *ai,
465 unmap_peb(ai, pnum);
471 ret = add_aeb(ai, free, pnum, ec, scrub);
481 new_aeb = ubi_alloc_aeb(ai, pnum, be64_to_cpu(ech->ec));
495 err = process_pool_aeb(ubi, ai, vh, new_aeb);
517 * @ai: The UBI attach info object
519 static int count_fastmap_pebs(struct ubi_attach_info *ai)
526 list_for_each_entry(aeb, &ai->erase, u.list)
529 list_for_each_entry(aeb, &ai->free, u.list)
532 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb)
542 * @ai: UBI attach info object
549 struct ubi_attach_info *ai,
568 ai->min_ec = UBI_MAX_ERASECOUNTER;
571 ai->max_sqnum = fmsb->sqnum;
643 ret = add_aeb(ai, &ai->free, be32_to_cpu(fmec->pnum),
656 ret = add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
669 ret = add_aeb(ai, &used, be32_to_cpu(fmec->pnum),
682 ret = add_aeb(ai, &ai->erase, be32_to_cpu(fmec->pnum),
688 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count);
689 ai->bad_peb_count = be32_to_cpu(fmhdr->bad_peb_count);
704 av = add_vol(ai, be32_to_cpu(fmvhdr->vol_id),
718 ai->vols_found++;
719 if (ai->highest_vol_id < be32_to_cpu(fmvhdr->vol_id))
720 ai->highest_vol_id = be32_to_cpu(fmvhdr->vol_id);
758 assign_aeb_to_av(ai, aeb, av);
765 ret = scan_pool(ubi, ai, fmpl->pebs, pool_size, &max_sqnum, &free);
769 ret = scan_pool(ubi, ai, fmpl_wl->pebs, wl_pool_size, &max_sqnum, &free);
773 if (max_sqnum > ai->max_sqnum)
774 ai->max_sqnum = max_sqnum;
777 list_move_tail(&tmp_aeb->u.list, &ai->free);
780 list_move_tail(&tmp_aeb->u.list, &ai->erase);
790 if (WARN_ON(count_fastmap_pebs(ai) != ubi->peb_count -
791 ai->bad_peb_count - fm->used_blocks))
801 ubi_free_aeb(ai, tmp_aeb);
805 ubi_free_aeb(ai, tmp_aeb);
813 * @ai: UBI attach info to be filled
815 static int find_fm_anchor(struct ubi_attach_info *ai)
821 list_for_each_entry(aeb, &ai->fastmap, u.list) {
831 static struct ubi_ainf_peb *clone_aeb(struct ubi_attach_info *ai,
836 new = ubi_alloc_aeb(ai, old->pnum, old->ec);
852 * @ai: UBI attach info to be filled
860 int ubi_scan_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai,
882 new = clone_aeb(ai, aeb);
886 list_add(&new->u.list, &ai->fastmap);
1053 ret = ubi_attach_fastmap(ubi, ai, fm);