Skip to content

Commit

Permalink
vDPA: report virtio-block write zeroes configuration to user space
Browse files Browse the repository at this point in the history
This commits reports write zeroes configuration of
virtio-block devices to user space, includes:
1)maximum write zeroes sectors size
2)maximum write zeroes segment number

Signed-off-by: Zhu Lingshan <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Michael S. Tsirkin <[email protected]>
  • Loading branch information
ls-zhu authored and mstsirkin committed Mar 19, 2024
1 parent 65848f4 commit 6bdc784
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 0 deletions.
23 changes: 23 additions & 0 deletions drivers/vdpa/vdpa.c
Original file line number Diff line number Diff line change
Expand Up @@ -1064,6 +1064,26 @@ static int vdpa_dev_blk_discard_config_fill(struct sk_buff *msg, u64 features,
return 0;
}

static int
vdpa_dev_blk_write_zeroes_config_fill(struct sk_buff *msg, u64 features,
const struct virtio_blk_config *config)
{
u32 val_u32;

if ((features & BIT_ULL(VIRTIO_BLK_F_WRITE_ZEROES)) == 0)
return 0;

val_u32 = __virtio32_to_cpu(true, config->max_write_zeroes_sectors);
if (nla_put_u32(msg, VDPA_ATTR_DEV_BLK_CFG_MAX_WRITE_ZEROES_SEC, val_u32))
return -EMSGSIZE;

val_u32 = __virtio32_to_cpu(true, config->max_write_zeroes_seg);
if (nla_put_u32(msg, VDPA_ATTR_DEV_BLK_CFG_MAX_WRITE_ZEROES_SEG, val_u32))
return -EMSGSIZE;

return 0;
}

static int vdpa_dev_blk_config_fill(struct vdpa_device *vdev,
struct sk_buff *msg)
{
Expand Down Expand Up @@ -1099,6 +1119,9 @@ static int vdpa_dev_blk_config_fill(struct vdpa_device *vdev,
if (vdpa_dev_blk_discard_config_fill(msg, features_device, &config))
return -EMSGSIZE;

if (vdpa_dev_blk_write_zeroes_config_fill(msg, features_device, &config))
return -EMSGSIZE;

return 0;
}

Expand Down
2 changes: 2 additions & 0 deletions include/uapi/linux/vdpa.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ enum vdpa_attr {
VDPA_ATTR_DEV_BLK_CFG_MAX_DISCARD_SEC, /* u32 */
VDPA_ATTR_DEV_BLK_CFG_MAX_DISCARD_SEG, /* u32 */
VDPA_ATTR_DEV_BLK_CFG_DISCARD_SEC_ALIGN,/* u32 */
VDPA_ATTR_DEV_BLK_CFG_MAX_WRITE_ZEROES_SEC, /* u32 */
VDPA_ATTR_DEV_BLK_CFG_MAX_WRITE_ZEROES_SEG, /* u32 */

/* new attributes must be added above here */
VDPA_ATTR_MAX,
Expand Down

0 comments on commit 6bdc784

Please sign in to comment.