On 2021/11/22 15:12, Shin'ichiro Kawasaki wrote: > When reset write pointer is requested to scsi_debug devices with zoned > model, positions of write pointers are reset, but the data in the target > zones are not cleared. Read to the zones returns data written before the > reset write pointer. This unexpected left data is confusing and does not > allow using scsi_debug for stale page cache test of the BLKRESETZONE > ioctl. Hence, zero clear the written data in the zones at reset write > pointer. > > Fixes: f0d1cf9378bd ("scsi: scsi_debug: Add ZBC zone commands") > Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx> > --- > Changes from v1: > * Zero clear only the written data area in non-empty zones > > drivers/scsi/scsi_debug.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c > index 1d0278da9041..1ef9907c479a 100644 > --- a/drivers/scsi/scsi_debug.c > +++ b/drivers/scsi/scsi_debug.c > @@ -4653,6 +4653,7 @@ static void zbc_rwp_zone(struct sdebug_dev_info *devip, > struct sdeb_zone_state *zsp) > { > enum sdebug_z_cond zc; > + struct sdeb_store_info *sip = devip2sip(devip, false); > > if (zbc_zone_is_conv(zsp)) > return; > @@ -4664,6 +4665,10 @@ static void zbc_rwp_zone(struct sdebug_dev_info *devip, > if (zsp->z_cond == ZC4_CLOSED) > devip->nr_closed--; > > + if (zsp->z_wp > zsp->z_start) > + memset(sip->storep + zsp->z_start * sdebug_sector_size, 0, > + (zsp->z_wp - zsp->z_start) * sdebug_sector_size); > + > zsp->z_non_seq_resource = false; > zsp->z_wp = zsp->z_start; > zsp->z_cond = ZC1_EMPTY; > Looks good. Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> -- Damien Le Moal Western Digital Research