On 2023/12/18 1:53, Christoph Hellwig wrote:
> Move reading and checking the zoned model from virtblk_probe_zoned_device
> into the caller, leaving only the code to perform the actual setup for
> host managed zoned devices in virtblk_probe_zoned_device.
> 
> This allows to share the model reading and sharing between builds with
> and without CONFIG_BLK_DEV_ZONED, and improve it for the
> !CONFIG_BLK_DEV_ZONED case.
> 
> Signed-off-by: Christoph Hellwig <[email protected]>

Looks good.
Reviewed-by: Damien Le Moal <[email protected]>

> ---
>  drivers/block/virtio_blk.c | 50 +++++++++++++++++---------------------
>  1 file changed, 22 insertions(+), 28 deletions(-)
> 
> diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
> index d53d6aa8ee69a4..aeead732a24dc9 100644
> --- a/drivers/block/virtio_blk.c
> +++ b/drivers/block/virtio_blk.c
> @@ -748,22 +748,6 @@ static int virtblk_probe_zoned_device(struct 
> virtio_device *vdev,
>                                      struct request_queue *q)
>  {
>       u32 v, wg;
> -     u8 model;
> -
> -     virtio_cread(vdev, struct virtio_blk_config,
> -                  zoned.model, &model);
> -
> -     switch (model) {
> -     case VIRTIO_BLK_Z_NONE:
> -     case VIRTIO_BLK_Z_HA:
> -             /* Present the host-aware device as non-zoned */
> -             return 0;
> -     case VIRTIO_BLK_Z_HM:
> -             break;
> -     default:
> -             dev_err(&vdev->dev, "unsupported zone model %d\n", model);
> -             return -EINVAL;
> -     }
>  
>       dev_dbg(&vdev->dev, "probing host-managed zoned device\n");
>  
> @@ -846,16 +830,9 @@ static inline void virtblk_revalidate_zones(struct 
> virtio_blk *vblk)
>  static inline int virtblk_probe_zoned_device(struct virtio_device *vdev,
>                       struct virtio_blk *vblk, struct request_queue *q)
>  {
> -     u8 model;
> -
> -     virtio_cread(vdev, struct virtio_blk_config, zoned.model, &model);
> -     if (model == VIRTIO_BLK_Z_HM) {
> -             dev_err(&vdev->dev,
> -                     "virtio_blk: zoned devices are not supported");
> -             return -EOPNOTSUPP;
> -     }
> -
> -     return 0;
> +     dev_err(&vdev->dev,
> +             "virtio_blk: zoned devices are not supported");
> +     return -EOPNOTSUPP;
>  }
>  #endif /* CONFIG_BLK_DEV_ZONED */
>  
> @@ -1570,9 +1547,26 @@ static int virtblk_probe(struct virtio_device *vdev)
>        * placed after the virtio_device_ready() call above.
>        */
>       if (virtio_has_feature(vdev, VIRTIO_BLK_F_ZONED)) {
> -             err = virtblk_probe_zoned_device(vdev, vblk, q);
> -             if (err)
> +             u8 model;
> +
> +             virtio_cread(vdev, struct virtio_blk_config, zoned.model,
> +                             &model);
> +             switch (model) {
> +             case VIRTIO_BLK_Z_NONE:
> +             case VIRTIO_BLK_Z_HA:
> +                     /* Present the host-aware device as non-zoned */
> +                     break;
> +             case VIRTIO_BLK_Z_HM:
> +                     err = virtblk_probe_zoned_device(vdev, vblk, q);
> +                     if (err)
> +                             goto out_cleanup_disk;
> +                     break;
> +             default:
> +                     dev_err(&vdev->dev, "unsupported zone model %d\n",
> +                             model);
> +                     err = -EINVAL;
>                       goto out_cleanup_disk;
> +             }
>       }
>  
>       err = device_add_disk(&vdev->dev, vblk->disk, virtblk_attr_groups);

-- 
Damien Le Moal
Western Digital Research



_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to