Lines Matching full:ubi
29 #define ubi_msg(fmt, ...) printf("UBI: " fmt "\n", ##__VA_ARGS__)
32 static struct ubi_device *ubi; variable
38 static void display_volume_info(struct ubi_device *ubi) in display_volume_info() argument
42 for (i = 0; i < (ubi->vtbl_slots + 1); i++) { in display_volume_info()
43 if (!ubi->volumes[i]) in display_volume_info()
45 ubi_dump_vol_info(ubi->volumes[i]); in display_volume_info()
49 static void display_ubi_info(struct ubi_device *ubi) in display_ubi_info() argument
51 ubi_msg("MTD device name: \"%s\"", ubi->mtd->name); in display_ubi_info()
52 ubi_msg("MTD device size: %llu MiB", ubi->flash_size >> 20); in display_ubi_info()
54 ubi->peb_size, ubi->peb_size >> 10); in display_ubi_info()
55 ubi_msg("logical eraseblock size: %d bytes", ubi->leb_size); in display_ubi_info()
56 ubi_msg("number of good PEBs: %d", ubi->good_peb_count); in display_ubi_info()
57 ubi_msg("number of bad PEBs: %d", ubi->bad_peb_count); in display_ubi_info()
58 ubi_msg("smallest flash I/O unit: %d", ubi->min_io_size); in display_ubi_info()
60 ubi->vid_hdr_offset, ubi->vid_hdr_aloffset); in display_ubi_info()
61 ubi_msg("data offset: %d", ubi->leb_start); in display_ubi_info()
62 ubi_msg("max. allowed volumes: %d", ubi->vtbl_slots); in display_ubi_info()
66 ubi->vol_count - UBI_INT_VOL_COUNT); in display_ubi_info()
67 ubi_msg("available PEBs: %d", ubi->avail_pebs); in display_ubi_info()
68 ubi_msg("total number of reserved PEBs: %d", ubi->rsvd_pebs); in display_ubi_info()
70 ubi->beb_rsvd_pebs); in display_ubi_info()
71 ubi_msg("max/mean erase counter: %d/%d", ubi->max_ec, ubi->mean_ec); in display_ubi_info()
77 display_volume_info(ubi); in ubi_info()
79 display_ubi_info(ubi); in ubi_info()
93 for (i = 0; i < (ubi->vtbl_slots + 1); i++) { in ubi_check()
94 if (!ubi->volumes[i]) in ubi_check()
97 if (!ubi_check_volumename(ubi->volumes[i], name)) in ubi_check()
104 static int verify_mkvol_req(const struct ubi_device *ubi, in verify_mkvol_req() argument
113 if ((req->vol_id < 0 || req->vol_id >= ubi->vtbl_slots) && in verify_mkvol_req()
121 printf("No space left in UBI device!\n"); in verify_mkvol_req()
130 if (req->alignment > ubi->leb_size) in verify_mkvol_req()
133 n = req->alignment % ubi->min_io_size; in verify_mkvol_req()
166 /* It's duplicated at drivers/mtd/ubi/cdev.c */ in ubi_create_vol()
167 err = verify_mkvol_req(ubi, &req); in ubi_create_vol()
174 /* Call real ubi create volume */ in ubi_create_vol()
175 return ubi_create_volume(ubi, &req); in ubi_create_vol()
183 for (i = 0; i < ubi->vtbl_slots; i++) { in ubi_find_volume()
184 vol = ubi->volumes[i]; in ubi_find_volume()
202 printf("Remove UBI volume %s (id %d)\n", vol->name, vol->vol_id); in ubi_remove_vol()
204 if (ubi->ro_mode) { in ubi_remove_vol()
210 err = ubi_change_vtbl_record(ubi, vol->vol_id, NULL); in ubi_remove_vol()
217 err = ubi_eba_unmap_leb(ubi, vol, i); in ubi_remove_vol()
223 ubi->volumes[vol->vol_id]->eba_tbl = NULL; in ubi_remove_vol()
224 ubi->volumes[vol->vol_id] = NULL; in ubi_remove_vol()
226 ubi->rsvd_pebs -= reserved_pebs; in ubi_remove_vol()
227 ubi->avail_pebs += reserved_pebs; in ubi_remove_vol()
228 i = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs; in ubi_remove_vol()
230 i = ubi->avail_pebs >= i ? i : ubi->avail_pebs; in ubi_remove_vol()
231 ubi->avail_pebs -= i; in ubi_remove_vol()
232 ubi->rsvd_pebs += i; in ubi_remove_vol()
233 ubi->beb_rsvd_pebs += i; in ubi_remove_vol()
237 ubi->vol_count -= 1; in ubi_remove_vol()
241 ubi_err(ubi, "cannot remove volume %s, error %d", volume, err); in ubi_remove_vol()
256 err = ubi_more_update_data(ubi, vol, buf, size); in ubi_volume_continue_write()
265 err = ubi_check_volume(ubi, vol->vol_id); in ubi_volume_continue_write()
270 ubi_warn(ubi, "volume %d on UBI device %d is corrupt", in ubi_volume_continue_write()
271 vol->vol_id, ubi->ubi_num); in ubi_volume_continue_write()
293 rsvd_bytes = vol->reserved_pebs * (ubi->leb_size - vol->data_pad); in ubi_volume_begin_write()
299 err = ubi_start_update(ubi, vol, full_size); in ubi_volume_begin_write()
351 tbuf_size = ALIGN(size, ubi->min_io_size); in ubi_volume_read()
367 err = ubi_eba_read_leb(ubi, vol, lnum, tbuf, off, len, 0); in ubi_volume_read()
422 * changes the UBI device. Otherwise the following in ubi_detach()
430 * Call ubi_exit() before re-initializing the UBI subsystem in ubi_detach()
432 if (ubi) in ubi_detach()
435 ubi = NULL; in ubi_detach()
457 printf("UBI init error %d\n", err); in ubi_part()
462 ubi = ubi_devices[0]; in ubi_part()
483 if (!ubi) { in do_ubi()
484 printf("Error, no UBI device selected!\n"); in do_ubi()
489 ubi->ubi_num, ubi->ubi_name, ubi->mtd->name); in do_ubi()
502 if ((strcmp(argv[1], "part") != 0) && !ubi) { in do_ubi()
503 printf("Error, no UBI device selected!\n"); in do_ubi()
553 size = (int64_t)ubi->avail_pebs * ubi->leb_size; in do_ubi()
625 ubi, 6, 1, do_ubi,
626 "ubi commands",
628 " - detach ubi from a mtd partition\n"
629 "ubi part [part] [offset]\n"
632 "ubi info [l[ayout]]"
633 " - Display volume and ubi layout information\n"
634 "ubi check volumename"
636 "ubi create[vol] volume [size] [type] [id]\n"
639 "ubi write[vol] address volume size"
641 "ubi write.part address volume size [fullsize]\n"
643 "ubi read[vol] address volume [size]"
645 "ubi remove[vol] volume"