[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 08/32] scsi-disk: let the user customize vendor and
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PATCH 08/32] scsi-disk: let the user customize vendor and product name |
Date: |
Fri, 27 Jul 2012 17:02:35 +0200 |
From: Dmitry Fleytman <address@hidden>
This patch adds two new properties vendor and product to SCSI disks.
These options let the user customize the inquiry data returned by the
disk.
Signed-off-by: Yan Vugenfirer <address@hidden>
Signed-off-by: Dmitry Fleytman <address@hidden>
[ Use vendor and product property names, avoid "if" statements. - PB ]
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/scsi-disk.c | 31 +++++++++++++++++++++----------
1 file changed, 21 insertions(+), 10 deletions(-)
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 8907197..788fe86 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -72,6 +72,8 @@ struct SCSIDiskState
QEMUBH *bh;
char *version;
char *serial;
+ char *vendor;
+ char *product;
bool tray_open;
bool tray_locked;
};
@@ -669,12 +671,10 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req,
uint8_t *outbuf)
outbuf[0] = s->qdev.type & 0x1f;
outbuf[1] = (s->features & (1 << SCSI_DISK_F_REMOVABLE)) ? 0x80 : 0;
- 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);
+
+ strpadcpy((char *) &outbuf[16], 16, s->product, ' ');
+ strpadcpy((char *) &outbuf[8], 8, s->vendor, ' ');
+
memset(&outbuf[32], 0, 4);
memcpy(&outbuf[32], s->version, MIN(4, strlen(s->version)));
/*
@@ -1757,6 +1757,9 @@ static int scsi_initfn(SCSIDevice *dev)
if (!s->version) {
s->version = g_strdup(qemu_get_version());
}
+ if (!s->vendor) {
+ s->vendor = g_strdup("QEMU");
+ }
if (bdrv_is_sg(s->qdev.conf.bs)) {
error_report("unwanted /dev/sg*");
@@ -1778,6 +1781,9 @@ static int scsi_hd_initfn(SCSIDevice *dev)
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
s->qdev.blocksize = s->qdev.conf.logical_block_size;
s->qdev.type = TYPE_DISK;
+ if (!s->product) {
+ s->product = g_strdup("QEMU HARDDISK");
+ }
return scsi_initfn(&s->qdev);
}
@@ -1787,6 +1793,9 @@ static int scsi_cd_initfn(SCSIDevice *dev)
s->qdev.blocksize = 2048;
s->qdev.type = TYPE_ROM;
s->features |= 1 << SCSI_DISK_F_REMOVABLE;
+ if (!s->product) {
+ s->product = g_strdup("QEMU CD-ROM");
+ }
return scsi_initfn(&s->qdev);
}
@@ -1954,10 +1963,12 @@ 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", SCSIDiskState, vendor), \
+ DEFINE_PROP_STRING("product", SCSIDiskState, product)
static Property scsi_hd_properties[] = {
DEFINE_SCSI_DISK_PROPERTIES(),
--
1.7.10.4
- [Qemu-devel] [PATCH 02/32] megasas: fix misuse of scsi_req_abort, (continued)
- [Qemu-devel] [PATCH 02/32] megasas: fix misuse of scsi_req_abort, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 01/32] megasas: Replace trace_megasas_dcmd_dump_frame(), Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 05/32] lsi: avoid redundant tests of s->current != NULL, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 06/32] scsi-block: remove properties that are not relevant for passthrough, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 04/32] lsi: introduce lsi_request_free, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 09/32] scsi-disk: make discard asynchronous, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 07/32] cutils: add strpadcpy(), Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 10/32] scsi-disk: move all non-DMA commands to scsi_disk_emulate_command, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 11/32] scsi-disk: split scsi-disk reqops, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 13/32] scsi-disk: support emulated TO_DEV requests, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 08/32] scsi-disk: let the user customize vendor and product name,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 14/32] scsi-disk: adjust offsets in MODE SENSE by 2, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 17/32] scsi-disk: support toggling the write cache, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 23/32] scsi: introduce hotplug() and hot_unplug() interfaces for SCSI bus, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 24/32] scsi: establish precedence levels for unit attention, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 25/32] scsi-disk: report resized disk via sense codes, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 30/32] virtio-scsi: report parameter change events, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 29/32] virtio-scsi: do not report dropped events after reset, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 31/32] virtio-scsi: add ioeventfd support, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 32/32] virtio-scsi: enable MSI-X support, Paolo Bonzini, 2012/07/27
- [Qemu-devel] [PATCH 15/32] scsi-disk: fix changeable values for MODE_PAGE_R_W_ERROR, Paolo Bonzini, 2012/07/27