Re: [libvirt] [PATCH v3 10/10] Turn virNetClient* into virObject instances
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
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
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