[libvirt] [PATCH 06/15] Forward Mode 'Hostdev' qemu driver implementation
Shradha Shah
sshah at solarflare.com
Wed Aug 15 10:43:33 UTC 2012
On 08/14/2012 07:44 AM, Laine Stump wrote:
> On 08/10/2012 12:24 PM, Shradha Shah wrote:
>
> Some explanation is needed in the commit log of what this is being done
> here. A cut-paste of the comment in the code would be a good start (any
> anyway, that comment can be changed since it's talking about "when there
> is a network with <forward mode='hostdev'>", but that "when" is "now" :-)
>
>
>> Signed-off-by: Shradha Shah <sshah at solarflare.com>
>> ---
>> src/qemu/qemu_command.c | 27 +++++++++++++++++++++++++++
>> 1 files changed, 27 insertions(+), 0 deletions(-)
>>
>> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
>> index 6f6c6cd..bb66364 100644
>> --- a/src/qemu/qemu_command.c
>> +++ b/src/qemu/qemu_command.c
>> @@ -24,6 +24,7 @@
>> #include <config.h>
>>
>> #include "qemu_command.h"
>> +#include "qemu_hostdev.h"
>> #include "qemu_capabilities.h"
>> #include "qemu_bridge_filter.h"
>> #include "cpu/cpu.h"
>> @@ -5221,12 +5222,38 @@ qemuBuildCommandLine(virConnectPtr conn,
>>
>> actualType = virDomainNetGetActualType(net);
>> if (actualType == VIR_DOMAIN_NET_TYPE_HOSTDEV) {
>> + virDomainHostdevDefPtr hostdev = virDomainNetGetActualHostdev(net);
>> + virDomainHostdevDefPtr found;
>> /* type='hostdev' interfaces are handled in codepath
>> * for standard hostdev (NB: when there is a network
>> * with <forward mode='hostdev', there will need to be
>> * code here that adds the newly minted hostdev to the
>> * hostdevs array).
>> */
>> + if (qemuAssignDeviceHostdevAlias(def,
>> + hostdev,
>
> Combine the above two lines.
>
>> + (def->nhostdevs-1)) < 0) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> + _("Could not assign alias to Net Hostdev"));
>> + goto error;
>> + }
>> +
>> + if (virDomainHostdevFind(def,
>> + hostdev,
>> + &found) < 0) {
>
>
> If the device is found already on the list, you should log an error and
> fail.
The device will be found on the list when using interface type=hostdev.
If I log an error and fail wouldn't that mean that interface type=hostdev will always fail
at this point?
>
>
>> + if (virDomainHostdevInsert(def,
>> + hostdev) < 0) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> + _("Hostdev not inserted into the array"));
>> + goto error;
>> + }
>> + if (qemuPrepareHostdevPCIDevices(driver, def->name, def->uuid,
>> + &hostdev, 1) < 0) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> + _("Prepare Hostdev PCI Devices failed"));
>> + goto error;
>
> It took me awhile to follow that trail, but I do finally understand that
> this is necessary (because qemuPrepareHostDevices has already been
> called by the time we get to here and are building the qemu commandline).
>
>> + }
>> + }
>> continue;
>> }
>>
>
> ACK with a better commit log message, fixing the comment in the code,
> and logging an error if the device is found already on the hostdev list.
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
More information about the libvir-list
mailing list