[libvirt] [PATCH V2] Do not drop kernel cmdline for xen pv domains
Jim Fehlig
jfehlig at novell.com
Thu Jul 7 23:37:55 UTC 2011
Jim Fehlig wrote:
> Kernel cmdline args can be passed to xen pv domains even when a
> bootloader is specified. The current config-to-sxpr mapping
> ignores cmdline when bootloader is present.
>
> Since the xend sub-driver is used with many xen toolstack versions,
> this patch takes conservative approach of adding an else block to
> existing !def->os.bootloader, and only appends sxpr if def->os.cmdline
> is non-NULL.
>
> V2: Fix existing testcase broken by this patch and add new testcases
>
Hmm, now domainschematest is failing
> ---
> src/xenxs/xen_sxpr.c | 6 ++++
> .../sexpr2xml-pv-bootloader-cmdline.sexpr | 5 +++
> .../sexpr2xml-pv-bootloader-cmdline.xml | 27 ++++++++++++++++++++
> tests/sexpr2xmltest.c | 1 +
> .../xml2sexpr-disk-block-shareable.sexpr | 1 +
> .../xml2sexpr-pv-bootloader-cmdline.sexpr | 5 +++
> .../xml2sexpr-pv-bootloader-cmdline.xml | 22 ++++++++++++++++
> tests/xml2sexprtest.c | 1 +
> 8 files changed, 68 insertions(+), 0 deletions(-)
> create mode 100644 tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.sexpr
> create mode 100644 tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.xml
> create mode 100644 tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr
> create mode 100644 tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.xml
>
on these two xml files. If I'm reading domain.rng correctly, kernel must
be specified?? Can it be optional like initrd and cmdline?
Regards,
Jim
> diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c
> index 13ca015..bd770bc 100644
> --- a/src/xenxs/xen_sxpr.c
> +++ b/src/xenxs/xen_sxpr.c
> @@ -2261,6 +2261,12 @@ xenFormatSxpr(virConnectPtr conn,
> }
>
> virBufferAddLit(&buf, "))");
> + } else {
> + /* PV domains accept kernel cmdline args */
> + if (def->os.cmdline) {
> + virBufferEscapeSexpr(&buf, "(image (linux (args '%s')))",
> + def->os.cmdline);
> + }
> }
>
> for (i = 0 ; i < def->ndisks ; i++)
> diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.sexpr b/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.sexpr
> new file mode 100644
> index 0000000..dde37fc
> --- /dev/null
> +++ b/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.sexpr
> @@ -0,0 +1,5 @@
> +(domain (domid 6)(name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)\
> +(uuid '596a5d2171f48fb2e068e2386a5c413e')(bootloader '/usr/bin/pygrub')\
> +(bootloader_args '-q')(image (linux (args ' xenfb.video=8,1280,1024 ')))\
> +(on_poweroff 'destroy')(on_reboot 'destroy')(on_crash 'destroy')\
> +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))
> diff --git a/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.xml b/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.xml
> new file mode 100644
> index 0000000..7bc99d8
> --- /dev/null
> +++ b/tests/sexpr2xmldata/sexpr2xml-pv-bootloader-cmdline.xml
> @@ -0,0 +1,27 @@
> +<domain type='xen' id='6'>
> + <name>pvtest</name>
> + <uuid>596a5d21-71f4-8fb2-e068-e2386a5c413e</uuid>
> + <memory>430080</memory>
> + <currentMemory>430080</currentMemory>
> + <vcpu>2</vcpu>
> + <bootloader>/usr/bin/pygrub</bootloader>
> + <bootloader_args>-q</bootloader_args>
> + <os>
> + <type>linux</type>
> + <cmdline> xenfb.video=8,1280,1024 </cmdline>
> + </os>
> + <clock offset='utc'/>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>destroy</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <disk type='file' device='disk'>
> + <driver name='file'/>
> + <source file='/root/some.img'/>
> + <target dev='xvda' bus='xen'/>
> + </disk>
> + <console type='pty'>
> + <target type='xen' port='0'/>
> + </console>
> + </devices>
> +</domain>
> diff --git a/tests/sexpr2xmltest.c b/tests/sexpr2xmltest.c
> index f393935..26a987d 100644
> --- a/tests/sexpr2xmltest.c
> +++ b/tests/sexpr2xmltest.c
> @@ -134,6 +134,7 @@ mymain(void)
> DO_TEST("pv-vfb-type-crash", "pv-vfb-type-crash", 3);
> DO_TEST("fv-autoport", "fv-autoport", 3);
> DO_TEST("pv-bootloader", "pv-bootloader", 1);
> + DO_TEST("pv-bootloader-cmdline", "pv-bootloader-cmdline", 1);
> DO_TEST("pv-vcpus", "pv-vcpus", 1);
>
> DO_TEST("disk-file", "disk-file", 2);
> diff --git a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr
> index 8c0b1cd..b8387e5 100644
> --- a/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr
> +++ b/tests/xml2sexprdata/xml2sexpr-disk-block-shareable.sexpr
> @@ -1,6 +1,7 @@
> (vm (name 'pvtest')(memory 384)(maxmem 512)(vcpus 1)\
> (uuid '49a0c6ff-c066-5392-6498-3632d093c2e7')(bootloader '/usr/bin/pygrub')\
> (on_poweroff 'destroy')(on_reboot 'restart')(on_crash 'restart')\
> +(image (linux (args 'ro root=/dev/VolGroup00/LogVol00')))\
> (device (tap (dev 'xvda')(uname 'tap:aio:/var/lib/xen/images/rhel5pv.img')\
> (mode 'w!')))(device (vif (mac '00:16:3e:23:9e:eb')(bridge 'xenbr0')\
> (script 'vif-bridge'))))\
> diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr
> new file mode 100644
> index 0000000..c3ed727
> --- /dev/null
> +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.sexpr
> @@ -0,0 +1,5 @@
> +(vm (name 'pvtest')(memory 420)(maxmem 420)(vcpus 2)\
> +(uuid '596a5d21-71f4-8fb2-e068-e2386a5c413e')(bootloader '/usr/bin/pygrub')\
> +(bootloader_args '-q')(on_poweroff 'destroy')(on_reboot 'destroy')\
> +(on_crash 'destroy')(image (linux (args ' xenfb.video=8,1280,1024 ')))\
> +(device (vbd (dev 'xvda')(uname 'file:/root/some.img')(mode 'w'))))\
> diff --git a/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.xml b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.xml
> new file mode 100644
> index 0000000..983b7ce
> --- /dev/null
> +++ b/tests/xml2sexprdata/xml2sexpr-pv-bootloader-cmdline.xml
> @@ -0,0 +1,22 @@
> +<domain type='xen' id='15'>
> + <name>pvtest</name>
> + <uuid>596a5d2171f48fb2e068e2386a5c413e</uuid>
> + <bootloader>/usr/bin/pygrub</bootloader>
> + <bootloader_args>-q</bootloader_args>
> + <os>
> + <type>linux</type>
> + <cmdline> xenfb.video=8,1280,1024 </cmdline>
> + </os>
> + <memory>430080</memory>
> + <vcpu>2</vcpu>
> + <on_poweroff>destroy</on_poweroff>
> + <on_reboot>destroy</on_reboot>
> + <on_crash>destroy</on_crash>
> + <devices>
> + <disk type='file' device='disk'>
> + <source file='/root/some.img'/>
> + <target dev='xvda'/>
> + </disk>
> + <console tty='/dev/pts/4'/>
> + </devices>
> +</domain>
> diff --git a/tests/xml2sexprtest.c b/tests/xml2sexprtest.c
> index d8cdcbb..e068e69 100644
> --- a/tests/xml2sexprtest.c
> +++ b/tests/xml2sexprtest.c
> @@ -116,6 +116,7 @@ mymain(void)
> DO_TEST("pv-vfb-new", "pv-vfb-new", "pvtest", 3);
> DO_TEST("pv-vfb-new-auto", "pv-vfb-new-auto", "pvtest", 3);
> DO_TEST("pv-bootloader", "pv-bootloader", "pvtest", 1);
> + DO_TEST("pv-bootloader-cmdline", "pv-bootloader-cmdline", "pvtest", 1);
> DO_TEST("pv-vcpus", "pv-vcpus", "pvtest", 1);
>
> DO_TEST("disk-file", "disk-file", "pvtest", 2);
>
More information about the libvir-list
mailing list