Lines Matching full:av

177  * @av: information about the volume this logical eraseblock belongs to
190 const struct ubi_ainf_volume *av, int pnum) in validate_vid_hdr() argument
197 if (av->leb_count != 0) { in validate_vid_hdr()
206 if (vol_id != av->vol_id) { in validate_vid_hdr()
211 if (av->vol_type == UBI_STATIC_VOLUME) in validate_vid_hdr()
221 if (used_ebs != av->used_ebs) { in validate_vid_hdr()
226 if (data_pad != av->data_pad) { in validate_vid_hdr()
237 ubi_dump_av(av); in validate_vid_hdr()
251 * to the allocated "av" object in case of success and a negative error code in
258 struct ubi_ainf_volume *av; in add_volume() local
266 av = rb_entry(parent, struct ubi_ainf_volume, rb); in add_volume()
268 if (vol_id == av->vol_id) in add_volume()
269 return av; in add_volume()
271 if (vol_id > av->vol_id) in add_volume()
278 av = kmalloc(sizeof(struct ubi_ainf_volume), GFP_KERNEL); in add_volume()
279 if (!av) in add_volume()
282 av->highest_lnum = av->leb_count = 0; in add_volume()
283 av->vol_id = vol_id; in add_volume()
284 av->root = RB_ROOT; in add_volume()
285 av->used_ebs = be32_to_cpu(vid_hdr->used_ebs); in add_volume()
286 av->data_pad = be32_to_cpu(vid_hdr->data_pad); in add_volume()
287 av->compat = vid_hdr->compat; in add_volume()
288 av->vol_type = vid_hdr->vol_type == UBI_VID_DYNAMIC ? UBI_DYNAMIC_VOLUME in add_volume()
293 rb_link_node(&av->rb, parent, p); in add_volume()
294 rb_insert_color(&av->rb, &ai->volumes); in add_volume()
297 return av; in add_volume()
450 struct ubi_ainf_volume *av; in ubi_add_to_av() local
461 av = add_volume(ai, vol_id, pnum, vid_hdr); in ubi_add_to_av()
462 if (IS_ERR(av)) in ubi_add_to_av()
463 return PTR_ERR(av); in ubi_add_to_av()
472 p = &av->root.rb_node; in ubi_add_to_av()
528 err = validate_vid_hdr(ubi, vid_hdr, av, pnum); in ubi_add_to_av()
546 if (av->highest_lnum == lnum) in ubi_add_to_av()
547 av->last_data_size = in ubi_add_to_av()
566 err = validate_vid_hdr(ubi, vid_hdr, av, pnum); in ubi_add_to_av()
582 if (av->highest_lnum <= lnum) { in ubi_add_to_av()
583 av->highest_lnum = lnum; in ubi_add_to_av()
584 av->last_data_size = be32_to_cpu(vid_hdr->data_size); in ubi_add_to_av()
587 av->leb_count += 1; in ubi_add_to_av()
589 rb_insert_color(&aeb->u.rb, &av->root); in ubi_add_to_av()
604 struct ubi_ainf_volume *av; in ubi_find_av() local
608 av = rb_entry(p, struct ubi_ainf_volume, rb); in ubi_find_av()
610 if (vol_id == av->vol_id) in ubi_find_av()
611 return av; in ubi_find_av()
613 if (vol_id > av->vol_id) in ubi_find_av()
625 * @av: the volume attaching information to delete
627 void ubi_remove_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) in ubi_remove_av() argument
632 dbg_bld("remove attaching information about volume %d", av->vol_id); in ubi_remove_av()
634 while ((rb = rb_first(&av->root))) { in ubi_remove_av()
636 rb_erase(&aeb->u.rb, &av->root); in ubi_remove_av()
640 rb_erase(&av->rb, &ai->volumes); in ubi_remove_av()
641 kfree(av); in ubi_remove_av()
1128 * @av: volume attaching information
1133 static void destroy_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) in destroy_av() argument
1136 struct rb_node *this = av->root.rb_node; in destroy_av()
1156 kfree(av); in destroy_av()
1166 struct ubi_ainf_volume *av; in destroy_ai() local
1194 av = rb_entry(rb, struct ubi_ainf_volume, rb); in destroy_ai()
1198 if (rb->rb_left == &av->rb) in destroy_ai()
1204 destroy_av(ai, av); in destroy_ai()
1228 struct ubi_ainf_volume *av; in scan_all() local
1264 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { in scan_all()
1265 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) in scan_all()
1504 struct ubi_ainf_volume *av; in self_check_ai() local
1514 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { in self_check_ai()
1526 if (av->vol_id < 0 || av->highest_lnum < 0 || in self_check_ai()
1527 av->leb_count < 0 || av->vol_type < 0 || av->used_ebs < 0 || in self_check_ai()
1528 av->data_pad < 0 || av->last_data_size < 0) { in self_check_ai()
1533 if (av->vol_id >= UBI_MAX_VOLUMES && in self_check_ai()
1534 av->vol_id < UBI_INTERNAL_VOL_START) { in self_check_ai()
1539 if (av->vol_id > ai->highest_vol_id) { in self_check_ai()
1541 ai->highest_vol_id, av->vol_id); in self_check_ai()
1545 if (av->vol_type != UBI_DYNAMIC_VOLUME && in self_check_ai()
1546 av->vol_type != UBI_STATIC_VOLUME) { in self_check_ai()
1551 if (av->data_pad > ubi->leb_size / 2) { in self_check_ai()
1557 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { in self_check_ai()
1586 if (av->vol_type == UBI_STATIC_VOLUME) { in self_check_ai()
1587 if (aeb->lnum >= av->used_ebs) { in self_check_ai()
1592 if (av->used_ebs != 0) { in self_check_ai()
1598 if (aeb->lnum > av->highest_lnum) { in self_check_ai()
1604 if (av->leb_count != leb_count) { in self_check_ai()
1615 if (aeb->lnum != av->highest_lnum) { in self_check_ai()
1628 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { in self_check_ai()
1630 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { in self_check_ai()
1648 if (av->vol_type != vol_type) { in self_check_ai()
1658 if (av->vol_id != be32_to_cpu(vidh->vol_id)) { in self_check_ai()
1659 ubi_err(ubi, "bad vol_id %d", av->vol_id); in self_check_ai()
1663 if (av->compat != vidh->compat) { in self_check_ai()
1673 if (av->used_ebs != be32_to_cpu(vidh->used_ebs)) { in self_check_ai()
1674 ubi_err(ubi, "bad used_ebs %d", av->used_ebs); in self_check_ai()
1678 if (av->data_pad != be32_to_cpu(vidh->data_pad)) { in self_check_ai()
1679 ubi_err(ubi, "bad data_pad %d", av->data_pad); in self_check_ai()
1687 if (av->highest_lnum != be32_to_cpu(vidh->lnum)) { in self_check_ai()
1688 ubi_err(ubi, "bad highest_lnum %d", av->highest_lnum); in self_check_ai()
1692 if (av->last_data_size != be32_to_cpu(vidh->data_size)) { in self_check_ai()
1694 av->last_data_size); in self_check_ai()
1716 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) in self_check_ai()
1717 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) in self_check_ai()
1747 ubi_dump_av(av); in self_check_ai()
1751 ubi_err(ubi, "bad attaching information about volume %d", av->vol_id); in self_check_ai()
1752 ubi_dump_av(av); in self_check_ai()
1756 ubi_err(ubi, "bad attaching information about volume %d", av->vol_id); in self_check_ai()
1757 ubi_dump_av(av); in self_check_ai()