blob: bd1f07e5ce9a7fbcc0869987f2c25089c6fa9e0e [file] [log] [blame]
Richard Weinberger78d6d492014-11-10 18:21:51 +01001#ifndef UBI_WL_H
2#define UBI_WL_H
3#ifdef CONFIG_MTD_UBI_FASTMAP
Richard Weinberger78d6d492014-11-10 18:21:51 +01004static int anchor_pebs_avalible(struct rb_root *root);
5static void update_fastmap_work_fn(struct work_struct *wrk);
6static struct ubi_wl_entry *find_anchor_wl_entry(struct rb_root *root);
7static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi);
8static void ubi_fastmap_close(struct ubi_device *ubi);
Richard Weinbergeracfda792014-10-28 17:07:06 +01009static inline void ubi_fastmap_init(struct ubi_device *ubi, int *count)
10{
11 /* Reserve enough LEBs to store two fastmaps. */
12 *count += (ubi->fm_size / ubi->leb_size) * 2;
13 INIT_WORK(&ubi->fm_work, update_fastmap_work_fn);
14}
Richard Weinberger2f84c2462014-10-29 10:31:41 +010015static struct ubi_wl_entry *may_reserve_for_fm(struct ubi_device *ubi,
16 struct ubi_wl_entry *e,
17 struct rb_root *root);
Richard Weinberger78d6d492014-11-10 18:21:51 +010018#else /* !CONFIG_MTD_UBI_FASTMAP */
19static struct ubi_wl_entry *get_peb_for_wl(struct ubi_device *ubi);
Richard Weinberger78d6d492014-11-10 18:21:51 +010020static inline void ubi_fastmap_close(struct ubi_device *ubi) { }
Richard Weinbergeracfda792014-10-28 17:07:06 +010021static inline void ubi_fastmap_init(struct ubi_device *ubi, int *count) { }
Richard Weinberger2f84c2462014-10-29 10:31:41 +010022static struct ubi_wl_entry *may_reserve_for_fm(struct ubi_device *ubi,
23 struct ubi_wl_entry *e,
24 struct rb_root *root) {
25 return e;
26}
Richard Weinberger78d6d492014-11-10 18:21:51 +010027#endif /* CONFIG_MTD_UBI_FASTMAP */
28#endif /* UBI_WL_H */