[libvirt] [PATCH v4 0/9] add close callback for drivers with persistent connection

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Sat Feb 6 12:42:20 UTC 2016


Suddenly I realize I need to check that peer supports
introduced driver close callbacks. Without it registering
close callbacks from new client to old server will fail.

So, don't hurry to push )

On 05.02.2016 16:44, Nikolay Shirokovskiy wrote:
> Currently close callback API can only inform us of closing the connection
> between remote driver and daemon. But what if a driver running in the
> daemon itself can have another persistent connection? In this case
> we want to be informed of that connection changes state too.
> 
> This patch series extends meaning of current close callback API so
> that now it notifies of closing of any internal persistent connection.
> The overall approach is to move close callback support to drivers.
> 
> Changes from v3:
> ================
> 
> Add patch [3] "close callback: make unregister clean after connect close event."
> 
> Make register/unregister methods of connection close callback object
> return void. This solves the problem of patch [8] "daemon: add connection close rpc"
> ([7] in previous version) of consistent unregistering. All checks are
> moved outside of the methods. I hesitate whether to add or not means
> that track connection close callback object consinstency and finally
> decided to add (checks and warnings inside methods). The reason is that
> without these checks we get memory leaks which are rather difficult
> to find out. Unfortunately this change touch a number of patches as
> the first change is done in the first patch of the series. 
> 
> Changes from v2:
> ================
> Split patches further to make it more comprehensible.
> 
> Nikolay Shirokovskiy (9):
>   factor out virConnectCloseCallbackDataPtr methods
>   virConnectCloseCallbackData: fix connection object refcount
>   close callback: make unregister clean after connect close event
>   virConnectCloseCallbackData: factor out callback disarming
>   close callback API: remove unnecessary locks
>   virConnectCloseCallbackDataDispose: remove unnecessary locks
>   close callback: move it to driver
>   daemon: add connection close rpc
>   vz: implement connection close notification
> 
>  daemon/libvirtd.h            |   1 +
>  daemon/remote.c              |  84 ++++++++++++++++++++++++++++++
>  src/datatypes.c              | 118 ++++++++++++++++++++++++++++++++++---------
>  src/datatypes.h              |  16 ++++--
>  src/driver-hypervisor.h      |  12 +++++
>  src/libvirt-host.c           |  46 ++---------------
>  src/remote/remote_driver.c   | 114 ++++++++++++++++++++++++++++++++++-------
>  src/remote/remote_protocol.x |  24 ++++++++-
>  src/remote_protocol-structs  |   6 +++
>  src/vz/vz_driver.c           |  59 ++++++++++++++++++++++
>  src/vz/vz_sdk.c              |   4 ++
>  src/vz/vz_utils.h            |   3 ++
>  12 files changed, 397 insertions(+), 90 deletions(-)
> 




More information about the libvir-list mailing list