diff --git a/lib/ftl/ftl_band.c b/lib/ftl/ftl_band.c index 625068d9bf..3b0b393107 100644 --- a/lib/ftl/ftl_band.c +++ b/lib/ftl/ftl_band.c @@ -1043,11 +1043,14 @@ ftl_band_erase_cb(struct ftl_io *io, void *ctx, int status) { struct ftl_zone *zone; + zone = ftl_band_zone_from_addr(io->band, io->addr); + zone->busy = false; + if (spdk_unlikely(status)) { ftl_erase_fail(io, status); return; } - zone = ftl_band_zone_from_addr(io->band, io->addr); + zone->info.state = SPDK_BDEV_ZONE_STATE_EMPTY; zone->info.write_pointer = zone->info.zone_id; } @@ -1075,9 +1078,11 @@ ftl_band_erase(struct ftl_band *band) break; } + zone->busy = true; io->addr.offset = zone->info.zone_id; rc = ftl_io_erase(io); if (rc) { + zone->busy = false; assert(0); /* TODO: change band's state back to close? */ break;