diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2022-02-22 15:14:09 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2022-02-22 18:57:36 +0100 |
commit | a05de15414e8216dae98a3158b8cfa7690780d54 (patch) | |
tree | 2d8931e4171f4e2bf4bc64916065e166bf341de6 | |
parent | 1cb4910841147ad95bc7b9c931699dad384cb4e6 (diff) |
ovsdb: register a shutdown objects for in-flight calls
Once the shutdown logic is in place, we don't want to shut down until
the OVSDB calls are serviced.
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/1118
-rw-r--r-- | src/core/devices/ovs/nm-ovsdb.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/devices/ovs/nm-ovsdb.c b/src/core/devices/ovs/nm-ovsdb.c index 7c45e0e48b..3c91323d78 100644 --- a/src/core/devices/ovs/nm-ovsdb.c +++ b/src/core/devices/ovs/nm-ovsdb.c @@ -104,6 +104,7 @@ typedef struct { OvsdbMethodCallback callback; gpointer user_data; OvsdbMethodPayload payload; + GObject *shutdown_wait_obj; } OvsdbMethodCall; /*****************************************************************************/ @@ -245,6 +246,8 @@ static NM_UTILS_LOOKUP_STR_DEFINE(_device_type_to_table, static void _call_complete(OvsdbMethodCall *call, json_t *response, GError *error) { + g_clear_object(&call->shutdown_wait_obj); + if (response) { gs_free char *str = NULL; @@ -378,12 +381,14 @@ ovsdb_call_method(NMOvsdb *self, call = g_slice_new(OvsdbMethodCall); *call = (OvsdbMethodCall){ - .self = self, - .call_id = CALL_ID_UNSPEC, - .command = command, - .callback = callback, - .user_data = user_data, + .self = self, + .call_id = CALL_ID_UNSPEC, + .command = command, + .callback = callback, + .user_data = user_data, + .shutdown_wait_obj = g_object_new(G_TYPE_OBJECT, NULL), }; + nm_shutdown_wait_obj_register_object(call->shutdown_wait_obj, "ovsdb-call"); if (add_first) c_list_link_front(&priv->calls_lst_head, &call->calls_lst); |