diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c index 164f41fcf9eb..068a3832b5f5 100644 --- a/drivers/scsi/sd_zbc.c +++ b/drivers/scsi/sd_zbc.c @@ -274,6 +274,17 @@ int sd_zbc_report_zones(struct gendisk *disk, sector_t sector, while (zone_idx < nr_zones && lba < sdkp->capacity) { ret = sd_zbc_do_report_zones(sdkp, buf, buflen, lba, true); + if (ret && zone_idx) { + sd_printk(KERN_WARNING, sdkp, + "ZBC violation: %llu LBAs are not associated with a zone (zone length %llu)\n", + sdkp->capacity - lba, zone_length); + sdkp->capacity = lba; + set_capacity_and_notify(disk, + logical_to_sectors(sdkp->device, + sdkp->capacity)); + ret = 0; + break; + } if (ret) goto out;