diff mbox

[2/4,V2] Vendor name and product name parameters for SCSI devices Options "vendor_name" and "product_name" added for SCSI disks.

Message ID 1332062674-14186-3-git-send-email-dmitry.fleytman@ravellosystems.com
State New
Headers show

Commit Message

Dmitry Fleytman March 18, 2012, 9:24 a.m. UTC
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 <dmitry@daynix.com>
Signed-off-by: Yan Vugenfirer <yan@daynix.com>
---
 hw/scsi-disk.c |   32 ++++++++++++++++++++++++--------
 1 files changed, 24 insertions(+), 8 deletions(-)
diff mbox

Patch

diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index add399e..1a2997f 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 {
+        if (s->qdev.type == TYPE_ROM) {
+            memcpy(&outbuf[16], "QEMU CD-ROM     ", 16);
+        } else {
+            memcpy(&outbuf[16], "QEMU HARDDISK   ", 16);
+        }
+    }
+
+    if (NULL != s->vname) {
+        strpadcpy((char *) &outbuf[8], 8, s->vname, ' ');
     } else {
-        memcpy(&outbuf[16], "QEMU HARDDISK   ", 16);
+        memcpy(&outbuf[8], "QEMU    ", 8);
     }
-    memcpy(&outbuf[8], "QEMU    ", 8);
+
     memset(&outbuf[32], 0, 4);
     memcpy(&outbuf[32], s->version, MIN(4, strlen(s->version)));
     /*
@@ -1788,10 +1801,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(),