[ovs-dev] [PATCH 1/3] sset: New function sset_intersect().

Andy Zhou azhou at nicira.com
Thu Aug 27 00:25:44 UTC 2015


On Wed, Aug 26, 2015 at 4:58 PM, Ben Pfaff <blp at nicira.com> wrote:
> On Wed, Aug 26, 2015 at 04:56:20PM -0700, Andy Zhou wrote:
>> On Wed, Aug 26, 2015 at 4:46 PM, Ben Pfaff <blp at nicira.com> wrote:
>> > On Wed, Aug 26, 2015 at 12:34:07PM -0700, Andy Zhou wrote:
>> >> On Tue, Aug 25, 2015 at 9:37 PM, Ben Pfaff <blp at nicira.com> wrote:
>> >> > +    SSET_FOR_EACH_SAFE (name, next, a) {
>> >> > +        if (!sset_contains(b, name)) {
>> >> > +            sset_delete(a, SSET_NODE_FROM_NAME(name));
>> >> Why not use 'sset_find_and_delete()'?
>> >
>> > That would re-search the sset for 'name', but we already have a pointer
>> > to it via 'a'.
>> Sorry, did not get this. It seems they both call sset_find()...
>
> SSET_NODE_FROM_NAME just expands to CONTAINER_OF, and sset_delete() is
> just:
>
>     /* Deletes 'node' from 'set' and frees 'node'. */
>     void
>     sset_delete(struct sset *set, struct sset_node *node)
>     {
>         hmap_remove(&set->map, &node->hmap_node);
>         free(node);
>     }
>
> so I'm not sure what you're looking at.
You are right. sset_find_and_delete() can not be used to implement the
same logic here.



More information about the dev mailing list