Re: [libvirt] [PATCH v3 10/10] Turn virNetClient* into virObject instances

2012-08-07 Thread Daniel P. Berrange
On Mon, Aug 06, 2012 at 01:56:33PM -0600, Eric Blake wrote:
 On 08/06/2012 05:53 AM, Daniel P. Berrange wrote:
  From: Daniel P. Berrange berra...@redhat.com
  
  Make all the virNetClient* objects use virObject APIs for
  reference counting
  
  Signed-off-by: Daniel P. Berrange berra...@redhat.com
  ---
   src/libvirt_probes.d  |4 +-
   src/lxc/lxc_monitor.c |4 +-
   src/remote/remote_driver.c|   20 -
   src/rpc/gendispatch.pl|4 +-
   src/rpc/virnetclient.c|   96 
  +
   src/rpc/virnetclient.h|4 +-
   src/rpc/virnetclientprogram.c |   43 +-
   src/rpc/virnetclientprogram.h |5 +--
   src/rpc/virnetclientstream.c  |   65 +---
   src/rpc/virnetclientstream.h  |5 +--
   10 files changed, 110 insertions(+), 140 deletions(-)
 
 
  +++ b/src/rpc/virnetclient.h
  @@ -30,6 +30,7 @@
   # endif
   # include virnetclientprogram.h
   # include virnetclientstream.h
  +# include virobject.h
 
 Same comments about .c instead of .h.
 
  -void virNetClientProgramRef(virNetClientProgramPtr prog)
  +void virNetClientProgramDispose(void *obj ATTRIBUTE_UNUSED)
   {
  -prog-refs++;
  -}
  -
  -
  -void virNetClientProgramFree(virNetClientProgramPtr prog)
  -{
  -if (!prog)
  -return;
  -
  -prog-refs--;
  -if (prog-refs  0)
  -return;
  -
  -VIR_FREE(prog);
   }
 
 And another no-op dispose where you could use NULL instead.
 
 ACK with this squashed in:
 
 diff --git i/cfg.mk w/cfg.mk
 index 64af1ee..c0457e7 100644
 --- i/cfg.mk
 +++ w/cfg.mk
 @@ -145,9 +145,6 @@ useless_free_options =\
--name=virJSONValueFree\
--name=virLastErrFreeData  \
--name=virNetMessageFree  \
 -  --name=virNetClientFree   \
 -  --name=virNetClientProgramFree\
 -  --name=virNetClientStreamFree \
--name=virNetServerMDNSFree   \
--name=virNetServerMDNSEntryFree  \
--name=virNetServerMDNSGroupFree  \
 diff --git i/src/libvirt_private.syms w/src/libvirt_private.syms
 index 0543005..79b4a18 100644
 --- i/src/libvirt_private.syms
 +++ w/src/libvirt_private.syms
 @@ -1304,7 +1304,6 @@ virNetClientAddProgram;
  virNetClientAddStream;
  virNetClientClose;
  virNetClientDupFD;
 -virNetClientFree;
  virNetClientGetFD;
  virNetClientGetTLSKeySize;
  virNetClientHasPassFD;
 @@ -1318,7 +1317,6 @@ virNetClientNewExternal;
  virNetClientNewSSH;
  virNetClientNewTCP;
  virNetClientNewUNIX;
 -virNetClientRef;
  virNetClientRemoteAddrString;
  virNetClientRemoveStream;
  virNetClientSendNoReply;
 @@ -1333,12 +1331,10 @@ virNetClientSetTLSSession;
  # virnetclientprogram.h
  virNetClientProgramCall;
  virNetClientProgramDispatch;
 -virNetClientProgramFree;
  virNetClientProgramGetProgram;
  virNetClientProgramGetVersion;
  virNetClientProgramMatches;
  virNetClientProgramNew;
 -virNetClientProgramRef;
 
 
  # virnetclientstream.h
 @@ -1346,13 +1342,11 @@ virNetClientStreamEOF;
  virNetClientStreamEventAddCallback;
  virNetClientStreamEventRemoveCallback;
  virNetClientStreamEventUpdateCallback;
 -virNetClientStreamFree;
  virNetClientStreamMatches;
  virNetClientStreamNew;
  virNetClientStreamQueuePacket;
  virNetClientStreamRaiseError;
  virNetClientStreamRecvPacket;
 -virNetClientStreamRef;
  virNetClientStreamSendPacket;
  virNetClientStreamSetError;

Thanks for all the reviews. This series is now merged, with the changes
you suggested for cfg.mk and libvirt_private.syms

Now we're in a position to consider removing locking from some places
which only use it for the purpose of protecting ref counts

Daniel
-- 
|: http://berrange.com  -o-http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org  -o- http://virt-manager.org :|
|: http://autobuild.org   -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org   -o-   http://live.gnome.org/gtk-vnc :|

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


[libvirt] [PATCH v3 10/10] Turn virNetClient* into virObject instances

2012-08-06 Thread Daniel P. Berrange
From: Daniel P. Berrange berra...@redhat.com

Make all the virNetClient* objects use virObject APIs for
reference counting

Signed-off-by: Daniel P. Berrange berra...@redhat.com
---
 src/libvirt_probes.d  |4 +-
 src/lxc/lxc_monitor.c |4 +-
 src/remote/remote_driver.c|   20 -
 src/rpc/gendispatch.pl|4 +-
 src/rpc/virnetclient.c|   96 +
 src/rpc/virnetclient.h|4 +-
 src/rpc/virnetclientprogram.c |   43 +-
 src/rpc/virnetclientprogram.h |5 +--
 src/rpc/virnetclientstream.c  |   65 +---
 src/rpc/virnetclientstream.h  |5 +--
 10 files changed, 110 insertions(+), 140 deletions(-)

diff --git a/src/libvirt_probes.d b/src/libvirt_probes.d
index 27f4e9a..9343fa4 100644
--- a/src/libvirt_probes.d
+++ b/src/libvirt_probes.d
@@ -40,9 +40,7 @@ provider libvirt {
 
# file: src/rpc/virnetclient.c
# prefix: rpc
-   probe rpc_client_new(void *client, int refs, void *sock);
-   probe rpc_client_ref(void *client, int refs);
-   probe rpc_client_free(void *client, int refs);
+   probe rpc_client_new(void *client, void *sock);
 
probe rpc_client_msg_tx_queue(void *client, int len, int prog, int 
vers, int proc, int type, int status, int serial);
probe rpc_client_msg_rx(void *client, int len, int prog, int vers, int 
proc, int type, int status, int serial);
diff --git a/src/lxc/lxc_monitor.c b/src/lxc/lxc_monitor.c
index a2a2599..a81d0f7 100644
--- a/src/lxc/lxc_monitor.c
+++ b/src/lxc/lxc_monitor.c
@@ -170,7 +170,7 @@ static void virLXCMonitorFree(virLXCMonitorPtr mon)
 if (mon-cb  mon-cb-destroy)
 (mon-cb-destroy)(mon, mon-vm);
 virMutexDestroy(mon-lock);
-virNetClientProgramFree(mon-program);
+virObjectUnref(mon-program);
 VIR_FREE(mon);
 }
 
@@ -199,7 +199,7 @@ void virLXCMonitorClose(virLXCMonitorPtr mon)
 {
 if (mon-client) {
 virNetClientClose(mon-client);
-virNetClientFree(mon-client);
+virObjectUnref(mon-client);
 mon-client = NULL;
 }
 }
diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
index 38b11e1..353a153 100644
--- a/src/remote/remote_driver.c
+++ b/src/remote/remote_driver.c
@@ -792,10 +792,10 @@ doRemoteOpen (virConnectPtr conn,
 virReportOOMError();
 
  failed:
-virNetClientProgramFree(priv-remoteProgram);
-virNetClientProgramFree(priv-qemuProgram);
+virObjectUnref(priv-remoteProgram);
+virObjectUnref(priv-qemuProgram);
 virNetClientClose(priv-client);
-virNetClientFree(priv-client);
+virObjectUnref(priv-client);
 priv-client = NULL;
 
 VIR_FREE(priv-hostname);
@@ -946,10 +946,10 @@ doRemoteClose (virConnectPtr conn, struct private_data 
*priv)
 virObjectUnref(priv-tls);
 priv-tls = NULL;
 virNetClientClose(priv-client);
-virNetClientFree(priv-client);
+virObjectUnref(priv-client);
 priv-client = NULL;
-virNetClientProgramFree(priv-remoteProgram);
-virNetClientProgramFree(priv-qemuProgram);
+virObjectUnref(priv-remoteProgram);
+virObjectUnref(priv-qemuProgram);
 priv-remoteProgram = priv-qemuProgram = NULL;
 
 /* Free hostname copy */
@@ -4171,7 +4171,7 @@ remoteStreamFinish(virStreamPtr st)
 
 cleanup:
 virNetClientRemoveStream(priv-client, privst);
-virNetClientStreamFree(privst);
+virObjectUnref(privst);
 st-privateData = NULL;
 st-driver = NULL;
 
@@ -4206,7 +4206,7 @@ remoteStreamAbort(virStreamPtr st)
 
 cleanup:
 virNetClientRemoveStream(priv-client, privst);
-virNetClientStreamFree(privst);
+virObjectUnref(privst);
 st-privateData = NULL;
 st-driver = NULL;
 
@@ -4507,7 +4507,7 @@ remoteDomainMigratePrepareTunnel3(virConnectPtr dconn,
 goto done;
 
 if (virNetClientAddStream(priv-client, netst)  0) {
-virNetClientStreamFree(netst);
+virObjectUnref(netst);
 goto done;
 }
 
@@ -4525,7 +4525,7 @@ remoteDomainMigratePrepareTunnel3(virConnectPtr dconn,
  (xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel3_args, (char 
*) args,
  (xdrproc_t) xdr_remote_domain_migrate_prepare_tunnel3_ret, (char 
*) ret) == -1) {
 virNetClientRemoveStream(priv-client, netst);
-virNetClientStreamFree(netst);
+virObjectUnref(netst);
 goto done;
 }
 
diff --git a/src/rpc/gendispatch.pl b/src/rpc/gendispatch.pl
index 3a66445..12023e9 100755
--- a/src/rpc/gendispatch.pl
+++ b/src/rpc/gendispatch.pl
@@ -1450,7 +1450,7 @@ elsif ($opt_k) {
 print goto done;\n;
 print \n;
 print if (virNetClientAddStream(priv-client, netst)  0) 
{\n;
-print virNetClientStreamFree(netst);\n;
+print virObjectUnref(netst);\n;
 print goto done;\n;
 print };
 print \n;
@@ -1526,7 +1526,7 @@ elsif ($opt_k) {
 
   

Re: [libvirt] [PATCH v3 10/10] Turn virNetClient* into virObject instances

2012-08-06 Thread Eric Blake
On 08/06/2012 05:53 AM, Daniel P. Berrange wrote:
 From: Daniel P. Berrange berra...@redhat.com
 
 Make all the virNetClient* objects use virObject APIs for
 reference counting
 
 Signed-off-by: Daniel P. Berrange berra...@redhat.com
 ---
  src/libvirt_probes.d  |4 +-
  src/lxc/lxc_monitor.c |4 +-
  src/remote/remote_driver.c|   20 -
  src/rpc/gendispatch.pl|4 +-
  src/rpc/virnetclient.c|   96 
 +
  src/rpc/virnetclient.h|4 +-
  src/rpc/virnetclientprogram.c |   43 +-
  src/rpc/virnetclientprogram.h |5 +--
  src/rpc/virnetclientstream.c  |   65 +---
  src/rpc/virnetclientstream.h  |5 +--
  10 files changed, 110 insertions(+), 140 deletions(-)


 +++ b/src/rpc/virnetclient.h
 @@ -30,6 +30,7 @@
  # endif
  # include virnetclientprogram.h
  # include virnetclientstream.h
 +# include virobject.h

Same comments about .c instead of .h.

 -void virNetClientProgramRef(virNetClientProgramPtr prog)
 +void virNetClientProgramDispose(void *obj ATTRIBUTE_UNUSED)
  {
 -prog-refs++;
 -}
 -
 -
 -void virNetClientProgramFree(virNetClientProgramPtr prog)
 -{
 -if (!prog)
 -return;
 -
 -prog-refs--;
 -if (prog-refs  0)
 -return;
 -
 -VIR_FREE(prog);
  }

And another no-op dispose where you could use NULL instead.

ACK with this squashed in:

diff --git i/cfg.mk w/cfg.mk
index 64af1ee..c0457e7 100644
--- i/cfg.mk
+++ w/cfg.mk
@@ -145,9 +145,6 @@ useless_free_options =  \
   --name=virJSONValueFree  \
   --name=virLastErrFreeData\
   --name=virNetMessageFree  \
-  --name=virNetClientFree   \
-  --name=virNetClientProgramFree\
-  --name=virNetClientStreamFree \
   --name=virNetServerMDNSFree   \
   --name=virNetServerMDNSEntryFree  \
   --name=virNetServerMDNSGroupFree  \
diff --git i/src/libvirt_private.syms w/src/libvirt_private.syms
index 0543005..79b4a18 100644
--- i/src/libvirt_private.syms
+++ w/src/libvirt_private.syms
@@ -1304,7 +1304,6 @@ virNetClientAddProgram;
 virNetClientAddStream;
 virNetClientClose;
 virNetClientDupFD;
-virNetClientFree;
 virNetClientGetFD;
 virNetClientGetTLSKeySize;
 virNetClientHasPassFD;
@@ -1318,7 +1317,6 @@ virNetClientNewExternal;
 virNetClientNewSSH;
 virNetClientNewTCP;
 virNetClientNewUNIX;
-virNetClientRef;
 virNetClientRemoteAddrString;
 virNetClientRemoveStream;
 virNetClientSendNoReply;
@@ -1333,12 +1331,10 @@ virNetClientSetTLSSession;
 # virnetclientprogram.h
 virNetClientProgramCall;
 virNetClientProgramDispatch;
-virNetClientProgramFree;
 virNetClientProgramGetProgram;
 virNetClientProgramGetVersion;
 virNetClientProgramMatches;
 virNetClientProgramNew;
-virNetClientProgramRef;


 # virnetclientstream.h
@@ -1346,13 +1342,11 @@ virNetClientStreamEOF;
 virNetClientStreamEventAddCallback;
 virNetClientStreamEventRemoveCallback;
 virNetClientStreamEventUpdateCallback;
-virNetClientStreamFree;
 virNetClientStreamMatches;
 virNetClientStreamNew;
 virNetClientStreamQueuePacket;
 virNetClientStreamRaiseError;
 virNetClientStreamRecvPacket;
-virNetClientStreamRef;
 virNetClientStreamSendPacket;
 virNetClientStreamSetError;


-- 
Eric Blake   ebl...@redhat.com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list