On 2021/11/26 21:55, Niklas Cassel wrote: > From: Niklas Cassel <niklas.cassel@xxxxxxx> > > sd_zbc_parse_report() fills in a struct blk_zone, which is the block layer > representation of a zone. This struct is also what will be copied to user > for a BLKREPORTZONE ioctl. > > Since sd_zbc_parse_report() compares against zone.type and zone.cond, which > are members of a struct blk_zone, the correct enum values to compare > against are the enum values defined by the block layer. > > These specific enum values for ZBC and the block layer happen to have the > same enum constants, but they could theoretically have been different. > > Compare against the block layer enum values, to make it more obvious that > struct blk_zone is the block layer representation of a zone, and not the > SCSI/ZBC representation of a zone. > > Signed-off-by: Niklas Cassel <niklas.cassel@xxxxxxx> > --- > drivers/scsi/sd_zbc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c > index ed06798983f8..024f1bec6e5a 100644 > --- a/drivers/scsi/sd_zbc.c > +++ b/drivers/scsi/sd_zbc.c > @@ -62,8 +62,8 @@ static int sd_zbc_parse_report(struct scsi_disk *sdkp, u8 *buf, > zone.capacity = zone.len; > zone.start = logical_to_sectors(sdp, get_unaligned_be64(&buf[16])); > zone.wp = logical_to_sectors(sdp, get_unaligned_be64(&buf[24])); > - if (zone.type != ZBC_ZONE_TYPE_CONV && > - zone.cond == ZBC_ZONE_COND_FULL) > + if (zone.type != BLK_ZONE_TYPE_CONVENTIONAL && > + zone.cond == BLK_ZONE_COND_FULL) > zone.wp = zone.start + zone.len; For the sake of avoiding layering violation, I would keep the code as is, unles Martin and James are OK with this ? A more sensible patch may be to add a static checking that all BLK_ZONE_COND_* and BLK_ZONE_TYPE_* enum values are equal to the ZBC defined values in include/scsi/scsi_proto.h (ZBC_ZONE_COND_* and ZBC_ZONE_TYPE_* macros). -- Damien Le Moal Western Digital Research