Lines Matching defs:reg

303 sb_get_md_layout_tracker(struct spdk_ftl_dev *dev, struct ftl_layout_region *reg)
305 return (reg->bdev_desc == dev->base_bdev_desc) ? dev->base_layout_tracker : dev->nvc_layout_tracker;
309 sb_md_layout_delete_prev_region(struct spdk_ftl_dev *dev, struct ftl_layout_region *reg)
312 struct ftl_layout_tracker_bdev *layout_tracker = sb_get_md_layout_tracker(dev, reg);
314 rc = ftl_layout_tracker_bdev_rm_region(layout_tracker, reg->type, reg->current.version);
316 ftl_bug(reg->current.version != 0 && rc != 0);
320 sb_md_layout_update_prev_region(struct spdk_ftl_dev *dev, struct ftl_layout_region *reg,
325 struct ftl_layout_tracker_bdev *layout_tracker = sb_get_md_layout_tracker(dev, reg);
329 ftl_layout_tracker_bdev_find_next_region(layout_tracker, reg->type, &reg_search_ctx);
350 ftl_superblock_v5_md_layout_upgrade_region(struct spdk_ftl_dev *dev, struct ftl_layout_region *reg,
356 ftl_bug(reg->current.version >= new_version);
358 reg_next = sb_md_layout_find_region(dev, reg->type, sb_md_layout_find_region_version, &new_version);
366 ftl_bug(reg_next->type != reg->type);
367 sb_md_layout_delete_prev_region(dev, reg);
368 reg->current.offset = reg_next->blk_offs;
369 reg->current.blocks = reg_next->blk_sz;
376 sb_md_layout_update_prev_region(dev, reg, new_version);
379 reg->current.version = new_version;
380 latest_ver = ftl_layout_upgrade_region_get_latest_version(reg->type);
383 reg_next = sb_md_layout_find_region(dev, reg->type, sb_md_layout_find_latest_region, NULL);
387 reg_next = sb_md_layout_find_region(dev, reg->type, sb_md_layout_find_oldest_region, NULL);
391 reg_next = sb_md_layout_find_region(dev, reg->type, sb_md_layout_find_region_version, &new_version);
392 ftl_bug(reg->type != reg_next->type);
393 ftl_bug(reg->current.version != reg_next->ver);
394 ftl_bug(reg->current.offset != reg_next->blk_offs);
395 ftl_bug(reg->current.blocks != reg_next->blk_sz);
440 struct ftl_layout_region *reg;
457 reg = &dev->layout.region[reg_search_ctx->type];
460 if (reg->type == FTL_LAYOUT_REGION_TYPE_INVALID) {
461 reg->type = reg_search_ctx->type;
462 reg->current.version = reg_search_ctx->ver;
463 reg->current.offset = reg_search_ctx->blk_offs;
464 reg->current.blocks = reg_search_ctx->blk_sz;
469 if (reg_search_ctx->ver < reg->current.version) {
470 reg->current.version = reg_search_ctx->ver;
471 reg->current.offset = reg_search_ctx->blk_offs;
472 reg->current.blocks = reg_search_ctx->blk_sz;
477 if (reg_search_ctx->ver > reg->current.version) {
482 assert(reg_search_ctx->ver == reg->current.version);
483 if (reg->current.offset != reg_search_ctx->blk_offs ||
484 reg->current.blocks != reg_search_ctx->blk_sz) {
485 FTL_ERRLOG(dev, "Corrupted layout blob: reg type 0x%"PRIx32"\n", reg_search_ctx->type);
495 struct ftl_layout_region *reg = ftl_layout_region_get(dev, reg_type);
496 if (!reg) {
501 if (reg->current.version > ftl_layout_upgrade_get_latest_version(reg_type)) {
502 FTL_ERRLOG(dev, "Unknown region version found in layout blob: reg type 0x%"PRIx32"\n",
514 struct ftl_layout_region *reg = &dev->layout.region[FTL_LAYOUT_REGION_TYPE_DATA_BASE];
517 assert(reg->type == FTL_LAYOUT_REGION_TYPE_INVALID);
527 ftl_layout_base_offset(dev), reg)) {