Lines Matching defs:dev
18 ftl_region_major_upgrade_enabled(struct spdk_ftl_dev *dev, struct ftl_layout_region *region)
20 if (ftl_region_upgrade_enabled(dev, region)) {
24 if (dev->sb->upgrade_ready) {
27 FTL_ERRLOG(dev, "FTL major upgrade ERROR, required upgrade shutdown in the previous version\n");
33 ftl_region_upgrade_disabled(struct spdk_ftl_dev *dev, struct ftl_layout_region *region)
39 ftl_region_upgrade_enabled(struct spdk_ftl_dev *dev, struct ftl_layout_region *region)
41 if (!(dev->sb->clean == 1 && dev->sb_shm->shm_clean == 0)) {
42 FTL_ERRLOG(dev, "FTL region upgrade: SB dirty\n");
139 region_verify(struct spdk_ftl_dev *dev, struct ftl_layout_upgrade_ctx *ctx)
146 FTL_ERRLOG(dev, "Unknown region version\n");
151 int rc = ctx->upgrade->desc[ver].verify(dev, ctx->reg);
163 ftl_region_upgrade(struct spdk_ftl_dev *dev, struct ftl_layout_upgrade_ctx *ctx)
173 rc = ctx->upgrade->desc[ver].upgrade(dev, ctx);
179 ftl_region_upgrade_completed(struct spdk_ftl_dev *dev, struct ftl_layout_upgrade_ctx *ctx,
191 rc = ftl_superblock_md_layout_upgrade_region(dev, ctx->reg, ctx->next_reg_ver);
193 dev->layout.region[ctx->reg->type].entry_size = entry_size;
194 dev->layout.region[ctx->reg->type].num_entries = num_entries;
204 ctx->cb(dev, ctx->cb_ctx, status);
209 ftl_layout_verify(struct spdk_ftl_dev *dev)
211 struct ftl_layout *layout = &dev->layout;
221 if (ftl_validate_regions(dev, layout)) {
226 ctx.reg = ftl_layout_region_get(dev, reg_type);
232 if (region_verify(dev, &ctx)) {
241 ftl_upgrade_layout_dump(struct spdk_ftl_dev *dev)
243 if (ftl_validate_regions(dev, &dev->layout)) {
247 ftl_layout_dump(dev);
248 ftl_superblock_md_layout_dump(dev);
253 ftl_superblock_upgrade(struct spdk_ftl_dev *dev)
256 struct ftl_layout_region *reg = ftl_layout_region_get(dev, FTL_LAYOUT_REGION_TYPE_SB);
261 reg->current.version = dev->sb->header.version;
263 rc = region_verify(dev, &ctx);
269 rc = ftl_region_upgrade(dev, &ctx);
274 ftl_region_upgrade_completed(dev, &ctx, 0, 0, rc);
278 dev->layout.region[FTL_LAYOUT_REGION_TYPE_SB_BASE].current.version = reg->current.version;
283 layout_upgrade_select_next_region(struct spdk_ftl_dev *dev, struct ftl_layout_upgrade_ctx *ctx)
310 FTL_ERRLOG(dev, "Region %d upgrade fault: version %"PRIu64"/%"PRIu64"\n", reg_type, reg_ver,
320 ftl_layout_upgrade_init_ctx(struct spdk_ftl_dev *dev, struct ftl_layout_upgrade_ctx *ctx)
323 ctx->reg = ftl_layout_region_get(dev, 0);
328 return layout_upgrade_select_next_region(dev, ctx);
339 ftl_layout_upgrade_drop_region(struct spdk_ftl_dev *dev,
348 FTL_ERRLOG(dev,
353 dev->layout.region[reg_type].type = FTL_LAYOUT_REGION_TYPE_INVALID;