From 543cc10b4cc5c60aa9fcc62705ccfb9998bf4697 Mon Sep 17 00:00:00 2001 From: Lars Ellenberg Date: Thu, 10 Mar 2011 22:18:18 +0100 Subject: drbd: drbd_adm_get_status needs to show some more detail We want to see existing connection objects, even if they do not currently have volumes attached. Change the .dumpit variant of drbd_adm_get_status to iterate not over minor devices, but over connections + volumes. Signed-off-by: Philipp Reisner Signed-off-by: Lars Ellenberg --- drivers/block/drbd/drbd_main.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'drivers/block/drbd/drbd_main.c') diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 24c712b91fb1..113c7b465384 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -120,6 +120,7 @@ module_param_string(usermode_helper, usermode_helper, sizeof(usermode_helper), 0 */ struct idr minors; struct list_head drbd_tconns; /* list of struct drbd_tconn */ +DEFINE_MUTEX(drbd_cfg_mutex); struct kmem_cache *drbd_request_cache; struct kmem_cache *drbd_ee_cache; /* peer requests */ @@ -2238,14 +2239,14 @@ struct drbd_tconn *conn_by_name(const char *name) if (!name || !name[0]) return NULL; - write_lock_irq(&global_state_lock); + mutex_lock(&drbd_cfg_mutex); list_for_each_entry(tconn, &drbd_tconns, all_tconn) { if (!strcmp(tconn->name, name)) goto found; } tconn = NULL; found: - write_unlock_irq(&global_state_lock); + mutex_unlock(&drbd_cfg_mutex); return tconn; } @@ -2285,9 +2286,9 @@ struct drbd_tconn *drbd_new_tconn(const char *name) drbd_thread_init(tconn, &tconn->worker, drbd_worker, "worker"); drbd_thread_init(tconn, &tconn->asender, drbd_asender, "asender"); - write_lock_irq(&global_state_lock); - list_add(&tconn->all_tconn, &drbd_tconns); - write_unlock_irq(&global_state_lock); + mutex_lock(&drbd_cfg_mutex); + list_add_tail(&tconn->all_tconn, &drbd_tconns); + mutex_unlock(&drbd_cfg_mutex); return tconn; @@ -2302,9 +2303,9 @@ fail: void drbd_free_tconn(struct drbd_tconn *tconn) { - write_lock_irq(&global_state_lock); + mutex_lock(&drbd_cfg_mutex); list_del(&tconn->all_tconn); - write_unlock_irq(&global_state_lock); + mutex_unlock(&drbd_cfg_mutex); idr_destroy(&tconn->volumes); free_cpumask_var(tconn->cpu_mask); -- cgit v1.2.3-55-g7522