[libvirt] [PATCH] qemu: Generate agent socket path if missing

Eric Blake eblake at redhat.com
Tue Apr 23 23:41:51 UTC 2013


On 04/23/2013 09:40 AM, Jiri Denemark wrote:
> On Tue, Apr 09, 2013 at 19:05:28 +0200, Michal Privoznik wrote:
>> It's not desired to force users imagine path for a socket they
>> are not even supposed to connect to. On the other hand, we
>> already have a release where the qemu agent socket path is
>> exposed to XML, so we cannot silently drop it from there.
>> The new path is generated in form:
>>
>> $LOCALSTATEDIR/lib/libvirt/qemu/channel/target/$domain.$name
>> ---

I like the idea of this patch, but think we probably also ought to
document this choice of auto-generated path in formatdomain.html.in somehow.

>>  libvirt.spec.in        |  1 +
>>  src/Makefile.am        |  1 +
>>  src/conf/domain_conf.c | 34 ++++++++++++++++------------------
>>  src/qemu/qemu_domain.c | 16 ++++++++++++++++
>>  4 files changed, 34 insertions(+), 18 deletions(-)

>>  
>> +    /* auto generate unix socket path */
>> +    if (dev->type == VIR_DOMAIN_DEVICE_CHR &&
>> +        dev->data.chr->deviceType == VIR_DOMAIN_CHR_DEVICE_TYPE_CHANNEL &&
>> +        dev->data.chr->targetType == VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_VIRTIO &&
>> +        dev->data.chr->source.type == VIR_DOMAIN_CHR_TYPE_UNIX &&
>> +        !dev->data.chr->source.data.nix.path &&
>> +        (cfg || (driver && (cfg = virQEMUDriverGetConfig(driver))))) {
> 
> I think this should fail if path is NULL and
> (cfg || (driver && (cfg = virQEMUDriverGetConfig(driver)))) is not true.
> 
> On the other hand, do we actually need to check for this? Aren't both
> cfg and driver guaranteed to be non-NULL at this point?

'driver' corresponds to the opaque argument; we already have other
examples in the function that assume it can be NULL on some callback paths:

    /* set default disk types and drivers */
    if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
        virDomainDiskDefPtr disk = dev->data.disk;

        /* both of these require data from the driver config */
        if (driver && (cfg = virQEMUDriverGetConfig(driver))) {

so this is just matching existing style.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130423/cc0da312/attachment-0001.sig>


More information about the libvir-list mailing list