dlmdomain.c (685f1adb3872d904e08e22fab699f34432d5068a) dlmdomain.c (3156d267016627fe427a6b0d4ed8a9678557e91e)
1/* -*- mode: c; c-basic-offset: 8; -*-
2 * vim: noexpandtab sw=8 ts=8 sts=0:
3 *
4 * dlmdomain.c
5 *
6 * defines domain join / leave apis
7 *
8 * Copyright (C) 2004 Oracle. All rights reserved.

--- 289 unchanged lines hidden (view full) ---

298 spin_lock(&dlm_domain_lock);
299 ret = (dlm->dlm_state == DLM_CTXT_JOINED) ||
300 (dlm->dlm_state == DLM_CTXT_IN_SHUTDOWN);
301 spin_unlock(&dlm_domain_lock);
302
303 return ret;
304}
305
1/* -*- mode: c; c-basic-offset: 8; -*-
2 * vim: noexpandtab sw=8 ts=8 sts=0:
3 *
4 * dlmdomain.c
5 *
6 * defines domain join / leave apis
7 *
8 * Copyright (C) 2004 Oracle. All rights reserved.

--- 289 unchanged lines hidden (view full) ---

298 spin_lock(&dlm_domain_lock);
299 ret = (dlm->dlm_state == DLM_CTXT_JOINED) ||
300 (dlm->dlm_state == DLM_CTXT_IN_SHUTDOWN);
301 spin_unlock(&dlm_domain_lock);
302
303 return ret;
304}
305
306static void dlm_destroy_dlm_worker(struct dlm_ctxt *dlm)
307{
308 if (dlm->dlm_worker) {
309 flush_workqueue(dlm->dlm_worker);
310 destroy_workqueue(dlm->dlm_worker);
311 dlm->dlm_worker = NULL;
312 }
313}
314
306static void dlm_complete_dlm_shutdown(struct dlm_ctxt *dlm)
307{
308 dlm_unregister_domain_handlers(dlm);
309 dlm_complete_thread(dlm);
310 dlm_complete_recovery_thread(dlm);
315static void dlm_complete_dlm_shutdown(struct dlm_ctxt *dlm)
316{
317 dlm_unregister_domain_handlers(dlm);
318 dlm_complete_thread(dlm);
319 dlm_complete_recovery_thread(dlm);
320 dlm_destroy_dlm_worker(dlm);
311
312 /* We've left the domain. Now we can take ourselves out of the
313 * list and allow the kref stuff to help us free the
314 * memory. */
315 spin_lock(&dlm_domain_lock);
316 list_del_init(&dlm->list);
317 spin_unlock(&dlm_domain_lock);
318

--- 827 unchanged lines hidden (view full) ---

1146 }
1147
1148 status = dlm_launch_recovery_thread(dlm);
1149 if (status < 0) {
1150 mlog_errno(status);
1151 goto bail;
1152 }
1153
321
322 /* We've left the domain. Now we can take ourselves out of the
323 * list and allow the kref stuff to help us free the
324 * memory. */
325 spin_lock(&dlm_domain_lock);
326 list_del_init(&dlm->list);
327 spin_unlock(&dlm_domain_lock);
328

--- 827 unchanged lines hidden (view full) ---

1156 }
1157
1158 status = dlm_launch_recovery_thread(dlm);
1159 if (status < 0) {
1160 mlog_errno(status);
1161 goto bail;
1162 }
1163
1164 dlm->dlm_worker = create_singlethread_workqueue("dlm_wq");
1165 if (!dlm->dlm_worker) {
1166 status = -ENOMEM;
1167 mlog_errno(status);
1168 goto bail;
1169 }
1170
1154 do {
1155 unsigned int backoff;
1156 status = dlm_try_to_join_domain(dlm);
1157
1158 /* If we're racing another node to the join, then we
1159 * need to back off temporarily and let them
1160 * complete. */
1161 if (status == -EAGAIN) {

--- 24 unchanged lines hidden (view full) ---

1186 status = 0;
1187bail:
1188 wake_up(&dlm_domain_events);
1189
1190 if (status) {
1191 dlm_unregister_domain_handlers(dlm);
1192 dlm_complete_thread(dlm);
1193 dlm_complete_recovery_thread(dlm);
1171 do {
1172 unsigned int backoff;
1173 status = dlm_try_to_join_domain(dlm);
1174
1175 /* If we're racing another node to the join, then we
1176 * need to back off temporarily and let them
1177 * complete. */
1178 if (status == -EAGAIN) {

--- 24 unchanged lines hidden (view full) ---

1203 status = 0;
1204bail:
1205 wake_up(&dlm_domain_events);
1206
1207 if (status) {
1208 dlm_unregister_domain_handlers(dlm);
1209 dlm_complete_thread(dlm);
1210 dlm_complete_recovery_thread(dlm);
1211 dlm_destroy_dlm_worker(dlm);
1194 }
1195
1196 return status;
1197}
1198
1199static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
1200 u32 key)
1201{

--- 49 unchanged lines hidden (view full) ---

1251 dlm->recovery_map, &(dlm->recovery_map[0]));
1252
1253 memset(dlm->recovery_map, 0, sizeof(dlm->recovery_map));
1254 memset(dlm->live_nodes_map, 0, sizeof(dlm->live_nodes_map));
1255 memset(dlm->domain_map, 0, sizeof(dlm->domain_map));
1256
1257 dlm->dlm_thread_task = NULL;
1258 dlm->dlm_reco_thread_task = NULL;
1212 }
1213
1214 return status;
1215}
1216
1217static struct dlm_ctxt *dlm_alloc_ctxt(const char *domain,
1218 u32 key)
1219{

--- 49 unchanged lines hidden (view full) ---

1269 dlm->recovery_map, &(dlm->recovery_map[0]));
1270
1271 memset(dlm->recovery_map, 0, sizeof(dlm->recovery_map));
1272 memset(dlm->live_nodes_map, 0, sizeof(dlm->live_nodes_map));
1273 memset(dlm->domain_map, 0, sizeof(dlm->domain_map));
1274
1275 dlm->dlm_thread_task = NULL;
1276 dlm->dlm_reco_thread_task = NULL;
1277 dlm->dlm_worker = NULL;
1259 init_waitqueue_head(&dlm->dlm_thread_wq);
1260 init_waitqueue_head(&dlm->dlm_reco_thread_wq);
1261 init_waitqueue_head(&dlm->reco.event);
1262 init_waitqueue_head(&dlm->ast_wq);
1263 init_waitqueue_head(&dlm->migration_wq);
1264 INIT_LIST_HEAD(&dlm->master_list);
1265 INIT_LIST_HEAD(&dlm->mle_hb_events);
1266

--- 243 unchanged lines hidden ---
1278 init_waitqueue_head(&dlm->dlm_thread_wq);
1279 init_waitqueue_head(&dlm->dlm_reco_thread_wq);
1280 init_waitqueue_head(&dlm->reco.event);
1281 init_waitqueue_head(&dlm->ast_wq);
1282 init_waitqueue_head(&dlm->migration_wq);
1283 INIT_LIST_HEAD(&dlm->master_list);
1284 INIT_LIST_HEAD(&dlm->mle_hb_events);
1285

--- 243 unchanged lines hidden ---