Bug 994374

Summary: boot up guest failed, hung in "booting from hard disk"
Product: Red Hat Enterprise Linux 6 Reporter: mazhang <mazhang>
Component: qemu-kvmAssignee: Fam Zheng <famz>
Status: CLOSED ERRATA QA Contact: Virtualization Bugs <virt-bugs>
Severity: high Docs Contact:
Priority: high    
Version: 6.5CC: acathrow, areis, bsarathy, chayang, famz, flang, juzhang, lersek, mazhang, michen, minovotn, mkenneth, qzhang, s.kieske, svenkatr, virt-maint
Target Milestone: rcKeywords: Regression, TestBlocker
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: qemu-kvm-0.12.1.2-2.386.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-11-21 07:07:29 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Comment 3 Laszlo Ersek 2013-08-07 09:57:02 UTC
I'm proposing

diff --git a/blockdev.c b/blockdev.c
index e4db09f..e99af4a 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -347,7 +347,7 @@ DriveInfo *drive_init(QemuOpts *opts, int default_to_scsi)
     const char *devaddr;
     DriveInfo *dinfo;
     int is_extboot = 0;
-    BlockIOLimit io_limits;
+    BlockIOLimit io_limits = { 0 };
     int snapshot = 0;
     bool copy_on_read;

Comment 5 Laszlo Ersek 2013-08-07 10:19:32 UTC
cc1: warnings being treated as errors
/builddir/build/BUILD/qemu-kvm-0.12.1.2/blockdev.c: In function 'drive_init':
/builddir/build/BUILD/qemu-kvm-0.12.1.2/blockdev.c:350: error: missing braces around initializer
/builddir/build/BUILD/qemu-kvm-0.12.1.2/blockdev.c:350: error: (near initialization for 'io_limits.bps')

I don't know how much more RETARDED our build configuration can get.

x = { 0 } is a PERFECTLY VALID AND UNIVERSAL initializer, for EVERYTHING.

Comment 6 Fam Zheng 2013-08-07 10:35:17 UTC
Laszlo,

I think this is as simple to have:

diff --git a/blockdev.c b/blockdev.c
index a4c6c37..3af695f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -618,8 +618,10 @@ DriveInfo *drive_init(QemuOpts *opts, int default_to_scsi)

     bdrv_set_on_error(dinfo->bdrv, on_read_error, on_write_error);

+#if CONFIG_BLOCK_IO_THROTTLING
     /* disk I/O throttling */
     bdrv_set_io_limits(dinfo->bdrv, &io_limits);
+#endif

     switch(type) {
     case IF_IDE:

Comment 7 Laszlo Ersek 2013-08-07 10:53:40 UTC
Are you sure the BlockDriverState fields "io_limits" and "io_limits_enabled" will default to the same values as bdrv_set_io_limits() would set, for an all-zero io_limits?

The RHEV code would be better matched by

--- a/blockdev.c
+++ b/blockdev.c
@@ -506,6 +506,8 @@ DriveInfo *drive_init(QemuOpts *opts, int default_to_scsi)
                      "cannot be used at the same time");
         return NULL;
     }
+#else
+    memset(&io_limits, '\0', sizeof io_limits);
 #endif
 
     on_write_error = BLOCK_ERR_STOP_ENOSPC;

In any case, please feel free to take the bug (if we get confirmation that the bug is caused by RHEL-6 commit 6b1eb15c, anyway). I just wanted to give QE a quick Brew build so they can confirm.

Comment 9 Fam Zheng 2013-08-07 11:04:56 UTC
(In reply to Laszlo Ersek from comment #7)
> Are you sure the BlockDriverState fields "io_limits" and "io_limits_enabled"
> will default to the same values as bdrv_set_io_limits() would set, for an
> all-zero io_limits?
> 
> The RHEV code would be better matched by
> 
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -506,6 +506,8 @@ DriveInfo *drive_init(QemuOpts *opts, int
> default_to_scsi)
>                       "cannot be used at the same time");
>          return NULL;
>      }
> +#else
> +    memset(&io_limits, '\0', sizeof io_limits);
>  #endif
>  
>      on_write_error = BLOCK_ERR_STOP_ENOSPC;
> 
> In any case, please feel free to take the bug (if we get confirmation that
> the bug is caused by RHEL-6 commit 6b1eb15c, anyway). I just wanted to give
> QE a quick Brew build so they can confirm.

OK, thanks. I'm taking it.

mazhang, would you please test Laszlo's above build? If it works, I can post the patch to rhvirt-patches.

Comment 10 mazhang 2013-08-08 01:57:09 UTC
OK,I'll test it asap

Comment 11 mazhang 2013-08-08 02:09:54 UTC
Just do a quick test with comment 8 provide build, all interface of virtio-blk virtio-scsi ide works well, boot up guest successfully.

Comment 12 Fam Zheng 2013-08-08 02:47:29 UTC
(In reply to mazhang from comment #11)
> Just do a quick test with comment 8 provide build, all interface of
> virtio-blk virtio-scsi ide works well, boot up guest successfully.

Good, thanks for quick response.

Comment 19 mazhang 2013-08-21 09:42:20 UTC
1.Reproduce this bug on qemu-kvm-0.12.1.2-2.384.el6.x86_64.

steps please refer comment #c0.

Actual results:
guest hung in "Booting from Hard Disk... "

Expected results:
boot up guest


2.Verify this bug on qemu-kvm-0.12.1.2-2.394.el6.x86_64.

steps please refer comment #c0.

Actual results:
boot guest successfully, all kinds of disk interface works well.

Comment 21 errata-xmlrpc 2013-11-21 07:07:29 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHSA-2013-1553.html