[ovs-dev] [PATCH] ovn-northd: Tag allocation for nested containers.

Ben Pfaff blp at ovn.org
Fri Sep 9 20:48:46 UTC 2016


On Tue, Sep 06, 2016 at 01:25:50AM -0700, Gurucharan Shetty wrote:
> When there are hundreds of nodes controlled by OVN, the workflow
> to track and allocate unique tags across multiple hosts becomes
> complicated.  It is much easier to let ovn-northd do the allocation.
> 
> Signed-off-by: Gurucharan Shetty <guru at ovn.org>

I think that there's an off-by-one in the call to bitmap_scan().  Here's
an incremental for this and other minor stuff.

Acked-by: Ben Pfaff <blp at ovn.org>

--8<--------------------------cut here-------------------------->8--

diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index a2af36d..32ee1f4 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -1036,9 +1036,8 @@ tag_alloc_create_new_tag(struct hmap *tag_alloc_table,
         int64_t tag;
         tag_alloc_node = tag_alloc_get_node(tag_alloc_table,
                                             nbsp->parent_name);
-        tag = bitmap_scan(tag_alloc_node->allocated_tags, 0, 1,
-                          MAX_OVN_TAGS + 1);
-        if (tag == MAX_OVN_TAGS + 1) {
+        tag = bitmap_scan(tag_alloc_node->allocated_tags, 0, 1, MAX_OVN_TAGS);
+        if (tag == MAX_OVN_TAGS) {
             static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(1, 1);
             VLOG_ERR_RL(&rl, "out of vlans for logical switch ports with "
                         "parent %s", nbsp->parent_name);
diff --git a/ovn/ovn-nb.xml b/ovn/ovn-nb.xml
index 077e4c5..d6f55e6 100644
--- a/ovn/ovn-nb.xml
+++ b/ovn/ovn-nb.xml
@@ -331,13 +331,13 @@
         <p>
           The VLAN tag in the network traffic associated with a container's
           network interface.  The client can request <code>ovn-northd</code>
-          to allocate a uniqe tag for the logical switch port with a specific
+          to allocate a tag that is unique within the scope of a specific
           parent (specified in <ref column="parent_name"/>) by setting a value
           of <code>0</code> in this column.  The allocated value is written
           by <code>ovn-northd</code> in the <ref column="tag"/> column
           (Note that these tags are allocated and managed locally in
           <code>ovn-northd</code>, so they cannot be reconstructed in the event
-          that the database is lost).  The client can also request a specific
+          that the database is lost.)  The client can also request a specific
           non-zero tag and <code>ovn-northd</code> will honor it and copy that
           value to the <ref column="tag"/> column.
         </p>
diff --git a/ovn/utilities/ovn-nbctl.8.xml b/ovn/utilities/ovn-nbctl.8.xml
index 28e9572..015b416 100644
--- a/ovn/utilities/ovn-nbctl.8.xml
+++ b/ovn/utilities/ovn-nbctl.8.xml
@@ -125,9 +125,10 @@
         <p>
           Creates on <var>switch</var> a logical switch port named
           <var>port</var> that is a child of <var>parent</var> that is
-          identifed with VLAN ID <var>tag_request</var>.  For a given
-          <var>parent</var>, if <var>tag_request</var> is <code>0</code>,
-          <code>ovn-northd</code> generates a unique tag.  This is useful in
+          identified with VLAN ID <var>tag_request</var>.  If
+          <var>tag_request</var> is <code>0</code>, <code>ovn-northd</code>
+          generates a tag that is unique in the scope of <var>parent</var>.
+          This is useful in
           cases such as virtualized container environments where Open
           vSwitch does not have a direct connection to the container's
           port and it must be shared with the virtual machine's port.
diff --git a/tests/ovn.at b/tests/ovn.at
index b62f58f..2cca6cf 100644
--- a/tests/ovn.at
+++ b/tests/ovn.at
@@ -5093,7 +5093,7 @@ AT_CHECK([ovn-sbctl --data=bare --no-heading --columns=tag find port_binding \
 logical_port="c3"], [0], [4
 ])
 
-dnl A differnet parent.
+dnl A different parent.
 AT_CHECK([ovn-nbctl --wait=sb lsp-add ls1 c4 parent2 0])
 AT_CHECK([ovn-nbctl lsp-get-tag c4], [0], [1
 ])



More information about the dev mailing list