From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Larson Subject: [PATCH] 01_enforce_dom0_cpus_basic_pos reset vcpu count on failures. Date: Tue, 23 May 2006 14:31:58 -0500 Message-ID: <200605231432.05451.pl@us.ibm.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0312499172==" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Mime-version: 1.0 Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org --===============0312499172== Content-Type: multipart/signed; boundary="nextPart1741020.EuUrAn5zt2"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit --nextPart1741020.EuUrAn5zt2 Content-Type: multipart/mixed; boundary="Boundary-01=_vM2cEt8J91iwDmF" Content-Transfer-Encoding: 7bit Content-Disposition: inline --Boundary-01=_vM2cEt8J91iwDmF Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline If 01_enforce_dom0_cpus_basic_pos fails, the vcpu count for dom0 does not g= et=20 restored causing subsequent boots to come up with only a single vcpu on dom= 0. 01_enforce_dom0_cpus_basic_pos.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) Signed-off-by: Paul Larson --Boundary-01=_vM2cEt8J91iwDmF Content-Type: text/x-diff; charset="us-ascii"; name="01_enforce.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="01_enforce.patch" # HG changeset patch # User pl@us.ibm.com # Node ID 654b58e2c44d50ffcb7eaabfbaf41d4c5e9b09d7 # Parent 606db2959bd6dc7fc178e9792f0ef345e48dd35e =46ix a problem where the vcpu count for dom0 doesn't get reset back to the= =20 original value when 01_enforce_dom0_cpus_basic_pos fails. diff -r 606db2959bd6 -r 654b58e2c44d tools/xm-test/tests/enforce_dom0_cpus/= 01_enforce_dom0_cpus_basic_pos.py =2D-- a/tools/xm-test/tests/enforce_dom0_cpus/01_enforce_dom0_cpus_basic_po= s.py Tue May 23 11:05:08 2006 +++ b/tools/xm-test/tests/enforce_dom0_cpus/01_enforce_dom0_cpus_basic_pos.= py Tue May 23 13:13:02 2006 @@ -28,6 +28,12 @@ check_status =3D 1 max_tries =3D 10 =20 +def reset_vcpu_count(): + status, output =3D traceCommand("xm vcpu-set 0 %s"%(dom0_online_vcpus)) + if status !=3D 0: + print "WARNING!!! Unable to set vcpus back to %s, please set manua= lly"\ + %(dom0_online_vcpus) + # 1) Make sure we have a multi cpu system and dom0 has at least 2 vcpus on= line. =20 if smpConcurrencyLevel() <=3D 1: @@ -57,6 +63,7 @@ # 4) restart xend with new config os.putenv("XEND_CONFIG", "/tmp/xend-config.sxp") status =3D restartXend() +os.unsetenv("XEND_CONFIG") if check_status and status !=3D 0: ns, no =3D restartXend() if ns !=3D 0: @@ -75,7 +82,7 @@ cmd =3D "grep \"^processor\" /proc/cpuinfo | wc -l" status, output =3D traceCommand(cmd) if check_status and status !=3D 0: =2D os.unsetenv("XEND_CONFIG") + reset_vcpu_count() restartXend() FAIL("\"%s\" returned invalid %i !=3D 0" %(cmd,status)) # Has it succeeded? If so, we can leave the loop @@ -84,7 +91,7 @@ # Sleep for 1 second before trying again time.sleep(1) if output !=3D str(enforce_dom0_cpus): =2D os.unsetenv("XEND_CONFIG") + reset_vcpu_count() restartXend() FAIL("/proc/cpuinfo says xend didn't enforce dom0_cpus (%s !=3D %s)"%(= output,=20 enforce_dom0_= cpus)) @@ -92,34 +99,28 @@ # 6) count number of online cpus and see that it matches enforce value num_online =3D int(getDomInfo("Domain-0", "VCPUs")) if num_online !=3D enforce_dom0_cpus: =2D os.unsetenv("XEND_CONFIG") + reset_vcpu_count() restartXend() FAIL("xm says xend didn't enforce dom0_cpus (%s !=3D %s)" %(num_online= ,=20 enforce_dom0_= cpus)) =20 # 7) restore dead processors=20 =2Dstatus, output =3D traceCommand("xm vcpu-set 0 %s"%(dom0_online_vcpus)) =2Dif check_status and status !=3D 0: =2D os.unsetenv("XEND_CONFIG") =2D restartXend() =2D FAIL("\"%s\" returned invalid %i !=3D 0" %(cmd,status)) +reset_vcpu_count() =20 # check restore worked # Since this also takes time, we will do it in a loop with a 20 second tim= eout. timeout=3D20 starttime=3Dtime.time() while timeout + starttime > time.time():=20 =2D num_online =3D int(getDomInfo("Domain-0", "VCPUs")) =2D if num_online =3D=3D dom0_online_vcpus: =2D break =2D time.sleep(1) + num_online =3D int(getDomInfo("Domain-0", "VCPUs")) + if num_online =3D=3D dom0_online_vcpus: + break + time.sleep(1) if num_online !=3D dom0_online_vcpus: =2D os.unsetenv("XEND_CONFIG") restartXend() FAIL("failed to restore dom0's VCPUs") =20 =20 # 8) Restart xend with default config =2Dos.unsetenv("XEND_CONFIG") restartXend() =20 --Boundary-01=_vM2cEt8J91iwDmF-- --nextPart1741020.EuUrAn5zt2 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBEc2M1BwrpIrndMlIRAm6lAJ92IKm8fKNvjWA6QUc2N/rta73SSwCeJ2x4 3L2VOub74HI3DBPNERLIrDc= =LXFO -----END PGP SIGNATURE----- --nextPart1741020.EuUrAn5zt2-- --===============0312499172== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --===============0312499172==--