diff options
-rw-r--r-- | fs/ocfs2/cluster/tcp.c | 13 | ||||
-rw-r--r-- | fs/ocfs2/dlm/dlmmaster.c | 40 | ||||
-rw-r--r-- | fs/ocfs2/dlm/dlmrecovery.c | 77 | ||||
-rw-r--r-- | fs/ocfs2/dlmglue.c | 6 | ||||
-rw-r--r-- | fs/ocfs2/extent_map.c | 10 | ||||
-rw-r--r-- | fs/ocfs2/journal.c | 6 |
6 files changed, 47 insertions, 105 deletions
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index d58c7dddb853..f0bdfd944c44 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c | |||
@@ -261,14 +261,12 @@ out: | |||
261 | 261 | ||
262 | static void o2net_complete_nodes_nsw(struct o2net_node *nn) | 262 | static void o2net_complete_nodes_nsw(struct o2net_node *nn) |
263 | { | 263 | { |
264 | struct list_head *iter, *tmp; | 264 | struct o2net_status_wait *nsw, *tmp; |
265 | unsigned int num_kills = 0; | 265 | unsigned int num_kills = 0; |
266 | struct o2net_status_wait *nsw; | ||
267 | 266 | ||
268 | assert_spin_locked(&nn->nn_lock); | 267 | assert_spin_locked(&nn->nn_lock); |
269 | 268 | ||
270 | list_for_each_safe(iter, tmp, &nn->nn_status_list) { | 269 | list_for_each_entry_safe(nsw, tmp, &nn->nn_status_list, ns_node_item) { |
271 | nsw = list_entry(iter, struct o2net_status_wait, ns_node_item); | ||
272 | o2net_complete_nsw_locked(nn, nsw, O2NET_ERR_DIED, 0); | 270 | o2net_complete_nsw_locked(nn, nsw, O2NET_ERR_DIED, 0); |
273 | num_kills++; | 271 | num_kills++; |
274 | } | 272 | } |
@@ -764,13 +762,10 @@ EXPORT_SYMBOL_GPL(o2net_register_handler); | |||
764 | 762 | ||
765 | void o2net_unregister_handler_list(struct list_head *list) | 763 | void o2net_unregister_handler_list(struct list_head *list) |
766 | { | 764 | { |
767 | struct list_head *pos, *n; | 765 | struct o2net_msg_handler *nmh, *n; |
768 | struct o2net_msg_handler *nmh; | ||
769 | 766 | ||
770 | write_lock(&o2net_handler_lock); | 767 | write_lock(&o2net_handler_lock); |
771 | list_for_each_safe(pos, n, list) { | 768 | list_for_each_entry_safe(nmh, n, list, nh_unregister_item) { |
772 | nmh = list_entry(pos, struct o2net_msg_handler, | ||
773 | nh_unregister_item); | ||
774 | mlog(ML_TCP, "unregistering handler func %p type %u key %08x\n", | 769 | mlog(ML_TCP, "unregistering handler func %p type %u key %08x\n", |
775 | nmh->nh_func, nmh->nh_msg_type, nmh->nh_key); | 770 | nmh->nh_func, nmh->nh_msg_type, nmh->nh_key); |
776 | rb_erase(&nmh->nh_node, &o2net_handler_tree); | 771 | rb_erase(&nmh->nh_node, &o2net_handler_tree); |
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); |
diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c index 671c4ed58ee2..74d276ec276f 100644 --- a/fs/ocfs2/dlm/dlmrecovery.c +++ b/fs/ocfs2/dlm/dlmrecovery.c | |||
@@ -158,8 +158,7 @@ void dlm_dispatch_work(struct work_struct *work) | |||
158 | struct dlm_ctxt *dlm = | 158 | struct dlm_ctxt *dlm = |
159 | container_of(work, struct dlm_ctxt, dispatched_work); | 159 | container_of(work, struct dlm_ctxt, dispatched_work); |
160 | LIST_HEAD(tmp_list); | 160 | LIST_HEAD(tmp_list); |
161 | struct list_head *iter, *iter2; | 161 | struct dlm_work_item *item, *next; |
162 | struct dlm_work_item *item; | ||
163 | dlm_workfunc_t *workfunc; | 162 | dlm_workfunc_t *workfunc; |
164 | int tot=0; | 163 | int tot=0; |
165 | 164 | ||
@@ -167,13 +166,12 @@ void dlm_dispatch_work(struct work_struct *work) | |||
167 | list_splice_init(&dlm->work_list, &tmp_list); | 166 | list_splice_init(&dlm->work_list, &tmp_list); |
168 | spin_unlock(&dlm->work_lock); | 167 | spin_unlock(&dlm->work_lock); |
169 | 168 | ||
170 | list_for_each_safe(iter, iter2, &tmp_list) { | 169 | list_for_each_entry(item, &tmp_list, list) { |
171 | tot++; | 170 | tot++; |
172 | } | 171 | } |
173 | mlog(0, "%s: work thread has %d work items\n", dlm->name, tot); | 172 | mlog(0, "%s: work thread has %d work items\n", dlm->name, tot); |
174 | 173 | ||
175 | list_for_each_safe(iter, iter2, &tmp_list) { | 174 | list_for_each_entry_safe(item, next, &tmp_list, list) { |
176 | item = list_entry(iter, struct dlm_work_item, list); | ||
177 | workfunc = item->func; | 175 | workfunc = item->func; |
178 | list_del_init(&item->list); | 176 | list_del_init(&item->list); |
179 | 177 | ||
@@ -549,7 +547,6 @@ static int dlm_remaster_locks(struct dlm_ctxt *dlm, u8 dead_node) | |||
549 | { | 547 | { |
550 | int status = 0; | 548 | int status = 0; |
551 | struct dlm_reco_node_data *ndata; | 549 | struct dlm_reco_node_data *ndata; |
552 | struct list_head *iter; | ||
553 | int all_nodes_done; | 550 | int all_nodes_done; |
554 | int destroy = 0; | 551 | int destroy = 0; |
555 | int pass = 0; | 552 | int pass = 0; |
@@ -567,8 +564,7 @@ static int dlm_remaster_locks(struct dlm_ctxt *dlm, u8 dead_node) | |||
567 | 564 | ||
568 | /* safe to access the node data list without a lock, since this | 565 | /* safe to access the node data list without a lock, since this |
569 | * process is the only one to change the list */ | 566 | * process is the only one to change the list */ |
570 | list_for_each(iter, &dlm->reco.node_data) { | 567 | list_for_each_entry(ndata, &dlm->reco.node_data, list) { |
571 | ndata = list_entry (iter, struct dlm_reco_node_data, list); | ||
572 | BUG_ON(ndata->state != DLM_RECO_NODE_DATA_INIT); | 568 | BUG_ON(ndata->state != DLM_RECO_NODE_DATA_INIT); |
573 | ndata->state = DLM_RECO_NODE_DATA_REQUESTING; | 569 | ndata->state = DLM_RECO_NODE_DATA_REQUESTING; |
574 | 570 | ||
@@ -655,9 +651,7 @@ static int dlm_remaster_locks(struct dlm_ctxt *dlm, u8 dead_node) | |||
655 | * done, or if anyone died */ | 651 | * done, or if anyone died */ |
656 | all_nodes_done = 1; | 652 | all_nodes_done = 1; |
657 | spin_lock(&dlm_reco_state_lock); | 653 | spin_lock(&dlm_reco_state_lock); |
658 | list_for_each(iter, &dlm->reco.node_data) { | 654 | list_for_each_entry(ndata, &dlm->reco.node_data, list) { |
659 | ndata = list_entry (iter, struct dlm_reco_node_data, list); | ||
660 | |||
661 | mlog(0, "checking recovery state of node %u\n", | 655 | mlog(0, "checking recovery state of node %u\n", |
662 | ndata->node_num); | 656 | ndata->node_num); |
663 | switch (ndata->state) { | 657 | switch (ndata->state) { |
@@ -774,16 +768,14 @@ static int dlm_init_recovery_area(struct dlm_ctxt *dlm, u8 dead_node) | |||
774 | 768 | ||
775 | static void dlm_destroy_recovery_area(struct dlm_ctxt *dlm, u8 dead_node) | 769 | static void dlm_destroy_recovery_area(struct dlm_ctxt *dlm, u8 dead_node) |
776 | { | 770 | { |
777 | struct list_head *iter, *iter2; | 771 | struct dlm_reco_node_data *ndata, *next; |
778 | struct dlm_reco_node_data *ndata; | ||
779 | LIST_HEAD(tmplist); | 772 | LIST_HEAD(tmplist); |
780 | 773 | ||
781 | spin_lock(&dlm_reco_state_lock); | 774 | spin_lock(&dlm_reco_state_lock); |
782 | list_splice_init(&dlm->reco.node_data, &tmplist); | 775 | list_splice_init(&dlm->reco.node_data, &tmplist); |
783 | spin_unlock(&dlm_reco_state_lock); | 776 | spin_unlock(&dlm_reco_state_lock); |
784 | 777 | ||
785 | list_for_each_safe(iter, iter2, &tmplist) { | 778 | list_for_each_entry_safe(ndata, next, &tmplist, list) { |
786 | ndata = list_entry (iter, struct dlm_reco_node_data, list); | ||
787 | list_del_init(&ndata->list); | 779 | list_del_init(&ndata->list); |
788 | kfree(ndata); | 780 | kfree(ndata); |
789 | } | 781 | } |
@@ -876,7 +868,6 @@ static void dlm_request_all_locks_worker(struct dlm_work_item *item, void *data) | |||
876 | struct dlm_lock_resource *res; | 868 | struct dlm_lock_resource *res; |
877 | struct dlm_ctxt *dlm; | 869 | struct dlm_ctxt *dlm; |
878 | LIST_HEAD(resources); | 870 | LIST_HEAD(resources); |
879 | struct list_head *iter; | ||
880 | int ret; | 871 | int ret; |
881 | u8 dead_node, reco_master; | 872 | u8 dead_node, reco_master; |
882 | int skip_all_done = 0; | 873 | int skip_all_done = 0; |
@@ -920,8 +911,7 @@ static void dlm_request_all_locks_worker(struct dlm_work_item *item, void *data) | |||
920 | 911 | ||
921 | /* any errors returned will be due to the new_master dying, | 912 | /* any errors returned will be due to the new_master dying, |
922 | * the dlm_reco_thread should detect this */ | 913 | * the dlm_reco_thread should detect this */ |
923 | list_for_each(iter, &resources) { | 914 | list_for_each_entry(res, &resources, recovering) { |
924 | res = list_entry (iter, struct dlm_lock_resource, recovering); | ||
925 | ret = dlm_send_one_lockres(dlm, res, mres, reco_master, | 915 | ret = dlm_send_one_lockres(dlm, res, mres, reco_master, |
926 | DLM_MRES_RECOVERY); | 916 | DLM_MRES_RECOVERY); |
927 | if (ret < 0) { | 917 | if (ret < 0) { |
@@ -983,7 +973,6 @@ int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data, | |||
983 | { | 973 | { |
984 | struct dlm_ctxt *dlm = data; | 974 | struct dlm_ctxt *dlm = data; |
985 | struct dlm_reco_data_done *done = (struct dlm_reco_data_done *)msg->buf; | 975 | struct dlm_reco_data_done *done = (struct dlm_reco_data_done *)msg->buf; |
986 | struct list_head *iter; | ||
987 | struct dlm_reco_node_data *ndata = NULL; | 976 | struct dlm_reco_node_data *ndata = NULL; |
988 | int ret = -EINVAL; | 977 | int ret = -EINVAL; |
989 | 978 | ||
@@ -1000,8 +989,7 @@ int dlm_reco_data_done_handler(struct o2net_msg *msg, u32 len, void *data, | |||
1000 | dlm->reco.dead_node, done->node_idx, dlm->node_num); | 989 | dlm->reco.dead_node, done->node_idx, dlm->node_num); |
1001 | 990 | ||
1002 | spin_lock(&dlm_reco_state_lock); | 991 | spin_lock(&dlm_reco_state_lock); |
1003 | list_for_each(iter, &dlm->reco.node_data) { | 992 | list_for_each_entry(ndata, &dlm->reco.node_data, list) { |
1004 | ndata = list_entry (iter, struct dlm_reco_node_data, list); | ||
1005 | if (ndata->node_num != done->node_idx) | 993 | if (ndata->node_num != done->node_idx) |
1006 | continue; | 994 | continue; |
1007 | 995 | ||
@@ -1049,13 +1037,11 @@ static void dlm_move_reco_locks_to_list(struct dlm_ctxt *dlm, | |||
1049 | struct list_head *list, | 1037 | struct list_head *list, |
1050 | u8 dead_node) | 1038 | u8 dead_node) |
1051 | { | 1039 | { |
1052 | struct dlm_lock_resource *res; | 1040 | struct dlm_lock_resource *res, *next; |
1053 | struct list_head *iter, *iter2; | ||
1054 | struct dlm_lock *lock; | 1041 | struct dlm_lock *lock; |
1055 | 1042 | ||
1056 | spin_lock(&dlm->spinlock); | 1043 | spin_lock(&dlm->spinlock); |
1057 | list_for_each_safe(iter, iter2, &dlm->reco.resources) { | 1044 | list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { |
1058 | res = list_entry (iter, struct dlm_lock_resource, recovering); | ||
1059 | /* always prune any $RECOVERY entries for dead nodes, | 1045 | /* always prune any $RECOVERY entries for dead nodes, |
1060 | * otherwise hangs can occur during later recovery */ | 1046 | * otherwise hangs can occur during later recovery */ |
1061 | if (dlm_is_recovery_lock(res->lockname.name, | 1047 | if (dlm_is_recovery_lock(res->lockname.name, |
@@ -1252,7 +1238,7 @@ int dlm_send_one_lockres(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, | |||
1252 | struct dlm_migratable_lockres *mres, | 1238 | struct dlm_migratable_lockres *mres, |
1253 | u8 send_to, u8 flags) | 1239 | u8 send_to, u8 flags) |
1254 | { | 1240 | { |
1255 | struct list_head *queue, *iter; | 1241 | struct list_head *queue; |
1256 | int total_locks, i; | 1242 | int total_locks, i; |
1257 | u64 mig_cookie = 0; | 1243 | u64 mig_cookie = 0; |
1258 | struct dlm_lock *lock; | 1244 | struct dlm_lock *lock; |
@@ -1278,9 +1264,7 @@ int dlm_send_one_lockres(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, | |||
1278 | total_locks = 0; | 1264 | total_locks = 0; |
1279 | for (i=DLM_GRANTED_LIST; i<=DLM_BLOCKED_LIST; i++) { | 1265 | for (i=DLM_GRANTED_LIST; i<=DLM_BLOCKED_LIST; i++) { |
1280 | queue = dlm_list_idx_to_ptr(res, i); | 1266 | queue = dlm_list_idx_to_ptr(res, i); |
1281 | list_for_each(iter, queue) { | 1267 | list_for_each_entry(lock, queue, list) { |
1282 | lock = list_entry (iter, struct dlm_lock, list); | ||
1283 | |||
1284 | /* add another lock. */ | 1268 | /* add another lock. */ |
1285 | total_locks++; | 1269 | total_locks++; |
1286 | if (!dlm_add_lock_to_array(lock, mres, i)) | 1270 | if (!dlm_add_lock_to_array(lock, mres, i)) |
@@ -1717,7 +1701,6 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm, | |||
1717 | struct dlm_lockstatus *lksb = NULL; | 1701 | struct dlm_lockstatus *lksb = NULL; |
1718 | int ret = 0; | 1702 | int ret = 0; |
1719 | int i, j, bad; | 1703 | int i, j, bad; |
1720 | struct list_head *iter; | ||
1721 | struct dlm_lock *lock = NULL; | 1704 | struct dlm_lock *lock = NULL; |
1722 | u8 from = O2NM_MAX_NODES; | 1705 | u8 from = O2NM_MAX_NODES; |
1723 | unsigned int added = 0; | 1706 | unsigned int added = 0; |
@@ -1755,8 +1738,7 @@ static int dlm_process_recovery_data(struct dlm_ctxt *dlm, | |||
1755 | spin_lock(&res->spinlock); | 1738 | spin_lock(&res->spinlock); |
1756 | for (j = DLM_GRANTED_LIST; j <= DLM_BLOCKED_LIST; j++) { | 1739 | for (j = DLM_GRANTED_LIST; j <= DLM_BLOCKED_LIST; j++) { |
1757 | tmpq = dlm_list_idx_to_ptr(res, j); | 1740 | tmpq = dlm_list_idx_to_ptr(res, j); |
1758 | list_for_each(iter, tmpq) { | 1741 | list_for_each_entry(lock, tmpq, list) { |
1759 | lock = list_entry (iter, struct dlm_lock, list); | ||
1760 | if (lock->ml.cookie != ml->cookie) | 1742 | if (lock->ml.cookie != ml->cookie) |
1761 | lock = NULL; | 1743 | lock = NULL; |
1762 | else | 1744 | else |
@@ -1930,8 +1912,8 @@ void dlm_move_lockres_to_recovery_list(struct dlm_ctxt *dlm, | |||
1930 | struct dlm_lock_resource *res) | 1912 | struct dlm_lock_resource *res) |
1931 | { | 1913 | { |
1932 | int i; | 1914 | int i; |
1933 | struct list_head *queue, *iter, *iter2; | 1915 | struct list_head *queue; |
1934 | struct dlm_lock *lock; | 1916 | struct dlm_lock *lock, *next; |
1935 | 1917 | ||
1936 | res->state |= DLM_LOCK_RES_RECOVERING; | 1918 | res->state |= DLM_LOCK_RES_RECOVERING; |
1937 | if (!list_empty(&res->recovering)) { | 1919 | if (!list_empty(&res->recovering)) { |
@@ -1947,8 +1929,7 @@ void dlm_move_lockres_to_recovery_list(struct dlm_ctxt *dlm, | |||
1947 | /* find any pending locks and put them back on proper list */ | 1929 | /* find any pending locks and put them back on proper list */ |
1948 | for (i=DLM_BLOCKED_LIST; i>=DLM_GRANTED_LIST; i--) { | 1930 | for (i=DLM_BLOCKED_LIST; i>=DLM_GRANTED_LIST; i--) { |
1949 | queue = dlm_list_idx_to_ptr(res, i); | 1931 | queue = dlm_list_idx_to_ptr(res, i); |
1950 | list_for_each_safe(iter, iter2, queue) { | 1932 | list_for_each_entry_safe(lock, next, queue, list) { |
1951 | lock = list_entry (iter, struct dlm_lock, list); | ||
1952 | dlm_lock_get(lock); | 1933 | dlm_lock_get(lock); |
1953 | if (lock->convert_pending) { | 1934 | if (lock->convert_pending) { |
1954 | /* move converting lock back to granted */ | 1935 | /* move converting lock back to granted */ |
@@ -2013,18 +1994,15 @@ static void dlm_finish_local_lockres_recovery(struct dlm_ctxt *dlm, | |||
2013 | u8 dead_node, u8 new_master) | 1994 | u8 dead_node, u8 new_master) |
2014 | { | 1995 | { |
2015 | int i; | 1996 | int i; |
2016 | struct list_head *iter, *iter2; | ||
2017 | struct hlist_node *hash_iter; | 1997 | struct hlist_node *hash_iter; |
2018 | struct hlist_head *bucket; | 1998 | struct hlist_head *bucket; |
2019 | 1999 | struct dlm_lock_resource *res, *next; | |
2020 | struct dlm_lock_resource *res; | ||
2021 | 2000 | ||
2022 | mlog_entry_void(); | 2001 | mlog_entry_void(); |
2023 | 2002 | ||
2024 | assert_spin_locked(&dlm->spinlock); | 2003 | assert_spin_locked(&dlm->spinlock); |
2025 | 2004 | ||
2026 | list_for_each_safe(iter, iter2, &dlm->reco.resources) { | 2005 | list_for_each_entry_safe(res, next, &dlm->reco.resources, recovering) { |
2027 | res = list_entry (iter, struct dlm_lock_resource, recovering); | ||
2028 | if (res->owner == dead_node) { | 2006 | if (res->owner == dead_node) { |
2029 | list_del_init(&res->recovering); | 2007 | list_del_init(&res->recovering); |
2030 | spin_lock(&res->spinlock); | 2008 | spin_lock(&res->spinlock); |
@@ -2099,7 +2077,7 @@ static inline int dlm_lvb_needs_invalidation(struct dlm_lock *lock, int local) | |||
2099 | static void dlm_revalidate_lvb(struct dlm_ctxt *dlm, | 2077 | static void dlm_revalidate_lvb(struct dlm_ctxt *dlm, |
2100 | struct dlm_lock_resource *res, u8 dead_node) | 2078 | struct dlm_lock_resource *res, u8 dead_node) |
2101 | { | 2079 | { |
2102 | struct list_head *iter, *queue; | 2080 | struct list_head *queue; |
2103 | struct dlm_lock *lock; | 2081 | struct dlm_lock *lock; |
2104 | int blank_lvb = 0, local = 0; | 2082 | int blank_lvb = 0, local = 0; |
2105 | int i; | 2083 | int i; |
@@ -2121,8 +2099,7 @@ static void dlm_revalidate_lvb(struct dlm_ctxt *dlm, | |||
2121 | 2099 | ||
2122 | for (i=DLM_GRANTED_LIST; i<=DLM_CONVERTING_LIST; i++) { | 2100 | for (i=DLM_GRANTED_LIST; i<=DLM_CONVERTING_LIST; i++) { |
2123 | queue = dlm_list_idx_to_ptr(res, i); | 2101 | queue = dlm_list_idx_to_ptr(res, i); |
2124 | list_for_each(iter, queue) { | 2102 | list_for_each_entry(lock, queue, list) { |
2125 | lock = list_entry (iter, struct dlm_lock, list); | ||
2126 | if (lock->ml.node == search_node) { | 2103 | if (lock->ml.node == search_node) { |
2127 | if (dlm_lvb_needs_invalidation(lock, local)) { | 2104 | if (dlm_lvb_needs_invalidation(lock, local)) { |
2128 | /* zero the lksb lvb and lockres lvb */ | 2105 | /* zero the lksb lvb and lockres lvb */ |
@@ -2143,8 +2120,7 @@ static void dlm_revalidate_lvb(struct dlm_ctxt *dlm, | |||
2143 | static void dlm_free_dead_locks(struct dlm_ctxt *dlm, | 2120 | static void dlm_free_dead_locks(struct dlm_ctxt *dlm, |
2144 | struct dlm_lock_resource *res, u8 dead_node) | 2121 | struct dlm_lock_resource *res, u8 dead_node) |
2145 | { | 2122 | { |
2146 | struct list_head *iter, *tmpiter; | 2123 | struct dlm_lock *lock, *next; |
2147 | struct dlm_lock *lock; | ||
2148 | unsigned int freed = 0; | 2124 | unsigned int freed = 0; |
2149 | 2125 | ||
2150 | /* this node is the lockres master: | 2126 | /* this node is the lockres master: |
@@ -2155,24 +2131,21 @@ static void dlm_free_dead_locks(struct dlm_ctxt *dlm, | |||
2155 | assert_spin_locked(&res->spinlock); | 2131 | assert_spin_locked(&res->spinlock); |
2156 | 2132 | ||
2157 | /* TODO: check pending_asts, pending_basts here */ | 2133 | /* TODO: check pending_asts, pending_basts here */ |
2158 | list_for_each_safe(iter, tmpiter, &res->granted) { | 2134 | list_for_each_entry_safe(lock, next, &res->granted, list) { |
2159 | lock = list_entry (iter, struct dlm_lock, list); | ||
2160 | if (lock->ml.node == dead_node) { | 2135 | if (lock->ml.node == dead_node) { |
2161 | list_del_init(&lock->list); | 2136 | list_del_init(&lock->list); |
2162 | dlm_lock_put(lock); | 2137 | dlm_lock_put(lock); |
2163 | freed++; | 2138 | freed++; |
2164 | } | 2139 | } |
2165 | } | 2140 | } |
2166 | list_for_each_safe(iter, tmpiter, &res->converting) { | 2141 | list_for_each_entry_safe(lock, next, &res->converting, list) { |
2167 | lock = list_entry (iter, struct dlm_lock, list); | ||
2168 | if (lock->ml.node == dead_node) { | 2142 | if (lock->ml.node == dead_node) { |
2169 | list_del_init(&lock->list); | 2143 | list_del_init(&lock->list); |
2170 | dlm_lock_put(lock); | 2144 | dlm_lock_put(lock); |
2171 | freed++; | 2145 | freed++; |
2172 | } | 2146 | } |
2173 | } | 2147 | } |
2174 | list_for_each_safe(iter, tmpiter, &res->blocked) { | 2148 | list_for_each_entry_safe(lock, next, &res->blocked, list) { |
2175 | lock = list_entry (iter, struct dlm_lock, list); | ||
2176 | if (lock->ml.node == dead_node) { | 2149 | if (lock->ml.node == dead_node) { |
2177 | list_del_init(&lock->list); | 2150 | list_del_init(&lock->list); |
2178 | dlm_lock_put(lock); | 2151 | dlm_lock_put(lock); |
diff --git a/fs/ocfs2/dlmglue.c b/fs/ocfs2/dlmglue.c index d1bd305ef0d7..f71250ed166f 100644 --- a/fs/ocfs2/dlmglue.c +++ b/fs/ocfs2/dlmglue.c | |||
@@ -600,15 +600,13 @@ static inline int ocfs2_highest_compat_lock_level(int level) | |||
600 | static void lockres_set_flags(struct ocfs2_lock_res *lockres, | 600 | static void lockres_set_flags(struct ocfs2_lock_res *lockres, |
601 | unsigned long newflags) | 601 | unsigned long newflags) |
602 | { | 602 | { |
603 | struct list_head *pos, *tmp; | 603 | struct ocfs2_mask_waiter *mw, *tmp; |
604 | struct ocfs2_mask_waiter *mw; | ||
605 | 604 | ||
606 | assert_spin_locked(&lockres->l_lock); | 605 | assert_spin_locked(&lockres->l_lock); |
607 | 606 | ||
608 | lockres->l_flags = newflags; | 607 | lockres->l_flags = newflags; |
609 | 608 | ||
610 | list_for_each_safe(pos, tmp, &lockres->l_mask_waiters) { | 609 | list_for_each_entry_safe(mw, tmp, &lockres->l_mask_waiters, mw_item) { |
611 | mw = list_entry(pos, struct ocfs2_mask_waiter, mw_item); | ||
612 | if ((lockres->l_flags & mw->mw_mask) != mw->mw_goal) | 610 | if ((lockres->l_flags & mw->mw_mask) != mw->mw_goal) |
613 | continue; | 611 | continue; |
614 | 612 | ||
diff --git a/fs/ocfs2/extent_map.c b/fs/ocfs2/extent_map.c index ba2b2ab1c6e4..e23e416ca74c 100644 --- a/fs/ocfs2/extent_map.c +++ b/fs/ocfs2/extent_map.c | |||
@@ -109,17 +109,14 @@ static int ocfs2_extent_map_lookup(struct inode *inode, unsigned int cpos, | |||
109 | */ | 109 | */ |
110 | void ocfs2_extent_map_trunc(struct inode *inode, unsigned int cpos) | 110 | void ocfs2_extent_map_trunc(struct inode *inode, unsigned int cpos) |
111 | { | 111 | { |
112 | struct list_head *p, *n; | 112 | struct ocfs2_extent_map_item *emi, *n; |
113 | struct ocfs2_extent_map_item *emi; | ||
114 | struct ocfs2_inode_info *oi = OCFS2_I(inode); | 113 | struct ocfs2_inode_info *oi = OCFS2_I(inode); |
115 | struct ocfs2_extent_map *em = &oi->ip_extent_map; | 114 | struct ocfs2_extent_map *em = &oi->ip_extent_map; |
116 | LIST_HEAD(tmp_list); | 115 | LIST_HEAD(tmp_list); |
117 | unsigned int range; | 116 | unsigned int range; |
118 | 117 | ||
119 | spin_lock(&oi->ip_lock); | 118 | spin_lock(&oi->ip_lock); |
120 | list_for_each_safe(p, n, &em->em_list) { | 119 | list_for_each_entry_safe(emi, n, &em->em_list, ei_list) { |
121 | emi = list_entry(p, struct ocfs2_extent_map_item, ei_list); | ||
122 | |||
123 | if (emi->ei_cpos >= cpos) { | 120 | if (emi->ei_cpos >= cpos) { |
124 | /* Full truncate of this record. */ | 121 | /* Full truncate of this record. */ |
125 | list_move(&emi->ei_list, &tmp_list); | 122 | list_move(&emi->ei_list, &tmp_list); |
@@ -136,8 +133,7 @@ void ocfs2_extent_map_trunc(struct inode *inode, unsigned int cpos) | |||
136 | } | 133 | } |
137 | spin_unlock(&oi->ip_lock); | 134 | spin_unlock(&oi->ip_lock); |
138 | 135 | ||
139 | list_for_each_safe(p, n, &tmp_list) { | 136 | list_for_each_entry_safe(emi, n, &tmp_list, ei_list) { |
140 | emi = list_entry(p, struct ocfs2_extent_map_item, ei_list); | ||
141 | list_del(&emi->ei_list); | 137 | list_del(&emi->ei_list); |
142 | kfree(emi); | 138 | kfree(emi); |
143 | } | 139 | } |
diff --git a/fs/ocfs2/journal.c b/fs/ocfs2/journal.c index dc1188081720..dbfb20bb27ea 100644 --- a/fs/ocfs2/journal.c +++ b/fs/ocfs2/journal.c | |||
@@ -722,8 +722,7 @@ void ocfs2_complete_recovery(struct work_struct *work) | |||
722 | container_of(work, struct ocfs2_journal, j_recovery_work); | 722 | container_of(work, struct ocfs2_journal, j_recovery_work); |
723 | struct ocfs2_super *osb = journal->j_osb; | 723 | struct ocfs2_super *osb = journal->j_osb; |
724 | struct ocfs2_dinode *la_dinode, *tl_dinode; | 724 | struct ocfs2_dinode *la_dinode, *tl_dinode; |
725 | struct ocfs2_la_recovery_item *item; | 725 | struct ocfs2_la_recovery_item *item, *n; |
726 | struct list_head *p, *n; | ||
727 | LIST_HEAD(tmp_la_list); | 726 | LIST_HEAD(tmp_la_list); |
728 | 727 | ||
729 | mlog_entry_void(); | 728 | mlog_entry_void(); |
@@ -734,8 +733,7 @@ void ocfs2_complete_recovery(struct work_struct *work) | |||
734 | list_splice_init(&journal->j_la_cleanups, &tmp_la_list); | 733 | list_splice_init(&journal->j_la_cleanups, &tmp_la_list); |
735 | spin_unlock(&journal->j_lock); | 734 | spin_unlock(&journal->j_lock); |
736 | 735 | ||
737 | list_for_each_safe(p, n, &tmp_la_list) { | 736 | list_for_each_entry_safe(item, n, &tmp_la_list, lri_list) { |
738 | item = list_entry(p, struct ocfs2_la_recovery_item, lri_list); | ||
739 | list_del_init(&item->lri_list); | 737 | list_del_init(&item->lri_list); |
740 | 738 | ||
741 | mlog(0, "Complete recovery for slot %d\n", item->lri_slot); | 739 | mlog(0, "Complete recovery for slot %d\n", item->lri_slot); |