dlmrecovery.c (3b3b84a892d37ba336391e411eb5f8b013b9a669) | dlmrecovery.c (3156d267016627fe427a6b0d4ed8a9678557e91e) |
---|---|
1/* -*- mode: c; c-basic-offset: 8; -*- 2 * vim: noexpandtab sw=8 ts=8 sts=0: 3 * 4 * dlmrecovery.c 5 * 6 * recovery stuff 7 * 8 * Copyright (C) 2004 Oracle. All rights reserved. --- 143 unchanged lines hidden (view full) --- 152/* Worker function used during recovery. */ 153void dlm_dispatch_work(void *data) 154{ 155 struct dlm_ctxt *dlm = (struct dlm_ctxt *)data; 156 LIST_HEAD(tmp_list); 157 struct list_head *iter, *iter2; 158 struct dlm_work_item *item; 159 dlm_workfunc_t *workfunc; | 1/* -*- mode: c; c-basic-offset: 8; -*- 2 * vim: noexpandtab sw=8 ts=8 sts=0: 3 * 4 * dlmrecovery.c 5 * 6 * recovery stuff 7 * 8 * Copyright (C) 2004 Oracle. All rights reserved. --- 143 unchanged lines hidden (view full) --- 152/* Worker function used during recovery. */ 153void dlm_dispatch_work(void *data) 154{ 155 struct dlm_ctxt *dlm = (struct dlm_ctxt *)data; 156 LIST_HEAD(tmp_list); 157 struct list_head *iter, *iter2; 158 struct dlm_work_item *item; 159 dlm_workfunc_t *workfunc; |
160 int tot=0; |
|
160 | 161 |
162 if (!dlm_joined(dlm)) 163 return; 164 |
|
161 spin_lock(&dlm->work_lock); 162 list_splice_init(&dlm->work_list, &tmp_list); 163 spin_unlock(&dlm->work_lock); 164 165 list_for_each_safe(iter, iter2, &tmp_list) { | 165 spin_lock(&dlm->work_lock); 166 list_splice_init(&dlm->work_list, &tmp_list); 167 spin_unlock(&dlm->work_lock); 168 169 list_for_each_safe(iter, iter2, &tmp_list) { |
170 tot++; 171 } 172 mlog(0, "%s: work thread has %d work items\n", dlm->name, tot); 173 174 list_for_each_safe(iter, iter2, &tmp_list) { |
|
166 item = list_entry(iter, struct dlm_work_item, list); 167 workfunc = item->func; 168 list_del_init(&item->list); 169 170 /* already have ref on dlm to avoid having 171 * it disappear. just double-check. */ 172 BUG_ON(item->dlm != dlm); 173 --- 672 unchanged lines hidden (view full) --- 846 /* queue up work for dlm_request_all_locks_worker */ 847 dlm_grab(dlm); /* get an extra ref for the work item */ 848 dlm_init_work_item(dlm, item, dlm_request_all_locks_worker, buf); 849 item->u.ral.reco_master = lr->node_idx; 850 item->u.ral.dead_node = lr->dead_node; 851 spin_lock(&dlm->work_lock); 852 list_add_tail(&item->list, &dlm->work_list); 853 spin_unlock(&dlm->work_lock); | 175 item = list_entry(iter, struct dlm_work_item, list); 176 workfunc = item->func; 177 list_del_init(&item->list); 178 179 /* already have ref on dlm to avoid having 180 * it disappear. just double-check. */ 181 BUG_ON(item->dlm != dlm); 182 --- 672 unchanged lines hidden (view full) --- 855 /* queue up work for dlm_request_all_locks_worker */ 856 dlm_grab(dlm); /* get an extra ref for the work item */ 857 dlm_init_work_item(dlm, item, dlm_request_all_locks_worker, buf); 858 item->u.ral.reco_master = lr->node_idx; 859 item->u.ral.dead_node = lr->dead_node; 860 spin_lock(&dlm->work_lock); 861 list_add_tail(&item->list, &dlm->work_list); 862 spin_unlock(&dlm->work_lock); |
854 schedule_work(&dlm->dispatched_work); | 863 queue_work(dlm->dlm_worker, &dlm->dispatched_work); |
855 856 dlm_put(dlm); 857 return 0; 858} 859 860static void dlm_request_all_locks_worker(struct dlm_work_item *item, void *data) 861{ 862 struct dlm_migratable_lockres *mres; --- 533 unchanged lines hidden (view full) --- 1396 dlm_grab(dlm); /* get an extra ref for the work item */ 1397 memcpy(buf, msg->buf, be16_to_cpu(msg->data_len)); /* copy the whole message */ 1398 dlm_init_work_item(dlm, item, dlm_mig_lockres_worker, buf); 1399 item->u.ml.lockres = res; /* already have a ref */ 1400 item->u.ml.real_master = real_master; 1401 spin_lock(&dlm->work_lock); 1402 list_add_tail(&item->list, &dlm->work_list); 1403 spin_unlock(&dlm->work_lock); | 864 865 dlm_put(dlm); 866 return 0; 867} 868 869static void dlm_request_all_locks_worker(struct dlm_work_item *item, void *data) 870{ 871 struct dlm_migratable_lockres *mres; --- 533 unchanged lines hidden (view full) --- 1405 dlm_grab(dlm); /* get an extra ref for the work item */ 1406 memcpy(buf, msg->buf, be16_to_cpu(msg->data_len)); /* copy the whole message */ 1407 dlm_init_work_item(dlm, item, dlm_mig_lockres_worker, buf); 1408 item->u.ml.lockres = res; /* already have a ref */ 1409 item->u.ml.real_master = real_master; 1410 spin_lock(&dlm->work_lock); 1411 list_add_tail(&item->list, &dlm->work_list); 1412 spin_unlock(&dlm->work_lock); |
1404 schedule_work(&dlm->dispatched_work); | 1413 queue_work(dlm->dlm_worker, &dlm->dispatched_work); |
1405 1406leave: 1407 dlm_put(dlm); 1408 if (ret < 0) { 1409 if (buf) 1410 kfree(buf); 1411 if (item) 1412 kfree(item); --- 1253 unchanged lines hidden --- | 1414 1415leave: 1416 dlm_put(dlm); 1417 if (ret < 0) { 1418 if (buf) 1419 kfree(buf); 1420 if (item) 1421 kfree(item); --- 1253 unchanged lines hidden --- |