[libvirt] [PATCH v3 2/2] nwfilter: Rebuild filters only if new filter is different than current

Stefan Berger stefanb at linux.vnet.ibm.com
Fri Jan 27 16:18:47 UTC 2012


On 01/25/2012 04:41 PM, Eric Blake wrote:
> On 01/25/2012 11:58 AM, Stefan Berger wrote:
>> Compare two filters' XML for equality and only rebuild/instantiate the new
>> filter if the new and current filters are found to be different. This
>> improves performance during an update of a filter with no obvious change
>> or the reloading of filters during a 'kill -SIGHUP'
>>
>> ---
>>   src/conf/nwfilter_conf.c |   37 +++++++++++++++++++++++++++++++++++++
>>   1 file changed, 37 insertions(+)
>>
>> Index: libvirt-iterator/src/conf/nwfilter_conf.c
>> ===================================================================
>> --- libvirt-iterator.orig/src/conf/nwfilter_conf.c
>> +++ libvirt-iterator/src/conf/nwfilter_conf.c
>> @@ -2809,6 +2809,35 @@ virNWFilterTestUnassignDef(virConnectPtr
>>       return rc;
>>   }
>>
>> +static bool
>> +virNWFilterDefEqual(const virNWFilterDefPtr def1, virNWFilterDefPtr def2,
>> +                    bool cmpUUIDs)
>> +{
>> +    bool ret = false;
>> +    unsigned char rem_uuid[VIR_UUID_BUFLEN];
>> +    char *xml1, *xml2 = NULL;
>> +
>> +    if (!cmpUUIDs) {
>> +        /* make sure the UUIDs are equal */
>> +        memcpy(rem_uuid, def2->uuid, sizeof(rem_uuid));
>> +        memcpy(def2->uuid, def1->uuid, sizeof(def2->uuid));
>> +    }
>> +
>> +    if (!(xml1 = virNWFilterDefFormat(def1)) ||
>> +        !(xml2 = virNWFilterDefFormat(def2)))
>> +        goto cleanup;
>> +
>> +    ret = STREQ(xml1, xml2);
>> +
>> +    if (!cmpUUIDs)
>> +        memcpy(def2->uuid, rem_uuid, sizeof(rem_uuid));
>> +
>> +cleanup:
> Misplaced label.  You need to slide it up two lines, and unconditionally
> call the memcpy() to undo things when !cmpUUIDs.
>
> ACK with that fixed.
>
Pushed both patches with fixes applied.





More information about the libvir-list mailing list