Unused stuff cleaned out.
On Thu, Mar 15, 2012 at 11:55 AM, Paolo Bonzini <pbonz...@redhat.com> wrote:
> Il 15/03/2012 10:02, Dmitry Fleytman ha scritto:
>> Sample command line is:
>>
>> -drive file=image.raw,if=none,cache=off,id=scsi1 \
>> -device lsi,id=scsi -device
>> scsi-disk,drive=scsi1,bus=scsi.0,product_name="VENDOR SCSI
>> DISK",vendor_name="[VENDOR]" \
>>
>> Signed-off-by: Dmitry Fleytman <dmi...@daynix.com>
>> Signed-off-by: Yan Vugenfirer <y...@daynix.com>
>> ---
>> blockdev.h | 6 +++++-
>> hw/scsi-disk.c | 51 ++++++++++++++++++++++++++++++++++++---------------
>> 2 files changed, 41 insertions(+), 16 deletions(-)
>>
>> diff --git a/blockdev.h b/blockdev.h
>> index 260e16b..1813c53 100644
>> --- a/blockdev.h
>> +++ b/blockdev.h
>> @@ -17,7 +17,9 @@
>> void blockdev_mark_auto_del(BlockDriverState *bs);
>> void blockdev_auto_del(BlockDriverState *bs);
>>
>> -#define BLOCK_SERIAL_STRLEN 20
>> +#define BLOCK_SERIAL_STRLEN 20
>> +#define BLOCK_VENDOR_STRLEN 8
>> +#define BLOCK_PRODUCT_STRLEN 16
>>
>> typedef enum {
>> IF_DEFAULT = -1, /* for use with drive_add() only */
>> @@ -37,6 +39,8 @@ struct DriveInfo {
>> int media_cd;
>> QemuOpts *opts;
>> char serial[BLOCK_SERIAL_STRLEN + 1];
>> + char vname[BLOCK_VENDOR_STRLEN + 1];
>> + char pname[BLOCK_PRODUCT_STRLEN + 1];
>> QTAILQ_ENTRY(DriveInfo) next;
>> int refcount;
>> };
>
> Unused.
>
>> diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
>> index add399e..0a12ea2 100644
>> --- a/hw/scsi-disk.c
>> +++ b/hw/scsi-disk.c
>> @@ -70,6 +70,8 @@ struct SCSIDiskState
>> QEMUBH *bh;
>> char *version;
>> char *serial;
>> + char *vname;
>> + char *pname;
>> bool tray_open;
>> bool tray_locked;
>> };
>> @@ -566,12 +568,23 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req,
>> uint8_t *outbuf)
>>
>> outbuf[0] = s->qdev.type & 0x1f;
>> outbuf[1] = s->removable ? 0x80 : 0;
>> - if (s->qdev.type == TYPE_ROM) {
>> - memcpy(&outbuf[16], "QEMU CD-ROM ", 16);
>> +
>> + if (NULL != s->pname) {
>> + strpadcpy((char *) &outbuf[16], 16, s->pname, ' ');
>> } else {
>> - memcpy(&outbuf[16], "QEMU HARDDISK ", 16);
>> + if (s->qdev.type == TYPE_ROM) {
>> + memcpy(&outbuf[16], "QEMU CD-ROM ", 16);
>> + } else {
>> + memcpy(&outbuf[16], "QEMU HARDDISK ", 16);
>> + }
>> }
>> - memcpy(&outbuf[8], "QEMU ", 8);
>> +
>> + if (NULL != s->vname) {
>> + strpadcpy((char *) &outbuf[8], 8, s->vname, ' ');
>> + } else {
>> + memcpy(&outbuf[8], "QEMU ", 8);
>> + }
>> +
>> memset(&outbuf[32], 0, 4);
>> memcpy(&outbuf[32], s->version, MIN(4, strlen(s->version)));
>> /*
>> @@ -1585,14 +1598,19 @@ static int scsi_initfn(SCSIDevice *dev)
>> return -1;
>> }
>>
>> - if (!s->serial) {
>> - /* try to fall back to value set with legacy -drive serial=... */
>> - dinfo = drive_get_by_blockdev(s->qdev.conf.bs);
>> - if (*dinfo->serial) {
>> - s->serial = g_strdup(dinfo->serial);
>> - }
>> - }
>> + dinfo = drive_get_by_blockdev(s->qdev.conf.bs);
>>
>> + /* when no value given try to fall back to */
>> + /* value set with legacy -drive serial=... */
>> + if ((!s->serial) && (*dinfo->serial)) {
>> + s->serial = g_strdup(dinfo->serial);
>> + }
>
> No need to change the way the serial is handled, because you don't need
> dinfo for vname/pname.
>
>> + if ((!s->vname) && (*dinfo->vname)) {
>> + s->vname = g_strdup(dinfo->vname);
>> + }
>> + if ((!s->pname) && (*dinfo->pname)) {
>> + s->pname = g_strdup(dinfo->pname);
>> + }
>
> (Also, no parentheses around simple conditions).
>
>> if (!s->version) {
>> s->version = g_strdup(QEMU_VERSION);
>> }
>> @@ -1788,10 +1806,13 @@ static SCSIRequest
>> *scsi_block_new_request(SCSIDevice *d, uint32_t tag,
>> }
>> #endif
>>
>> -#define DEFINE_SCSI_DISK_PROPERTIES() \
>> - DEFINE_BLOCK_PROPERTIES(SCSIDiskState, qdev.conf), \
>> - DEFINE_PROP_STRING("ver", SCSIDiskState, version), \
>> - DEFINE_PROP_STRING("serial", SCSIDiskState, serial)
>> +#define DEFINE_SCSI_DISK_PROPERTIES() \
>> + DEFINE_BLOCK_PROPERTIES(SCSIDiskState, qdev.conf), \
>> + DEFINE_PROP_STRING("ver", SCSIDiskState, version), \
>> + DEFINE_PROP_STRING("serial", SCSIDiskState, serial), \
>> + DEFINE_PROP_STRING("vendor_name", SCSIDiskState, vname), \
>> + DEFINE_PROP_STRING("product_name", SCSIDiskState, pname)
>> +
>>
>> static Property scsi_hd_properties[] = {
>> DEFINE_SCSI_DISK_PROPERTIES(),
>
> Paolo