All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Haynoczi <stefanha@linux.vnet.ibm.com>,
	kvm@vger.kernel.org, Alexander Graf <agraf@suse.de>,
	Hannes Reinecke <hare@suse.de>
Subject: [PATCH 4/5] scsi-disk: Mask out serial number EVPD
Date: Tue,  5 Jul 2011 13:03:34 +0200	[thread overview]
Message-ID: <1309863815-28236-5-git-send-email-hare@suse.de> (raw)
In-Reply-To: <1309863815-28236-4-git-send-email-hare@suse.de>

If the serial number is not set we should mask it out in the
list of supported VPD pages and mark it as not supported.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 hw/scsi-disk.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 5804662..05d14ab 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -398,7 +398,8 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf)
                     "buffer size %zd\n", req->cmd.xfer);
             pages = buflen++;
             outbuf[buflen++] = 0x00; // list of supported pages (this page)
-            outbuf[buflen++] = 0x80; // unit serial number
+            if (s->serial)
+                outbuf[buflen++] = 0x80; // unit serial number
             outbuf[buflen++] = 0x83; // device identification
             if (s->drive_kind == SCSI_HD) {
                 outbuf[buflen++] = 0xb0; // block limits
@@ -409,8 +410,14 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf)
         }
         case 0x80: /* Device serial number, optional */
         {
-            int l = strlen(s->serial);
+            int l;
 
+            if (!s->serial) {
+                DPRINTF("Inquiry (EVPD[Serial number] not supported\n");
+                return -1;
+            }
+
+            l = strlen(s->serial);
             if (l > req->cmd.xfer)
                 l = req->cmd.xfer;
             if (l > 20)
@@ -1203,7 +1210,9 @@ static int scsi_initfn(SCSIDevice *dev, SCSIDriveKind kind)
     if (!s->serial) {
         /* try to fall back to value set with legacy -drive serial=... */
         dinfo = drive_get_by_blockdev(s->bs);
-        s->serial = qemu_strdup(*dinfo->serial ? dinfo->serial : "0");
+        if (*dinfo->serial) {
+            s->serial = qemu_strdup(dinfo->serial);
+        }
     }
 
     if (!s->version) {
-- 
1.7.3.4


WARNING: multiple messages have this Message-ID (diff)
From: Hannes Reinecke <hare@suse.de>
To: qemu-devel@nongnu.org
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Hannes Reinecke <hare@suse.de>,
	Stefan Haynoczi <stefanha@linux.vnet.ibm.com>,
	kvm@vger.kernel.org, Alexander Graf <agraf@suse.de>
Subject: [Qemu-devel] [PATCH 4/5] scsi-disk: Mask out serial number EVPD
Date: Tue,  5 Jul 2011 13:03:34 +0200	[thread overview]
Message-ID: <1309863815-28236-5-git-send-email-hare@suse.de> (raw)
In-Reply-To: <1309863815-28236-4-git-send-email-hare@suse.de>

If the serial number is not set we should mask it out in the
list of supported VPD pages and mark it as not supported.

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 hw/scsi-disk.c |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 5804662..05d14ab 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -398,7 +398,8 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf)
                     "buffer size %zd\n", req->cmd.xfer);
             pages = buflen++;
             outbuf[buflen++] = 0x00; // list of supported pages (this page)
-            outbuf[buflen++] = 0x80; // unit serial number
+            if (s->serial)
+                outbuf[buflen++] = 0x80; // unit serial number
             outbuf[buflen++] = 0x83; // device identification
             if (s->drive_kind == SCSI_HD) {
                 outbuf[buflen++] = 0xb0; // block limits
@@ -409,8 +410,14 @@ static int scsi_disk_emulate_inquiry(SCSIRequest *req, uint8_t *outbuf)
         }
         case 0x80: /* Device serial number, optional */
         {
-            int l = strlen(s->serial);
+            int l;
 
+            if (!s->serial) {
+                DPRINTF("Inquiry (EVPD[Serial number] not supported\n");
+                return -1;
+            }
+
+            l = strlen(s->serial);
             if (l > req->cmd.xfer)
                 l = req->cmd.xfer;
             if (l > 20)
@@ -1203,7 +1210,9 @@ static int scsi_initfn(SCSIDevice *dev, SCSIDriveKind kind)
     if (!s->serial) {
         /* try to fall back to value set with legacy -drive serial=... */
         dinfo = drive_get_by_blockdev(s->bs);
-        s->serial = qemu_strdup(*dinfo->serial ? dinfo->serial : "0");
+        if (*dinfo->serial) {
+            s->serial = qemu_strdup(dinfo->serial);
+        }
     }
 
     if (!s->version) {
-- 
1.7.3.4

  reply	other threads:[~2011-07-05 11:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-05 11:03 [PATCH 0/5][v6] Megasas HBA emulation Hannes Reinecke
2011-07-05 11:03 ` [Qemu-devel] " Hannes Reinecke
2011-07-05 11:03 ` [PATCH 1/5] iov: Update parameter usage in iov_(to|from)_buf() Hannes Reinecke
2011-07-05 11:03   ` [Qemu-devel] " Hannes Reinecke
2011-07-05 11:03   ` [PATCH 2/5] scsi: Add 'hba_private' to SCSIRequest Hannes Reinecke
2011-07-05 11:03     ` [Qemu-devel] " Hannes Reinecke
2011-07-05 11:03     ` [PATCH 3/5] scsi-disk: Fixup debugging statement Hannes Reinecke
2011-07-05 11:03       ` [Qemu-devel] " Hannes Reinecke
2011-07-05 11:03       ` Hannes Reinecke [this message]
2011-07-05 11:03         ` [Qemu-devel] [PATCH 4/5] scsi-disk: Mask out serial number EVPD Hannes Reinecke
2011-07-05 11:03         ` [PATCH 5/5] megasas: LSI Megaraid SAS emulation Hannes Reinecke
2011-07-05 11:03           ` [Qemu-devel] " Hannes Reinecke
2011-07-05 13:06           ` Alexander Graf
2011-07-05 13:06             ` [Qemu-devel] " Alexander Graf
2011-07-05 13:38           ` Alexander Graf
2011-07-05 13:38             ` [Qemu-devel] " Alexander Graf
2011-07-05 13:59             ` Paolo Bonzini
2011-07-05 13:59               ` [Qemu-devel] " Paolo Bonzini
2011-07-05 14:05               ` Alexander Graf
2011-07-05 14:05                 ` [Qemu-devel] " Alexander Graf
2011-07-05 15:21           ` Stefan Hajnoczi
2011-07-05 15:21             ` Stefan Hajnoczi
2011-07-06  6:20             ` Hannes Reinecke
2011-07-06  6:20               ` Hannes Reinecke
2011-07-06  8:39               ` Paolo Bonzini
2011-07-06  8:39                 ` Paolo Bonzini
2011-07-05 11:06         ` [PATCH 4/5] scsi-disk: Mask out serial number EVPD Paolo Bonzini
2011-07-05 11:06           ` [Qemu-devel] " Paolo Bonzini
2011-07-05 11:05       ` [PATCH 3/5] scsi-disk: Fixup debugging statement Paolo Bonzini
2011-07-05 11:05         ` [Qemu-devel] " Paolo Bonzini
2011-07-05 13:01 ` [PATCH 0/5][v6] Megasas HBA emulation Alexander Graf
2011-07-05 13:01   ` [Qemu-devel] " Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1309863815-28236-5-git-send-email-hare@suse.de \
    --to=hare@suse.de \
    --cc=agraf@suse.de \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.