[libvirt] [PATCH] network: add virNetworkPortRef API

Daniel P. Berrangé posted 1 patch 4 years, 10 months ago
Test syntax-check passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20190618114535.15676-1-berrange@redhat.com
include/libvirt/libvirt-network.h |  3 +++
src/libvirt-network.c             | 32 +++++++++++++++++++++++++++++++
src/libvirt_public.syms           |  1 +
3 files changed, 36 insertions(+)
[libvirt] [PATCH] network: add virNetworkPortRef API
Posted by Daniel P. Berrangé 4 years, 10 months ago
Normal practice is to provide a Ref API for all objects, but this was
forgotten for the virNetworkPortPtr object.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/libvirt/libvirt-network.h |  3 +++
 src/libvirt-network.c             | 32 +++++++++++++++++++++++++++++++
 src/libvirt_public.syms           |  1 +
 3 files changed, 36 insertions(+)

diff --git a/include/libvirt/libvirt-network.h b/include/libvirt/libvirt-network.h
index 97eceef754..c9ff0a49ed 100644
--- a/include/libvirt/libvirt-network.h
+++ b/include/libvirt/libvirt-network.h
@@ -455,4 +455,7 @@ virNetworkListAllPorts(virNetworkPtr network,
 int
 virNetworkPortFree(virNetworkPortPtr port);
 
+int
+virNetworkPortRef(virNetworkPortPtr port);
+
 #endif /* LIBVIRT_NETWORK_H */
diff --git a/src/libvirt-network.c b/src/libvirt-network.c
index 6ed32c8ba2..c182064c0f 100644
--- a/src/libvirt-network.c
+++ b/src/libvirt-network.c
@@ -1690,3 +1690,35 @@ virNetworkPortFree(virNetworkPortPtr port)
     virObjectUnref(port);
     return 0;
 }
+
+
+/**
+ * virNetworkPortRef:
+ * @port: a network port object
+ *
+ * Increment the reference count on the network port. For each
+ * additional call to this method, there shall be a corresponding
+ * call to virNetworkPortFree to release the reference count, once
+ * the caller no longer needs the reference to this object.
+ *
+ * This method is typically useful for applications where multiple
+ * threads are using a network port, and it is required that the
+ * port remain resident until all threads have finished using
+ * it. ie, each new thread using a network port would increment
+ * the reference count.
+ *
+ * Returns 0 in case of success, -1 in case of failure.
+ */
+int
+virNetworkPortRef(virNetworkPortPtr port)
+{
+    VIR_DEBUG("port=%p refs=%d", port,
+              port ? port->parent.u.s.refs : 0);
+
+    virResetLastError();
+
+    virCheckNetworkPortReturn(port, -1);
+
+    virObjectRef(port);
+    return 0;
+}
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
index 46c32a081b..75f7fdfb0c 100644
--- a/src/libvirt_public.syms
+++ b/src/libvirt_public.syms
@@ -831,6 +831,7 @@ LIBVIRT_5.5.0 {
         virNetworkPortGetUUIDString;
         virNetworkPortDelete;
         virNetworkPortFree;
+        virNetworkPortRef;
         virNetworkPortSetParameters;
 } LIBVIRT_5.2.0;
 
-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH] network: add virNetworkPortRef API
Posted by Ján Tomko 4 years, 10 months ago
On Tue, Jun 18, 2019 at 12:45:35PM +0100, Daniel P. Berrangé wrote:
>Normal practice is to provide a Ref API for all objects, but this was
>forgotten for the virNetworkPortPtr object.
>
>Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
>---
> include/libvirt/libvirt-network.h |  3 +++
> src/libvirt-network.c             | 32 +++++++++++++++++++++++++++++++
> src/libvirt_public.syms           |  1 +
> 3 files changed, 36 insertions(+)
>

Reviewed-by: Ján Tomko <jtomko@redhat.com>

Jano
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list