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); > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list