Lines Matching refs:tracker
36 layout_tracker_init_entries(struct ftl_layout_tracker_bdev *tracker, uint64_t bdev_blks) in layout_tracker_init_entries() argument
44 assert(tracker); in layout_tracker_init_entries()
45 assert(tracker->regs_cnt == 0); in layout_tracker_init_entries()
47 tracker->bdev_blks = bdev_blks; in layout_tracker_init_entries()
48 tracker->regs_cnt = 1; in layout_tracker_init_entries()
49 TAILQ_INIT(&tracker->layout_head); in layout_tracker_init_entries()
54 TAILQ_INSERT_HEAD(&tracker->layout_head, entry_free, layout_entry); in layout_tracker_init_entries()
61 struct ftl_layout_tracker_bdev *tracker = calloc(1, sizeof(*tracker)); in ftl_layout_tracker_bdev_init() local
63 if (!tracker) { in ftl_layout_tracker_bdev_init()
67 if (layout_tracker_init_entries(tracker, bdev_blks)) { in ftl_layout_tracker_bdev_init()
68 free(tracker); in ftl_layout_tracker_bdev_init()
72 return tracker; in ftl_layout_tracker_bdev_init()
76 layout_tracker_free_entries(struct ftl_layout_tracker_bdev *tracker) in layout_tracker_free_entries() argument
80 while ((entry = TAILQ_FIRST(&tracker->layout_head))) { in layout_tracker_free_entries()
81 TAILQ_REMOVE(&tracker->layout_head, entry, layout_entry); in layout_tracker_free_entries()
84 tracker->regs_cnt = 0; in layout_tracker_free_entries()
88 ftl_layout_tracker_bdev_fini(struct ftl_layout_tracker_bdev *tracker) in ftl_layout_tracker_bdev_fini() argument
90 assert(tracker); in ftl_layout_tracker_bdev_fini()
91 layout_tracker_free_entries(tracker); in ftl_layout_tracker_bdev_fini()
92 free(tracker); in ftl_layout_tracker_bdev_fini()
96 layout_region_find_min_free(struct ftl_layout_tracker_bdev *tracker, uint64_t blk_sz, in layout_region_find_min_free() argument
102 assert(tracker); in layout_region_find_min_free()
104 TAILQ_FOREACH(entry, &tracker->layout_head, layout_entry) { in layout_region_find_min_free()
129 layout_region_find_from(struct ftl_layout_tracker_bdev *tracker, in layout_region_find_from() argument
133 assert(tracker); in layout_region_find_from()
135 TAILQ_FOREACH_FROM(entry, &tracker->layout_head, layout_entry) { in layout_region_find_from()
146 layout_region_find_first(struct ftl_layout_tracker_bdev *tracker, in layout_region_find_first() argument
150 return layout_region_find_from(tracker, reg_type, reg_ver, TAILQ_FIRST(&tracker->layout_head)); in layout_region_find_first()
154 layout_region_find_next(struct ftl_layout_tracker_bdev *tracker, in layout_region_find_next() argument
159 return layout_region_find_from(tracker, reg_type, reg_ver, entry); in layout_region_find_next()
165 ftl_layout_tracker_bdev_add_region(struct ftl_layout_tracker_bdev *tracker, in ftl_layout_tracker_bdev_add_region() argument
172 assert(tracker); in ftl_layout_tracker_bdev_add_region()
175 entry_new = layout_region_find_first(tracker, reg_type, reg_ver); in ftl_layout_tracker_bdev_add_region()
181 entry_free = layout_region_find_min_free(tracker, blk_sz, blk_align); in ftl_layout_tracker_bdev_add_region()
211 tracker->regs_cnt++; in ftl_layout_tracker_bdev_add_region()
236 tracker->regs_cnt++; in ftl_layout_tracker_bdev_add_region()
248 ftl_layout_tracker_bdev_insert_region(struct ftl_layout_tracker_bdev *tracker, in ftl_layout_tracker_bdev_insert_region() argument
256 assert(tracker); in ftl_layout_tracker_bdev_insert_region()
264 entry_new = layout_region_find_first(tracker, reg_type, reg_ver); in ftl_layout_tracker_bdev_insert_region()
272 for (entry_free = layout_region_find_first(tracker, FTL_LAYOUT_REGION_TYPE_FREE, REG_VER_ANY); in ftl_layout_tracker_bdev_insert_region()
274 entry_free = layout_region_find_next(tracker, FTL_LAYOUT_REGION_TYPE_FREE, REG_VER_ANY, in ftl_layout_tracker_bdev_insert_region()
313 tracker->regs_cnt++; in ftl_layout_tracker_bdev_insert_region()
339 tracker->regs_cnt++; in ftl_layout_tracker_bdev_insert_region()
351 ftl_layout_tracker_bdev_rm_region(struct ftl_layout_tracker_bdev *tracker, in ftl_layout_tracker_bdev_rm_region() argument
355 struct layout_tracker_entry *entry = layout_region_find_first(tracker, reg_type, reg_ver); in ftl_layout_tracker_bdev_rm_region()
368 TAILQ_REMOVE(&tracker->layout_head, entry_rm, layout_entry); in ftl_layout_tracker_bdev_rm_region()
380 tracker->regs_cnt--; in ftl_layout_tracker_bdev_rm_region()
386 TAILQ_REMOVE(&tracker->layout_head, entry_rm, layout_entry); in ftl_layout_tracker_bdev_rm_region()
396 tracker->regs_cnt--; in ftl_layout_tracker_bdev_rm_region()
403 ftl_layout_tracker_bdev_find_next_region(struct ftl_layout_tracker_bdev *tracker, in ftl_layout_tracker_bdev_find_next_region() argument
415 entry = layout_region_find_first(tracker, reg_type, REG_VER_ANY); in ftl_layout_tracker_bdev_find_next_region()
419 entry = layout_region_find_next(tracker, reg_type, REG_VER_ANY, entry); in ftl_layout_tracker_bdev_find_next_region()
425 ftl_layout_tracker_bdev_blob_store(struct ftl_layout_tracker_bdev *tracker, void *blob_buf, in ftl_layout_tracker_bdev_blob_store() argument
432 assert(tracker); in ftl_layout_tracker_bdev_blob_store()
434 TAILQ_FOREACH(entry, &tracker->layout_head, layout_entry) { in ftl_layout_tracker_bdev_blob_store()
461 ftl_layout_tracker_bdev_blob_load(struct ftl_layout_tracker_bdev *tracker, void *blob_buf, in ftl_layout_tracker_bdev_blob_load() argument
474 layout_tracker_free_entries(tracker); in ftl_layout_tracker_bdev_blob_load()
477 if (layout_tracker_init_entries(tracker, tracker->bdev_blks)) { in ftl_layout_tracker_bdev_blob_load()
488 if (!ftl_layout_tracker_bdev_insert_region(tracker, blob_entry->type, blob_entry->ver, in ftl_layout_tracker_bdev_blob_load()