[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 29/35] scsi-disk: remove cluster_size
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-devel] [PATCH 29/35] scsi-disk: remove cluster_size |
Date: |
Mon, 24 Oct 2011 17:10:14 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110927 Thunderbird/7.0 |
Am 13.10.2011 13:03, schrieb Paolo Bonzini:
> This field is redundant, and its presence makes it more complicated
> to share reqops between the upcoming scsi-block and scsi-generic.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> hw/scsi-disk.c | 45 ++++++++++++++++++++++-----------------------
> 1 files changed, 22 insertions(+), 23 deletions(-)
>
> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
> index 5e3ef51..7f2f67f 100644
> --- a/hw/scsi-disk.c
> +++ b/hw/scsi-disk.c
> @@ -65,9 +65,6 @@ typedef struct SCSIDiskReq {
> struct SCSIDiskState
> {
> SCSIDevice qdev;
> - /* The qemu block layer uses a fixed 512 byte sector size.
> - This is the number of 512 byte blocks in a single scsi sector. */
> - int cluster_size;
> uint32_t removable;
> uint64_t max_lba;
> bool media_changed;
> @@ -862,7 +859,7 @@ static int mode_sense_page(SCSIDiskState *s, int page,
> uint8_t **p_outbuf,
> bdrv_get_geometry_hint(bdrv, &cylinders, &heads, &secs);
> p[4] = heads & 0xff;
> p[5] = secs & 0xff;
> - p[6] = s->cluster_size * 2;
> + p[6] = s->qdev.blocksize >> 8;
> p[8] = (cylinders >> 8) & 0xff;
> p[9] = cylinders & 0xff;
> /* Write precomp start cylinder, disabled */
> @@ -991,7 +988,7 @@ static int scsi_disk_emulate_mode_sense(SCSIDiskReq *r,
> uint8_t *outbuf)
> } else { /* MODE_SENSE_10 */
> outbuf[7] = 8; /* Block descriptor length */
> }
> - nb_sectors /= s->cluster_size;
> + nb_sectors /= (s->qdev.blocksize / 512);
> if (nb_sectors > 0xffffff)
> nb_sectors = 0;
> p[0] = 0; /* media density code */
> @@ -1000,7 +997,7 @@ static int scsi_disk_emulate_mode_sense(SCSIDiskReq *r,
> uint8_t *outbuf)
> p[3] = nb_sectors & 0xff;
> p[4] = 0; /* reserved */
> p[5] = 0; /* bytes 5-7 are the sector size in bytes */
> - p[6] = s->cluster_size * 2;
> + p[6] = s->qdev.blocksize >> 8;
> p[7] = 0;
> p += 8;
> }
> @@ -1050,7 +1047,7 @@ static int scsi_disk_emulate_read_toc(SCSIRequest *req,
> uint8_t *outbuf)
> start_track = req->cmd.buf[6];
> bdrv_get_geometry(s->qdev.conf.bs, &nb_sectors);
> DPRINTF("Read TOC (track %d format %d msf %d)\n", start_track, format,
> msf >> 1);
> - nb_sectors /= s->cluster_size;
> + nb_sectors /= s->qdev.blocksize / 512;
> switch (format) {
> case 0:
> toclen = cdrom_read_toc(nb_sectors, outbuf, msf, start_track);
> @@ -1176,7 +1173,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r)
> if ((req->cmd.buf[8] & 1) == 0 && req->cmd.lba) {
> goto illegal_request;
> }
> - nb_sectors /= s->cluster_size;
> + nb_sectors /= s->qdev.blocksize / 512;
> /* Returned value is the address of the last sector. */
> nb_sectors--;
> /* Remember the new size for read/write sanity checking. */
> @@ -1190,7 +1187,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r)
> outbuf[3] = nb_sectors & 0xff;
> outbuf[4] = 0;
> outbuf[5] = 0;
> - outbuf[6] = s->cluster_size * 2;
> + outbuf[6] = s->qdev.blocksize >> 8;
> outbuf[7] = 0;
> buflen = 8;
> break;
> @@ -1226,7 +1223,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r)
> if ((req->cmd.buf[14] & 1) == 0 && req->cmd.lba) {
> goto illegal_request;
> }
> - nb_sectors /= s->cluster_size;
> + nb_sectors /= s->qdev.blocksize / 512;
> /* Returned value is the address of the last sector. */
> nb_sectors--;
> /* Remember the new size for read/write sanity checking. */
> @@ -1241,7 +1238,7 @@ static int scsi_disk_emulate_command(SCSIDiskReq *r)
> outbuf[7] = nb_sectors & 0xff;
> outbuf[8] = 0;
> outbuf[9] = 0;
> - outbuf[10] = s->cluster_size * 2;
> + outbuf[10] = s->qdev.blocksize >> 8;
> outbuf[11] = 0;
> outbuf[12] = 0;
> outbuf[13] = get_physical_block_exp(&s->qdev.conf);
> @@ -1349,8 +1346,8 @@ static int32_t scsi_send_command(SCSIRequest *req,
> uint8_t *buf)
> DPRINTF("Read (sector %" PRId64 ", count %d)\n", r->req.cmd.lba,
> len);
> if (r->req.cmd.lba > s->max_lba)
> goto illegal_lba;
> - r->sector = r->req.cmd.lba * s->cluster_size;
> - r->sector_count = len * s->cluster_size;
> + r->sector = r->req.cmd.lba * (s->qdev.blocksize / 512);
> + r->sector_count = len * (s->qdev.blocksize / 512);
> break;
> case WRITE_6:
> case WRITE_10:
> @@ -1365,8 +1362,8 @@ static int32_t scsi_send_command(SCSIRequest *req,
> uint8_t *buf)
> r->req.cmd.lba, len);
> if (r->req.cmd.lba > s->max_lba)
> goto illegal_lba;
> - r->sector = r->req.cmd.lba * s->cluster_size;
> - r->sector_count = len * s->cluster_size;
> + r->sector = r->req.cmd.lba * (s->qdev.blocksize / 512);
> + r->sector_count = len * (s->qdev.blocksize / 512);
> break;
> case MODE_SELECT:
> DPRINTF("Mode Select(6) (len %lu)\n", (long)r->req.cmd.xfer);
> @@ -1409,8 +1406,9 @@ static int32_t scsi_send_command(SCSIRequest *req,
> uint8_t *buf)
> goto fail;
> }
>
> - rc = bdrv_discard(s->qdev.conf.bs, r->req.cmd.lba * s->cluster_size,
> - len * s->cluster_size);
> + rc = bdrv_discard(s->qdev.conf.bs,
> + r->req.cmd.lba * (s->qdev.blocksize / 512),
> + len * (s->qdev.blocksize / 512));
> if (rc < 0) {
> /* XXX: better error code ?*/
> goto fail;
> @@ -1450,12 +1448,14 @@ static void scsi_disk_reset(DeviceState *dev)
>
> scsi_device_purge_requests(&s->qdev, SENSE_CODE(RESET));
>
> - bdrv_get_geometry(s->qdev.conf.bs, &nb_sectors);
> - nb_sectors /= s->cluster_size;
> - if (nb_sectors) {
> - nb_sectors--;
> + if (s->qdev.blocksize) {
When would it be 0? And wouldn't we crash with a zero blocksize anyway?
Kevin
- [Qemu-devel] [PATCH 34/35] scsi: pass cdb to alloc_req, (continued)
- [Qemu-devel] [PATCH 34/35] scsi: pass cdb to alloc_req, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 15/35] scsi: remove devs array from SCSIBus, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 28/35] scsi-disk: do not duplicate BlockDriverState member, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 21/35] scsi-disk: bump SCSIRequest reference count until aio completion runs, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 31/35] scsi: move max_lba to SCSIDevice, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 29/35] scsi-disk: remove cluster_size, Paolo Bonzini, 2011/10/13
- Re: [Qemu-devel] [PATCH 29/35] scsi-disk: remove cluster_size,
Kevin Wolf <=
- [Qemu-devel] [PATCH 27/35] scsi-generic: snoop READ CAPACITY commands to get block size, Paolo Bonzini, 2011/10/13
- [Qemu-devel] [PATCH 30/35] scsi-disk: small clean up to INQUIRY, Paolo Bonzini, 2011/10/13