[libvirt] QEMU 1.6 and drive discard parameter

Amos Kong akong at redhat.com
Thu Oct 31 11:17:34 UTC 2013


CC Kevin, Paolo

On Thu, Oct 31, 2013 at 04:35:43PM +0800, Amos Kong wrote:
> On Thu, Oct 31, 2013 at 04:07:15PM +0800, Osier Yang wrote:
> > CC to Amos.
> > 
> > On 30/10/13 16:19, whitearchey wrote:
> > >
> > >In QEMU 1.6 parameters of 'drive' option were removed:
> > >
> > >QemuOptsList qemu_drive_opts = {
> > >    .name = "drive",
> > >    .head = QTAILQ_HEAD_INITIALIZER(qemu_drive_opts.head),
> > >    .desc = {
> > >        /*
> > >         * no elements => accept any params
> > >         * validation will happen later
> > >         */
> > >        { /* end of list */ }
> > >    },
> > >};
> > >
> > >But libvirt still checks for QEMU_CAPS_DRIVE_DISCARD using QMP
> > >query-command-line-options:
> > >
> > >static struct virQEMUCapsCommandLineProps virQEMUCapsCommandLine[] = {
> > >    { "machine", "mem-merge", QEMU_CAPS_MEM_MERGE },
> > >    { "drive", "discard", QEMU_CAPS_DRIVE_DISCARD },
> > >    { "realtime", "mlock", QEMU_CAPS_MLOCK },
> > >};
> > >...
> > >qemuMonitorGetCommandLineOptionParameters(mon,
> > >virQEMUCapsCommandLine[i].option, &values)
> > >
> > >So, when I try to use discard option in domain xml I get this error:
> > >
> > >error : qemuBuildDriveStr:3986 : unsupported configuration:
> > >discard is not supported by this QEMU binary
> > >
> > 
> > It's a qemu problem, the command "query-command-line-options" should
> > keep working
> > after the structures were changed for any option, in this case, all
> > the option descs were
> > moved to "qemu_common_drive_opts" instead.
> 
> { 'execute': 'query-command-line-options', 'arguments': { 'option': 'drive' } }
>  
> {
>     "return": [
>         {
>             "parameters": [
>             ],
>             "option": "drive"
>         }
>     ]
> }
> 
> It returns a NULL parameters list, that's true, some error handling
> should be done by libvirt.

Currently we have three QemuOptsList (qemu_common_drive_opts,
qemu_legacy_drive_opts, and qemu_drive_opts)

only qemu_drive_opts is added to vm_config_groups[]

| commit 492fdc6fbe17b2d45878e813e980f782ac260c30
| Author: Kevin Wolf <kwolf at redhat.com>
| Date:   Wed Jun 19 13:44:17 2013 +0200
| 
|     Revert "block: Disable driver-specific options for 1.5"

This patch removed the items in qemu_drive_opts .desc

We query commandline options by checking information in vm_config_groups[],
so we can only get a NULL parameter list now.

Another issue is we also can't query legacy options of -drive.

--

Can we fix this problem by copy desc items of qemu_legacy_drive_opts and
qemu_common_drive_opts to qemu_drive_opts?

-- 
			Amos.




More information about the libvir-list mailing list