On Fri, Apr 24, 2009 at 02:28:37PM +0200, Daniel Veillard wrote: > > diff -r 2d1278bdf31f qemud/remote_dispatch_table.h > > --- a/qemud/remote_dispatch_table.h Fri Apr 24 11:01:11 2009 +0100 > > +++ b/qemud/remote_dispatch_table.h Fri Apr 24 13:06:12 2009 +0100 > [...] > > -{ /* DomainGetSecurityLabel => 118 */ > > +{ /* DomainGetSecurityLabel => 121 */ > [...] > > -{ /* NodeGetSecurityModel => 119 */ > > +{ /* NodeGetSecurityModel => 122 */ > > Any reason for the renumbering even though it seems harmless ? That's a bug in the current code in CVS - result of a merge mistake. It is harmless because this is just a comment. > > +/** > > + * virNodeDeviceCreateXML: > > + * @conn: pointer to the hypervisor connection > > + * @xmlDesc: string containing an XML description of the device to be created > > + * @flags: callers should always pass 0 > > + * > > + * Create a new device on the VM host machine, for example, virtual > > + * HBAs created using vport_create. > > + * > > + * Returns a node device object if successful, NULL in case of failure > > + */ > > +virNodeDevicePtr > > +virNodeDeviceCreateXML(virConnectPtr conn, > > + const char *xmlDesc, > > + unsigned int flags) > > +{ > > + VIR_DEBUG("conn=%p, xmlDesc=%s, flags=%d", conn, xmlDesc, flags); > > + > > + virResetLastError(); > > + > > + if (!VIR_IS_CONNECT(conn)) { > > + virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__); > > + return NULL; > > + } > > + > > + if (conn->flags & VIR_CONNECT_RO) { > > + virLibConnError(conn, VIR_ERR_OPERATION_DENIED, __FUNCTION__); > > + goto error; > > + } > > + > > + if (xmlDesc == NULL) { > > + virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__); > > + goto error; > > + } > > + > > + if (conn->deviceMonitor->deviceCreateXML) { > > are we always 100% sure conn->deviceMonitor is non NULL ? Yep, that needs an additional check 'conn->deviceMonitor != NULL' > > > + virNodeDevicePtr dev = conn->deviceMonitor->deviceCreateXML(conn, xmlDesc, flags); > > + if (dev == NULL) > > + goto error; > > + return dev; > > + } > > + > > + virLibConnError (conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); > > + > > +error: > > + /* Copy to connection error object for back compatability */ > > + virSetConnError(conn); > > + return NULL; > > +} > > + > > + > > +/** > > + * virNodeDeviceDestroy: > > + * @dev: a device object > > + * > > + * Destroy the device object. The virtual device is removed from the host operating system. > > + * This function may require privileged access > > + * > > + * Returns 0 in case of success and -1 in case of failure. > > + */ > > +int > > +virNodeDeviceDestroy(virNodeDevicePtr dev) > > +{ > > + int retval = 0; > > + > > + DEBUG("dev=%p", dev); > > + > > + virResetLastError(); > > + > > + if (!VIR_IS_CONNECTED_NODE_DEVICE(dev)) { > > + virLibNodeDeviceError(NULL, VIR_ERR_INVALID_NODE_DEVICE, __FUNCTION__); > > + return (-1); > > + } > > + > > + if (dev->conn->flags & VIR_CONNECT_RO) { > > + virLibConnError(dev->conn, VIR_ERR_OPERATION_DENIED, __FUNCTION__); > > + goto error; > > + } > > + > > + if (dev->conn->deviceMonitor->deviceDestroy) { > > + retval = dev->conn->deviceMonitor->deviceDestroy(dev); > > + if (retval < 0) { > > + goto error; > > + } > > + > > + return 0; > > + } > > + > > + virLibConnError (dev->conn, VIR_ERR_NO_SUPPORT, __FUNCTION__); > > + > > +error: > > + /* Copy to connection error object for back compatability */ > > + virSetConnError(dev->conn); > > + return -1; > > +} > > + > > + Likewise this needs a check for deviceMOnitor != NULL Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list