Skip to content

Commit

Permalink
vDPA: report virtio-block block-size to user space
Browse files Browse the repository at this point in the history
This commit allows reporting the block size of a
virtio-block device to user space.

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 330b8ae commit 3a1d33f
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
18 changes: 18 additions & 0 deletions drivers/vdpa/vdpa.c
Original file line number Diff line number Diff line change
Expand Up @@ -970,6 +970,21 @@ vdpa_dev_blk_seg_size_config_fill(struct sk_buff *msg, u64 features,
return nla_put_u32(msg, VDPA_ATTR_DEV_BLK_CFG_SEG_SIZE, val_u32);
}

/* fill the block size*/
static int
vdpa_dev_blk_block_size_config_fill(struct sk_buff *msg, u64 features,
const struct virtio_blk_config *config)
{
u32 val_u32;

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

val_u32 = __virtio32_to_cpu(true, config->blk_size);

return nla_put_u32(msg, VDPA_ATTR_DEV_BLK_CFG_BLK_SIZE, val_u32);
}

static int vdpa_dev_blk_config_fill(struct vdpa_device *vdev,
struct sk_buff *msg)
{
Expand All @@ -990,6 +1005,9 @@ static int vdpa_dev_blk_config_fill(struct vdpa_device *vdev,
if (vdpa_dev_blk_seg_size_config_fill(msg, features_device, &config))
return -EMSGSIZE;

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

return 0;
}

Expand Down
1 change: 1 addition & 0 deletions include/uapi/linux/vdpa.h
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ enum vdpa_attr {

VDPA_ATTR_DEV_BLK_CFG_CAPACITY, /* u64 */
VDPA_ATTR_DEV_BLK_CFG_SEG_SIZE, /* u32 */
VDPA_ATTR_DEV_BLK_CFG_BLK_SIZE, /* u32 */

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

0 comments on commit 3a1d33f

Please sign in to comment.