scsi: scsi_debug: Zero clear zones at reset write pointer
When a reset is requested the position of the write pointer is updated but
the data in the corresponding zone is not cleared. Instead scsi_debug
returns any data written before the write pointer was reset. This is an
error and prevents using scsi_debug for stale page cache testing of the
BLKRESETZONE ioctl.
Zero written data in the zone when resetting the write pointer.
Link: https://lore.kernel.org/r/20211122061223.298890-1-shinichiro.kawasaki@wdc.com
Fixes: f0d1cf9378 ("scsi: scsi_debug: Add ZBC zone commands")
Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
eb97545d62
commit
2d62253eb1
1 changed files with 5 additions and 0 deletions
|
|
@ -4657,6 +4657,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;
|
||||
|
|
@ -4668,6 +4669,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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue