patch for v1.4.7
Signed-off-by: xia li <[email protected]>
---
exec/objdb.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/exec/objdb.c b/exec/objdb.c
index 5d7c124..1a0b2fb 100644
--- a/exec/objdb.c
+++ b/exec/objdb.c
@@ -1412,7 +1412,7 @@ static int object_priv_get (
int res;
struct object_instance *object_instance;
- objdb_unlock();
+ objdb_lock();
res = hdb_handle_get (&object_instance_database,
object_handle, (void *)&object_instance);
if (res != 0) {
@@ -1723,9 +1723,12 @@ static int object_track_start(hdb_handle_t object_handle,
unsigned int res;
struct object_tracker * tracker_pt;
+ objdb_lock();
+
res = hdb_handle_get (&object_instance_database,
object_handle, (void *)&instance);
if (res != 0) {
+ objdb_unlock();
return (res);
}
tracker_pt = malloc(sizeof(struct object_tracker));
@@ -1746,6 +1749,7 @@ static int object_track_start(hdb_handle_t object_handle,
hdb_handle_put (&object_instance_database, object_handle);
+ objdb_unlock();
return (res);
}
@@ -1762,6 +1766,8 @@ static void
object_track_stop(object_key_change_notify_fn_t key_change_notify_fn
struct list_head *obj_list, *tmp_obj_list;
unsigned int res;
+ objdb_lock();
+
/* go through the global list and find all the trackers to stop */
for (list = objdb_trackers_head.next, tmp_list = list->next;
list != &objdb_trackers_head; list = tmp_list, tmp_list =
tmp_list->next) {
@@ -1796,6 +1802,7 @@ static void
object_track_stop(object_key_change_notify_fn_t key_change_notify_fn
free(tracker_pt);
}
}
+ objdb_unlock();
}
static int object_dump(hdb_handle_t object_handle,
@@ -1852,10 +1859,11 @@ static int object_reload_config(int flush, const char
**error_string)
int res;
main_get_config_modules(&modules, &num_modules);
- object_reload_notification(OBJDB_RELOAD_NOTIFY_START, flush);
objdb_lock();
+ object_reload_notification(OBJDB_RELOAD_NOTIFY_START, flush);
+
for (i=0; i<num_modules; i++) {
if (modules[i]->config_reloadconfig) {
res = modules[i]->config_reloadconfig(&objdb_iface,
flush, error_string);
@@ -1866,8 +1874,10 @@ static int object_reload_config(int flush, const char
**error_string)
}
}
}
- objdb_unlock();
+
object_reload_notification(OBJDB_RELOAD_NOTIFY_END, flush);
+
+ objdb_unlock();
return 0;
}
--
1.8.4.5
_______________________________________________
discuss mailing list
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss