Displaying 4 results from an estimated 4 matches for "virtio_blk_f_get_id".
2009 Sep 29
0
[PATCH 3/4] virtio_blk: implement a request-based ID command, VIRTIO_BLK_T_GET_ID
...IO_BLK_ID_BYTES, GFP_KERNEL);
if (!opaque)
- goto out;
+ return -ENOMEM;
- err = virtio_config_buf(vblk->vdev, VIRTIO_BLK_F_IDENTIFY,
- offsetof(struct virtio_blk_config_deprecated, identify), opaque,
- VIRTIO_BLK_ID_BYTES);
+ /* The modern way. */
+ if (virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_GET_ID))
+ err = virtblk_get_id(vblk, opaque);
+ /* The deprecated way. */
+ else if (virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_IDENTIFY))
+ err = virtblk_identify_deprecated(vblk, opaque);
+ /* No way. */
+ else
+ err = -ENOTTY;
- if (err)
- goto out_kfree;
+ if (!err)
+ if (copy_to_user(argp...
2009 Sep 29
0
[PATCH 3/4] virtio_blk: implement a request-based ID command, VIRTIO_BLK_T_GET_ID
...IO_BLK_ID_BYTES, GFP_KERNEL);
if (!opaque)
- goto out;
+ return -ENOMEM;
- err = virtio_config_buf(vblk->vdev, VIRTIO_BLK_F_IDENTIFY,
- offsetof(struct virtio_blk_config_deprecated, identify), opaque,
- VIRTIO_BLK_ID_BYTES);
+ /* The modern way. */
+ if (virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_GET_ID))
+ err = virtblk_get_id(vblk, opaque);
+ /* The deprecated way. */
+ else if (virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_IDENTIFY))
+ err = virtblk_identify_deprecated(vblk, opaque);
+ /* No way. */
+ else
+ err = -ENOTTY;
- if (err)
- goto out_kfree;
+ if (!err)
+ if (copy_to_user(argp...
2009 Sep 29
0
[PATCH 4/4] lguest: GET_ID "support"
...nds unsupported\n");
*in = VIRTIO_BLK_S_UNSUPP;
wlen = sizeof(*in);
@@ -1751,6 +1755,9 @@ static void setup_block_file(const char
add_feature(dev, VIRTIO_BLK_F_SEG_MAX);
conf.seg_max = cpu_to_le32(VIRTQUEUE_NUM - 2);
+ /* We have GET_ID, at least for testing! */
+ add_feature(dev, VIRTIO_BLK_F_GET_ID);
+
/*
* We only have 8 bits of configuration space for each device. But a
* new feature for virtio_blk added a 1k 'identify' field to struct
2009 Sep 29
0
[PATCH 4/4] lguest: GET_ID "support"
...nds unsupported\n");
*in = VIRTIO_BLK_S_UNSUPP;
wlen = sizeof(*in);
@@ -1751,6 +1755,9 @@ static void setup_block_file(const char
add_feature(dev, VIRTIO_BLK_F_SEG_MAX);
conf.seg_max = cpu_to_le32(VIRTQUEUE_NUM - 2);
+ /* We have GET_ID, at least for testing! */
+ add_feature(dev, VIRTIO_BLK_F_GET_ID);
+
/*
* We only have 8 bits of configuration space for each device. But a
* new feature for virtio_blk added a 1k 'identify' field to struct