[libvirt] [PATCH v4 1/4] nwfilter: Remove unnecessary UUID comparison bypass
Stefan Berger
stefanb at linux.vnet.ibm.com
Wed Jan 31 22:52:26 UTC 2018
On 12/08/2017 09:01 AM, John Ferlan wrote:
> Commit id '46a811db07' added code to check if the filter by Name
> already existed with a different UUID, to go along with the existing
> found filter by UUID and compare the Names match thus making it
> impossible to reach this find by Name condition without both the
> Name and UUID already matching, so remove the need to "filter"
> out the UUID for the virNWFilterDefEqual.
Sorry, but difficult to parse this sentence.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
> src/conf/virnwfilterobj.c | 18 ++++--------------
> 1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/src/conf/virnwfilterobj.c b/src/conf/virnwfilterobj.c
> index 408e575ca..87d7e7270 100644
> --- a/src/conf/virnwfilterobj.c
> +++ b/src/conf/virnwfilterobj.c
> @@ -287,18 +287,11 @@ virNWFilterObjTestUnassignDef(virNWFilterObjPtr obj)
>
> static bool
> virNWFilterDefEqual(const virNWFilterDef *def1,
> - virNWFilterDefPtr def2,
> - bool cmpUUIDs)
> + virNWFilterDefPtr def2)
> {
> 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));
> - }
> + char *xml1 = NULL;
> + char *xml2 = NULL;
>
> if (!(xml1 = virNWFilterDefFormat(def1)) ||
> !(xml2 = virNWFilterDefFormat(def2)))
> @@ -307,9 +300,6 @@ virNWFilterDefEqual(const virNWFilterDef *def1,
> ret = STREQ(xml1, xml2);
Thinking out lout here (and below): virNWFilterDefFormat() will write
the UUID into the XML. The STREQ will only ever be equal if def1 and
def2 have the same UUID.
>
> cleanup:
> - if (!cmpUUIDs)
> - memcpy(def2->uuid, rem_uuid, sizeof(rem_uuid));
> -
> VIR_FREE(xml1);
> VIR_FREE(xml2);
>
> @@ -360,7 +350,7 @@ virNWFilterObjListAssignDef(virNWFilterObjListPtr nwfilters,
> if ((obj = virNWFilterObjListFindByName(nwfilters, def->name))) {
We will not get here if a filter with the same uuid and name exists or
same name and different uuid. So we can have the same uuid and a
different name at this point.
> objdef = obj->def;
> - if (virNWFilterDefEqual(def, objdef, false)) {
> + if (virNWFilterDefEqual(def, objdef)) {
This call doesn't need to 'shadow' the uuid. It's the only caller. so
your change seems to be correct.
Reviewed-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
> virNWFilterDefFree(objdef);
> obj->def = def;
> return obj;
More information about the libvir-list
mailing list