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 --- |