diff options
Diffstat (limited to 'fs/ocfs2/dlm/dlmmaster.c')
| -rw-r--r-- | fs/ocfs2/dlm/dlmmaster.c | 40 |
1 files changed, 11 insertions, 29 deletions
diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c index 6edffca99d98..65b2b9b92688 100644 --- a/fs/ocfs2/dlm/dlmmaster.c +++ b/fs/ocfs2/dlm/dlmmaster.c | |||
| @@ -192,25 +192,20 @@ static void dlm_print_one_mle(struct dlm_master_list_entry *mle) | |||
| 192 | static void dlm_dump_mles(struct dlm_ctxt *dlm) | 192 | static void dlm_dump_mles(struct dlm_ctxt *dlm) |
| 193 | { | 193 | { |
| 194 | struct dlm_master_list_entry *mle; | 194 | struct dlm_master_list_entry *mle; |
| 195 | struct list_head *iter; | ||
| 196 | 195 | ||
| 197 | mlog(ML_NOTICE, "dumping all mles for domain %s:\n", dlm->name); | 196 | mlog(ML_NOTICE, "dumping all mles for domain %s:\n", dlm->name); |
| 198 | spin_lock(&dlm->master_lock); | 197 | spin_lock(&dlm->master_lock); |
| 199 | list_for_each(iter, &dlm->master_list) { | 198 | list_for_each_entry(mle, &dlm->master_list, list) |
| 200 | mle = list_entry(iter, struct dlm_master_list_entry, list); | ||
| 201 | dlm_print_one_mle(mle); | 199 | dlm_print_one_mle(mle); |
| 202 | } | ||
| 203 | spin_unlock(&dlm->master_lock); | 200 | spin_unlock(&dlm->master_lock); |
| 204 | } | 201 | } |
| 205 | 202 | ||
| 206 | int dlm_dump_all_mles(const char __user *data, unsigned int len) | 203 | int dlm_dump_all_mles(const char __user *data, unsigned int len) |
| 207 | { | 204 | { |
| 208 | struct list_head *iter; | ||
| 209 | struct dlm_ctxt *dlm; | 205 | struct dlm_ctxt *dlm; |
| 210 | 206 | ||
| 211 | spin_lock(&dlm_domain_lock); | 207 | spin_lock(&dlm_domain_lock); |
| 212 | list_for_each(iter, &dlm_domains) { | 208 | list_for_each_entry(dlm, &dlm_domains, list) { |
| 213 | dlm = list_entry (iter, struct dlm_ctxt, list); | ||
| 214 | mlog(ML_NOTICE, "found dlm: %p, name=%s\n", dlm, dlm->name); | 209 | mlog(ML_NOTICE, "found dlm: %p, name=%s\n", dlm, dlm->name); |
| 215 | dlm_dump_mles(dlm); | 210 | dlm_dump_mles(dlm); |
| 216 | } | 211 | } |
| @@ -454,12 +449,10 @@ static int dlm_find_mle(struct dlm_ctxt *dlm, | |||
| 454 | char *name, unsigned int namelen) | 449 | char *name, unsigned int namelen) |
| 455 | { | 450 | { |
| 456 | struct dlm_master_list_entry *tmpmle; | 451 | struct dlm_master_list_entry *tmpmle; |
| 457 | struct list_head *iter; | ||
| 458 | 452 | ||
| 459 | assert_spin_locked(&dlm->master_lock); | 453 | assert_spin_locked(&dlm->master_lock); |
| 460 | 454 | ||
| 461 | list_for_each(iter, &dlm->master_list) { | 455 | list_for_each_entry(tmpmle, &dlm->master_list, list) { |
| 462 | tmpmle = list_entry(iter, struct dlm_master_list_entry, list); | ||
| 463 | if (!dlm_mle_equal(dlm, tmpmle, name, namelen)) | 456 | if (!dlm_mle_equal(dlm, tmpmle, name, namelen)) |
| 464 | continue; | 457 | continue; |
| 465 | dlm_get_mle(tmpmle); | 458 | dlm_get_mle(tmpmle); |
| @@ -472,13 +465,10 @@ static int dlm_find_mle(struct dlm_ctxt *dlm, | |||
| 472 | void dlm_hb_event_notify_attached(struct dlm_ctxt *dlm, int idx, int node_up) | 465 | void dlm_hb_event_notify_attached(struct dlm_ctxt *dlm, int idx, int node_up) |
| 473 | { | 466 | { |
| 474 | struct dlm_master_list_entry *mle; | 467 | struct dlm_master_list_entry *mle; |
| 475 | struct list_head *iter; | ||
| 476 | 468 | ||
| 477 | assert_spin_locked(&dlm->spinlock); | 469 | assert_spin_locked(&dlm->spinlock); |
| 478 | 470 | ||
| 479 | list_for_each(iter, &dlm->mle_hb_events) { | 471 | list_for_each_entry(mle, &dlm->mle_hb_events, hb_events) { |
| 480 | mle = list_entry(iter, struct dlm_master_list_entry, | ||
| 481 | hb_events); | ||
| 482 | if (node_up) | 472 | if (node_up) |
| 483 | dlm_mle_node_up(dlm, mle, NULL, idx); | 473 | dlm_mle_node_up(dlm, mle, NULL, idx); |
| 484 | else | 474 | else |
| @@ -2434,7 +2424,7 @@ static int dlm_is_lockres_migrateable(struct dlm_ctxt *dlm, | |||
| 2434 | int ret; | 2424 | int ret; |
| 2435 | int i; | 2425 | int i; |
| 2436 | int count = 0; | 2426 | int count = 0; |
| 2437 | struct list_head *queue, *iter; | 2427 | struct list_head *queue; |
| 2438 | struct dlm_lock *lock; | 2428 | struct dlm_lock *lock; |
| 2439 | 2429 | ||
| 2440 | assert_spin_locked(&res->spinlock); | 2430 | assert_spin_locked(&res->spinlock); |
| @@ -2453,8 +2443,7 @@ static int dlm_is_lockres_migrateable(struct dlm_ctxt *dlm, | |||
| 2453 | ret = 0; | 2443 | ret = 0; |
| 2454 | queue = &res->granted; | 2444 | queue = &res->granted; |
| 2455 | for (i = 0; i < 3; i++) { | 2445 | for (i = 0; i < 3; i++) { |
| 2456 | list_for_each(iter, queue) { | 2446 | list_for_each_entry(lock, queue, list) { |
| 2457 | lock = list_entry(iter, struct dlm_lock, list); | ||
| 2458 | ++count; | 2447 | ++count; |
| 2459 | if (lock->ml.node == dlm->node_num) { | 2448 | if (lock->ml.node == dlm->node_num) { |
| 2460 | mlog(0, "found a lock owned by this node still " | 2449 | mlog(0, "found a lock owned by this node still " |
| @@ -2923,18 +2912,16 @@ again: | |||
| 2923 | static void dlm_remove_nonlocal_locks(struct dlm_ctxt *dlm, | 2912 | static void dlm_remove_nonlocal_locks(struct dlm_ctxt *dlm, |
| 2924 | struct dlm_lock_resource *res) | 2913 | struct dlm_lock_resource *res) |
| 2925 | { | 2914 | { |
| 2926 | struct list_head *iter, *iter2; | ||
| 2927 | struct list_head *queue = &res->granted; | 2915 | struct list_head *queue = &res->granted; |
| 2928 | int i, bit; | 2916 | int i, bit; |
| 2929 | struct dlm_lock *lock; | 2917 | struct dlm_lock *lock, *next; |
| 2930 | 2918 | ||
| 2931 | assert_spin_locked(&res->spinlock); | 2919 | assert_spin_locked(&res->spinlock); |
| 2932 | 2920 | ||
| 2933 | BUG_ON(res->owner == dlm->node_num); | 2921 | BUG_ON(res->owner == dlm->node_num); |
| 2934 | 2922 | ||
| 2935 | for (i=0; i<3; i++) { | 2923 | for (i=0; i<3; i++) { |
| 2936 | list_for_each_safe(iter, iter2, queue) { | 2924 | list_for_each_entry_safe(lock, next, queue, list) { |
| 2937 | lock = list_entry (iter, struct dlm_lock, list); | ||
| 2938 | if (lock->ml.node != dlm->node_num) { | 2925 | if (lock->ml.node != dlm->node_num) { |
| 2939 | mlog(0, "putting lock for node %u\n", | 2926 | mlog(0, "putting lock for node %u\n", |
| 2940 | lock->ml.node); | 2927 | lock->ml.node); |
| @@ -2976,7 +2963,6 @@ static u8 dlm_pick_migration_target(struct dlm_ctxt *dlm, | |||
| 2976 | { | 2963 | { |
| 2977 | int i; | 2964 | int i; |
| 2978 | struct list_head *queue = &res->granted; | 2965 | struct list_head *queue = &res->granted; |
| 2979 | struct list_head *iter; | ||
| 2980 | struct dlm_lock *lock; | 2966 | struct dlm_lock *lock; |
| 2981 | int nodenum; | 2967 | int nodenum; |
| 2982 | 2968 | ||
| @@ -2984,10 +2970,9 @@ static u8 dlm_pick_migration_target(struct dlm_ctxt *dlm, | |||
| 2984 | 2970 | ||
| 2985 | spin_lock(&res->spinlock); | 2971 | spin_lock(&res->spinlock); |
| 2986 | for (i=0; i<3; i++) { | 2972 | for (i=0; i<3; i++) { |
| 2987 | list_for_each(iter, queue) { | 2973 | list_for_each_entry(lock, queue, list) { |
| 2988 | /* up to the caller to make sure this node | 2974 | /* up to the caller to make sure this node |
| 2989 | * is alive */ | 2975 | * is alive */ |
| 2990 | lock = list_entry (iter, struct dlm_lock, list); | ||
| 2991 | if (lock->ml.node != dlm->node_num) { | 2976 | if (lock->ml.node != dlm->node_num) { |
| 2992 | spin_unlock(&res->spinlock); | 2977 | spin_unlock(&res->spinlock); |
| 2993 | return lock->ml.node; | 2978 | return lock->ml.node; |
| @@ -3234,8 +3219,7 @@ static int dlm_add_migration_mle(struct dlm_ctxt *dlm, | |||
| 3234 | 3219 | ||
| 3235 | void dlm_clean_master_list(struct dlm_ctxt *dlm, u8 dead_node) | 3220 | void dlm_clean_master_list(struct dlm_ctxt *dlm, u8 dead_node) |
| 3236 | { | 3221 | { |
| 3237 | struct list_head *iter, *iter2; | 3222 | struct dlm_master_list_entry *mle, *next; |
| 3238 | struct dlm_master_list_entry *mle; | ||
| 3239 | struct dlm_lock_resource *res; | 3223 | struct dlm_lock_resource *res; |
| 3240 | unsigned int hash; | 3224 | unsigned int hash; |
| 3241 | 3225 | ||
| @@ -3245,9 +3229,7 @@ top: | |||
| 3245 | 3229 | ||
| 3246 | /* clean the master list */ | 3230 | /* clean the master list */ |
| 3247 | spin_lock(&dlm->master_lock); | 3231 | spin_lock(&dlm->master_lock); |
| 3248 | list_for_each_safe(iter, iter2, &dlm->master_list) { | 3232 | list_for_each_entry_safe(mle, next, &dlm->master_list, list) { |
| 3249 | mle = list_entry(iter, struct dlm_master_list_entry, list); | ||
| 3250 | |||
| 3251 | BUG_ON(mle->type != DLM_MLE_BLOCK && | 3233 | BUG_ON(mle->type != DLM_MLE_BLOCK && |
| 3252 | mle->type != DLM_MLE_MASTER && | 3234 | mle->type != DLM_MLE_MASTER && |
| 3253 | mle->type != DLM_MLE_MIGRATION); | 3235 | mle->type != DLM_MLE_MIGRATION); |
