Lines Matching refs:ubi
28 #include <linux/mtd/ubi.h>
31 #include "ubi-media.h"
37 #define UBI_NAME_STR "ubi"
43 void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...);
47 void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...);
51 void ubi_err(const struct ubi_device *ubi, const char *fmt, ...);
79 * The UBI debugfs directory name pattern and maximum name length (3 for "ubi"
82 #define UBI_DFS_DIR_NAME "ubi%d"
190 * &struct ubi_ltree_entry object is inserted to the lock tree (@ubi->ltree).
278 * @ubi: reference to the UBI device description object
333 struct ubi_device *ubi;
803 int (*func)(struct ubi_device *ubi, struct ubi_work *wrk, int shutdown);
825 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum,
831 struct ubi_ainf_peb *ubi_early_get_peb(struct ubi_device *ubi,
833 int ubi_attach(struct ubi_device *ubi, int force_scan);
836 int ubi_change_vtbl_record(struct ubi_device *ubi, int idx,
838 int ubi_vtbl_rename_volumes(struct ubi_device *ubi,
840 int ubi_read_volume_table(struct ubi_device *ubi, struct ubi_attach_info *ai);
843 int ubi_create_volume(struct ubi_device *ubi, struct ubi_mkvol_req *req);
846 int ubi_rename_volumes(struct ubi_device *ubi, struct list_head *rename_list);
847 int ubi_add_volume(struct ubi_device *ubi, struct ubi_volume *vol);
848 void ubi_free_volume(struct ubi_device *ubi, struct ubi_volume *vol);
851 int ubi_start_update(struct ubi_device *ubi, struct ubi_volume *vol,
853 int ubi_more_update_data(struct ubi_device *ubi, struct ubi_volume *vol,
855 int ubi_start_leb_change(struct ubi_device *ubi, struct ubi_volume *vol,
857 int ubi_more_leb_change_data(struct ubi_device *ubi, struct ubi_volume *vol,
861 int ubi_calc_data_len(const struct ubi_device *ubi, const void *buf,
863 int ubi_check_volume(struct ubi_device *ubi, int vol_id);
864 void ubi_update_reserved(struct ubi_device *ubi);
865 void ubi_calculate_reserved(struct ubi_device *ubi);
883 int ubi_eba_unmap_leb(struct ubi_device *ubi, struct ubi_volume *vol,
885 int ubi_eba_read_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum,
887 int ubi_eba_read_leb_sg(struct ubi_device *ubi, struct ubi_volume *vol,
890 int ubi_eba_write_leb(struct ubi_device *ubi, struct ubi_volume *vol, int lnum,
892 int ubi_eba_write_leb_st(struct ubi_device *ubi, struct ubi_volume *vol,
894 int ubi_eba_atomic_leb_change(struct ubi_device *ubi, struct ubi_volume *vol,
896 int ubi_eba_copy_leb(struct ubi_device *ubi, int from, int to,
898 int ubi_eba_init(struct ubi_device *ubi, struct ubi_attach_info *ai);
899 unsigned long long ubi_next_sqnum(struct ubi_device *ubi);
900 int self_check_eba(struct ubi_device *ubi, struct ubi_attach_info *ai_fastmap,
904 int ubi_sync_erase(struct ubi_device *ubi, struct ubi_wl_entry *e, int torture);
905 int ubi_wl_get_peb(struct ubi_device *ubi);
906 int ubi_wl_put_peb(struct ubi_device *ubi, int vol_id, int lnum,
908 int ubi_wl_flush(struct ubi_device *ubi, int vol_id, int lnum);
909 int ubi_wl_scrub_peb(struct ubi_device *ubi, int pnum);
910 int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai);
911 void ubi_wl_close(struct ubi_device *ubi);
913 struct ubi_wl_entry *ubi_wl_get_fm_peb(struct ubi_device *ubi, int anchor);
914 int ubi_wl_put_fm_peb(struct ubi_device *ubi, struct ubi_wl_entry *used_e,
917 void ubi_refill_pools_and_lock(struct ubi_device *ubi);
918 int ubi_ensure_anchor_pebs(struct ubi_device *ubi);
919 int ubi_bitflip_check(struct ubi_device *ubi, int pnum, int force_scrub);
922 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset,
924 int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset,
926 int ubi_io_sync_erase(struct ubi_device *ubi, int pnum, int torture);
927 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum);
928 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum);
929 int ubi_io_read_ec_hdr(struct ubi_device *ubi, int pnum,
931 int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnum,
933 int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum,
935 int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum,
944 void ubi_put_device(struct ubi_device *ubi);
947 int ubi_volume_notify(struct ubi_device *ubi, struct ubi_volume *vol,
949 int ubi_notify_all(struct ubi_device *ubi, int ntype,
952 void ubi_free_all_volumes(struct ubi_device *ubi);
953 void ubi_free_internal_volumes(struct ubi_device *ubi);
956 void ubi_do_get_device_info(struct ubi_device *ubi, struct ubi_device_info *di);
957 void ubi_do_get_volume_info(struct ubi_device *ubi, struct ubi_volume *vol,
961 int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb,
966 size_t ubi_calc_fm_size(struct ubi_device *ubi);
967 int ubi_update_fastmap(struct ubi_device *ubi);
968 int ubi_scan_fastmap(struct ubi_device *ubi, struct ubi_attach_info *ai,
973 static inline int ubi_update_fastmap(struct ubi_device *ubi) { return 0; }
999 * @ubi: UBI device description object
1003 #define ubi_for_each_free_peb(ubi, e, tmp_rb) \
1004 ubi_rb_for_each_entry((tmp_rb), (e), &(ubi)->free, u.rb)
1008 * @ubi: UBI device description object
1012 #define ubi_for_each_used_peb(ubi, e, tmp_rb) \
1013 ubi_rb_for_each_entry((tmp_rb), (e), &(ubi)->used, u.rb)
1017 * @ubi: UBI device description object
1021 #define ubi_for_each_scrub_peb(ubi, e, tmp_rb) \
1022 ubi_rb_for_each_entry((tmp_rb), (e), &(ubi)->scrub, u.rb)
1026 * @ubi: UBI device description object
1030 #define ubi_for_each_protected_peb(ubi, i, e) \
1032 list_for_each_entry((e), &(ubi->pq[(i)]), u.list)
1065 * @ubi: the UBI device
1069 static inline void ubi_init_vid_buf(const struct ubi_device *ubi,
1074 memset(buf, 0, ubi->vid_hdr_alsize);
1077 vidb->hdr = buf + ubi->vid_hdr_shift;
1082 * @ubi: the UBI device
1086 ubi_alloc_vid_buf(const struct ubi_device *ubi, gfp_t gfp_flags)
1095 buf = kmalloc(ubi->vid_hdr_alsize, gfp_flags);
1101 ubi_init_vid_buf(ubi, vidb, buf);
1130 * @ubi: UBI device description object
1132 static inline void ubi_ro_mode(struct ubi_device *ubi)
1134 if (!ubi->ro_mode) {
1135 ubi->ro_mode = 1;
1136 ubi_warn(ubi, "switch to read-only mode");
1146 static inline int ubi_io_read_data(const struct ubi_device *ubi, void *buf,
1150 return ubi_io_read(ubi, buf, pnum, offset + ubi->leb_start, len);
1158 static inline int ubi_io_write_data(struct ubi_device *ubi, const void *buf,
1163 if (ubi_dbg_power_cut(ubi, MASK_POWER_CUT_DATA)) {
1164 ubi_warn(ubi, "XXXXX emulating a power cut when writing data XXXXX");
1165 ubi_ro_mode(ubi);
1168 return ubi_io_write(ubi, buf, pnum, offset + ubi->leb_start, len);
1173 * @ubi: UBI device description object
1176 static inline int vol_id2idx(const struct ubi_device *ubi, int vol_id)
1179 return vol_id - UBI_INTERNAL_VOL_START + ubi->vtbl_slots;
1186 * @ubi: UBI device description object
1189 static inline int idx2vol_id(const struct ubi_device *ubi, int idx)
1191 if (idx >= ubi->vtbl_slots)
1192 return idx - ubi->vtbl_slots + UBI_INTERNAL_VOL_START;
1214 * @ubi: UBI device description object
1220 static inline struct ubi_wl_entry *ubi_find_fm_block(const struct ubi_device *ubi,
1225 if (ubi->fm) {
1226 for (i = 0; i < ubi->fm->used_blocks; i++) {
1227 if (ubi->fm->e[i]->pnum == pnum)
1228 return ubi->fm->e[i];