[libvirt] [PATCH v2 23/24] virNetworkObjUnsetDefTransient: Lock object list if needed
Peter Krempa
pkrempa at redhat.com
Fri Mar 6 13:31:17 UTC 2015
On Thu, Mar 05, 2015 at 12:05:24 +0100, Michal Privoznik wrote:
> This patch alone does not make much sense, I know. But it
> prepares ground for next patch which when looking up a network in
> the object list will not lock each network separately when
> accessing its definition. Therefore we must have all the places
> changing network definition lock the list.
>
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/conf/network_conf.c | 9 ++++++++-
> src/conf/network_conf.h | 3 ++-
> src/network/bridge_driver.c | 4 ++--
> 3 files changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
> index 3d318ce..007cebb 100644
> --- a/src/conf/network_conf.c
> +++ b/src/conf/network_conf.c
> @@ -537,12 +537,19 @@ virNetworkObjSetDefTransient(virNetworkObjPtr network, bool live)
> * This *undoes* what virNetworkObjSetDefTransient did.
> */
> void
I've looked through the next patch and you are basically trying to make
the name and UUID pointers for domain immutable or at leas write locked
...
> -virNetworkObjUnsetDefTransient(virNetworkObjPtr network)
> +virNetworkObjUnsetDefTransient(virNetworkObjListPtr nets,
> + virNetworkObjPtr network)
> {
> if (network->newDef) {
> + virObjectRef(network);
> + virObjectUnlock(network);
> + virObjectLock(nets);
> + virObjectLock(network);
> + virObjectUnref(network);
But I don't really like pulling in the complexity into this helper.
> virNetworkDefFree(network->def);
> network->def = network->newDef;
> network->newDef = NULL;
> + virObjectUnlock(nets);
> }
> }
While I like the idea, I'd rather see a conversion to R/W locks or
making of the name and UUID pointers immutable than this hack.
Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150306/24438b81/attachment-0001.sig>
More information about the libvir-list
mailing list