[ovs-dev] [ovsdb speedup v4 1/3] ovsdb-monitor: refactor ovsdb_monitor_create()
Andy Zhou
azhou at nicira.com
Mon Jun 1 07:30:02 UTC 2015
Add ovsdb_monitor_add_jsonrpc_monitor(). This change will allow
ovsdb_monitor to be reference counted.
Signed-off-by: Andy Zhou <azhou at nicira.com>
Acked-by: Ben Pfaff <blp at nicira.com>
---
v1->v2: style fixes
v2->v3: no change
v3->v4: Fix a bug that introduced memory leak. With this fix, this patch
becomes trival, and could be merged into the next patch. I opt to
keep it to make the next patch less compliated.
---
ovsdb/monitor.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/ovsdb/monitor.c b/ovsdb/monitor.c
index 9541f3e..18d5e3a 100644
--- a/ovsdb/monitor.c
+++ b/ovsdb/monitor.c
@@ -230,12 +230,22 @@ ovsdb_monitor_row_destroy(const struct ovsdb_monitor_table *mt,
}
}
+static void
+ovsdb_monitor_add_jsonrpc_monitor(struct ovsdb_monitor *dbmon,
+ struct ovsdb_jsonrpc_monitor *jsonrpc_monitor)
+{
+ struct jsonrpc_monitor_node *jm;
+
+ jm = xzalloc(sizeof *jm);
+ jm->jsonrpc_monitor = jsonrpc_monitor;
+ list_push_back(&dbmon->jsonrpc_monitors, &jm->node);
+}
+
struct ovsdb_monitor *
ovsdb_monitor_create(struct ovsdb *db,
struct ovsdb_jsonrpc_monitor *jsonrpc_monitor)
{
struct ovsdb_monitor *dbmon;
- struct jsonrpc_monitor_node *jm;
dbmon = xzalloc(sizeof *dbmon);
@@ -246,10 +256,7 @@ ovsdb_monitor_create(struct ovsdb *db,
dbmon->n_transactions = 0;
shash_init(&dbmon->tables);
- jm = xzalloc(sizeof *jm);
- jm->jsonrpc_monitor = jsonrpc_monitor;
- list_push_back(&dbmon->jsonrpc_monitors, &jm->node);
-
+ ovsdb_monitor_add_jsonrpc_monitor(dbmon, jsonrpc_monitor);
return dbmon;
}
--
1.9.1
More information about the dev
mailing list