On 3/28/23 11:29, Dmitry Fomichev wrote: > When the kernel is built without support for zoned block devices, > virtio-blk probe needs to error out any host-managed device scans > to prevent such devices from appearing in the system as non-zoned. > The current virtio-blk code simply bypasses all ZBD checks if > CONFIG_BLK_DEV_ZONED is not defined and this leads to host-managed > block devices being presented as non-zoned in the OS. This is one of > the main problems this patch series is aimed to fix. > > In this patch, make VIRTIO_BLK_F_ZONED feature defined even when > CONFIG_BLK_DEV_ZONED is not. This change makes the code compliant with > the voted revision of virtio-blk ZBD spec. Modify the probe code to > look at the situation when VIRTIO_BLK_F_ZONED is negotiated in a kernel > that is built without ZBD support. In this case, the code checks > the zoned model of the device and fails the probe is the device > is host-managed. > > The patch also adds the comment to clarify that the call to perform > the zoned device probe is correctly placed after virtio_device ready(). > > Fixes: 95bfec41bd3d ("virtio-blk: add support for zoned block devices") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Dmitry Fomichev <dmitry.fomichev@xxxxxxx> One nit below, but otherwise looks good to me. Reviewed-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > -static inline bool virtblk_has_zoned_feature(struct virtio_device *vdev) > -{ > - return false; > + u8 model; > + > + virtio_cread(vdev, struct virtio_blk_config, zoned.model, &model); > + if (model == VIRTIO_BLK_Z_HM) { > + dev_err(&vdev->dev, > + "zoned devices are not supported by the kernel"); May be simply: "Zoned devices are not supported" Or: "Support for zoned devices is disabled" -- Damien Le Moal Western Digital Research