[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 07/17] virtio-blk: switch to standard-headers
From: |
Thomas Huth |
Subject: |
Re: [Qemu-devel] [PATCH v3 07/17] virtio-blk: switch to standard-headers |
Date: |
Wed, 18 Feb 2015 10:19:16 +0100 |
On Mon, 16 Feb 2015 22:36:03 +0100
"Michael S. Tsirkin" <address@hidden> wrote:
> Drop duplicated code. Minor codechanges were required
> as geometry is a sub-structure now.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
> ---
> include/hw/virtio/virtio-blk.h | 77
> +-----------------------------------------
> hw/block/virtio-blk.c | 8 ++---
> 2 files changed, 5 insertions(+), 80 deletions(-)
>
> diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h
> index fc7d311..b3ffcd9 100644
> --- a/include/hw/virtio/virtio-blk.h
> +++ b/include/hw/virtio/virtio-blk.h
> @@ -14,6 +14,7 @@
> #ifndef _QEMU_VIRTIO_BLK_H
> #define _QEMU_VIRTIO_BLK_H
>
> +#include "standard-headers/linux/virtio_blk.h"
> #include "hw/virtio/virtio.h"
> #include "hw/block/block.h"
> #include "sysemu/iothread.h"
> @@ -23,88 +24,12 @@
> #define VIRTIO_BLK(obj) \
> OBJECT_CHECK(VirtIOBlock, (obj), TYPE_VIRTIO_BLK)
>
> -/* from Linux's linux/virtio_blk.h */
> -
> -/* The ID for virtio_block */
> -#define VIRTIO_ID_BLOCK 2
> -
> -/* Feature bits */
> -#define VIRTIO_BLK_F_BARRIER 0 /* Does host support barriers? */
> -#define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */
> -#define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */
> -#define VIRTIO_BLK_F_GEOMETRY 4 /* Indicates support of legacy
> geometry */
> -#define VIRTIO_BLK_F_RO 5 /* Disk is read-only */
> -#define VIRTIO_BLK_F_BLK_SIZE 6 /* Block size of disk is available*/
> -#define VIRTIO_BLK_F_SCSI 7 /* Supports scsi command passthru */
> -/* #define VIRTIO_BLK_F_IDENTIFY 8 ATA IDENTIFY supported,
> DEPRECATED */
> -#define VIRTIO_BLK_F_WCE 9 /* write cache enabled */
> -#define VIRTIO_BLK_F_TOPOLOGY 10 /* Topology information is available
> */
> -#define VIRTIO_BLK_F_CONFIG_WCE 11 /* write cache configurable */
> -
> -#define VIRTIO_BLK_ID_BYTES 20 /* ID string length */
> -
> -struct virtio_blk_config
> -{
> - uint64_t capacity;
> - uint32_t size_max;
> - uint32_t seg_max;
> - uint16_t cylinders;
> - uint8_t heads;
> - uint8_t sectors;
> - uint32_t blk_size;
> - uint8_t physical_block_exp;
> - uint8_t alignment_offset;
> - uint16_t min_io_size;
> - uint32_t opt_io_size;
> - uint8_t wce;
> -} QEMU_PACKED;
> -
> -/* These two define direction. */
> -#define VIRTIO_BLK_T_IN 0
> -#define VIRTIO_BLK_T_OUT 1
> -
> -/* This bit says it's a scsi command, not an actual read or write. */
> -#define VIRTIO_BLK_T_SCSI_CMD 2
> -
> -/* Flush the volatile write cache */
> -#define VIRTIO_BLK_T_FLUSH 4
> -
> -/* return the device ID string */
> -#define VIRTIO_BLK_T_GET_ID 8
> -
> -/* Barrier before this op. */
> -#define VIRTIO_BLK_T_BARRIER 0x80000000
> -
> -/* This is the first element of the read scatter-gather list. */
> -struct virtio_blk_outhdr
> -{
> - /* VIRTIO_BLK_T* */
> - uint32_t type;
> - /* io priority. */
> - uint32_t ioprio;
> - /* Sector (ie. 512 byte offset) */
> - uint64_t sector;
> -};
> -
> -#define VIRTIO_BLK_S_OK 0
> -#define VIRTIO_BLK_S_IOERR 1
> -#define VIRTIO_BLK_S_UNSUPP 2
> -
> /* This is the last element of the write scatter-gather list */
> struct virtio_blk_inhdr
> {
> unsigned char status;
> };
>
> -/* SCSI pass-through header */
> -struct virtio_scsi_inhdr
> -{
> - uint32_t errors;
> - uint32_t data_len;
> - uint32_t sense_len;
> - uint32_t residual;
> -};
> -
> struct VirtIOBlkConf
> {
> BlockConf conf;
> diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> index 1a8a176..6828f48 100644
> --- a/hw/block/virtio-blk.c
> +++ b/hw/block/virtio-blk.c
> @@ -667,11 +667,11 @@ static void virtio_blk_update_config(VirtIODevice
> *vdev, uint8_t *config)
> memset(&blkcfg, 0, sizeof(blkcfg));
> virtio_stq_p(vdev, &blkcfg.capacity, capacity);
> virtio_stl_p(vdev, &blkcfg.seg_max, 128 - 2);
> - virtio_stw_p(vdev, &blkcfg.cylinders, conf->cyls);
> + virtio_stw_p(vdev, &blkcfg.geometry.cylinders, conf->cyls);
> virtio_stl_p(vdev, &blkcfg.blk_size, blk_size);
> virtio_stw_p(vdev, &blkcfg.min_io_size, conf->min_io_size / blk_size);
> virtio_stw_p(vdev, &blkcfg.opt_io_size, conf->opt_io_size / blk_size);
> - blkcfg.heads = conf->heads;
> + blkcfg.geometry.heads = conf->heads;
> /*
> * We must ensure that the block device capacity is a multiple of
> * the logical block size. If that is not the case, let's use
> @@ -684,9 +684,9 @@ static void virtio_blk_update_config(VirtIODevice *vdev,
> uint8_t *config)
> * per track (cylinder).
> */
> if (blk_getlength(s->blk) / conf->heads / conf->secs % blk_size) {
> - blkcfg.sectors = conf->secs & ~s->sector_mask;
> + blkcfg.geometry.sectors = conf->secs & ~s->sector_mask;
> } else {
> - blkcfg.sectors = conf->secs;
> + blkcfg.geometry.sectors = conf->secs;
> }
> blkcfg.size_max = 0;
> blkcfg.physical_block_exp = get_physical_block_exp(conf);
Reviewed-by: Thomas Huth <address@hidden>
- [Qemu-devel] [PATCH v3 02/17] include: import virtio headers from linux 4.0, (continued)
- [Qemu-devel] [PATCH v3 02/17] include: import virtio headers from linux 4.0, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 05/17] virtio-balloon: use standard headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 04/17] virtio: use standard-headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 06/17] virtio-9p: use standard headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 07/17] virtio-blk: switch to standard-headers, Michael S. Tsirkin, 2015/02/16
- Re: [Qemu-devel] [PATCH v3 07/17] virtio-blk: switch to standard-headers,
Thomas Huth <=
- [Qemu-devel] [PATCH v3 08/17] virtio-net, tap: use standard-headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 09/17] virtio-rng: use standard-headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 10/17] virtio-scsi: use standard-headers, Michael S. Tsirkin, 2015/02/16
- [Qemu-devel] [PATCH v3 11/17] virtio-serial: switch to standard-headers, Michael S. Tsirkin, 2015/02/16