• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/fs/ocfs2/

Lines Matching refs:osb

120 static void ocfs2_process_mount_request(struct ocfs2_super *osb,
127 ocfs2_recovery_map_clear(osb, node_num);
128 ocfs2_node_map_set_bit(osb, &osb->mounted_map, node_num);
133 ocfs2_node_map_clear_bit(osb, &osb->umount_map, node_num);
136 static void ocfs2_process_umount_request(struct ocfs2_super *osb,
140 ocfs2_node_map_clear_bit(osb, &osb->mounted_map, node_num);
141 ocfs2_node_map_set_bit(osb, &osb->umount_map, node_num);
144 static void ocfs2_process_vote(struct ocfs2_super *osb,
173 ocfs2_process_umount_request(osb, node_num);
176 ocfs2_process_mount_request(osb, node_num);
190 response.r_hdr.h_node_num = cpu_to_be32(osb->node_num);
194 osb->net_key,
209 static void ocfs2_vote_thread_do_work(struct ocfs2_super *osb)
217 spin_lock(&osb->vote_task_lock);
220 osb->vote_work_sequence = osb->vote_wake_sequence;
222 processed = osb->blocked_lock_count;
224 BUG_ON(list_empty(&osb->blocked_lock_list));
226 lockres = list_entry(osb->blocked_lock_list.next,
229 osb->blocked_lock_count--;
230 spin_unlock(&osb->vote_task_lock);
235 ocfs2_process_blocked_lock(osb, lockres);
237 spin_lock(&osb->vote_task_lock);
240 while (osb->vote_count) {
241 BUG_ON(list_empty(&osb->vote_list));
242 work = list_entry(osb->vote_list.next,
245 osb->vote_count--;
246 spin_unlock(&osb->vote_task_lock);
248 ocfs2_process_vote(osb, &work->w_msg);
251 spin_lock(&osb->vote_task_lock);
253 spin_unlock(&osb->vote_task_lock);
258 static int ocfs2_vote_thread_lists_empty(struct ocfs2_super *osb)
262 spin_lock(&osb->vote_task_lock);
263 if (list_empty(&osb->blocked_lock_list) &&
264 list_empty(&osb->vote_list))
267 spin_unlock(&osb->vote_task_lock);
271 static int ocfs2_vote_thread_should_wake(struct ocfs2_super *osb)
275 spin_lock(&osb->vote_task_lock);
276 if (osb->vote_work_sequence != osb->vote_wake_sequence)
278 spin_unlock(&osb->vote_task_lock);
286 struct ocfs2_super *osb = arg;
291 ocfs2_vote_thread_lists_empty(osb))) {
293 wait_event_interruptible(osb->vote_event,
294 ocfs2_vote_thread_should_wake(osb) ||
299 ocfs2_vote_thread_do_work(osb);
302 osb->vote_task = NULL;
325 static unsigned int ocfs2_new_response_id(struct ocfs2_super *osb)
329 spin_lock(&osb->net_response_lock);
330 ret = ++osb->net_response_ids;
331 spin_unlock(&osb->net_response_lock);
336 static void ocfs2_dequeue_net_wait_ctxt(struct ocfs2_super *osb,
339 spin_lock(&osb->net_response_lock);
341 spin_unlock(&osb->net_response_lock);
344 static void ocfs2_queue_net_wait_ctxt(struct ocfs2_super *osb,
347 spin_lock(&osb->net_response_lock);
349 &osb->net_response_list);
350 spin_unlock(&osb->net_response_lock);
353 static void __ocfs2_mark_node_responded(struct ocfs2_super *osb,
357 assert_spin_locked(&osb->net_response_lock);
359 ocfs2_node_map_clear_bit(osb, &w->n_node_map, node_num);
360 if (ocfs2_node_map_is_empty(osb, &w->n_node_map))
366 void ocfs2_remove_node_from_vote_queues(struct ocfs2_super *osb,
372 spin_lock(&osb->net_response_lock);
374 list_for_each(p, &osb->net_response_list) {
377 __ocfs2_mark_node_responded(osb, w, node_num);
380 spin_unlock(&osb->net_response_lock);
383 static int ocfs2_broadcast_vote(struct ocfs2_super *osb,
405 ocfs2_queue_net_wait_ctxt(osb, w);
407 i = ocfs2_node_map_iterate(osb, &osb->mounted_map, 0);
410 if (i != osb->node_num) {
412 ocfs2_node_map_set_bit(osb, &w->n_node_map, i);
416 osb->net_key,
439 i = ocfs2_node_map_iterate(osb, &osb->mounted_map, i);
440 mlog(0, "next is %d, i am %d\n", i, osb->node_num);
444 wait_event(w->n_event, ocfs2_node_map_is_empty(osb, &w->n_node_map));
446 ocfs2_dequeue_net_wait_ctxt(osb, w);
454 ocfs2_dequeue_net_wait_ctxt(osb, w);
462 static struct ocfs2_vote_msg * ocfs2_new_vote_request(struct ocfs2_super *osb,
477 hdr->h_node_num = cpu_to_be32(osb->node_num);
488 static int ocfs2_do_request_vote(struct ocfs2_super *osb,
496 response_id = ocfs2_new_response_id(osb);
501 status = ocfs2_broadcast_vote(osb, request, response_id, &response,
514 int ocfs2_request_mount_vote(struct ocfs2_super *osb)
519 request = ocfs2_new_vote_request(osb, 0ULL, 0, OCFS2_VOTE_REQ_MOUNT);
527 if (!(osb->s_mount_opt & OCFS2_MOUNT_NOINTR) &&
533 if (ocfs2_node_map_is_only(osb, &osb->mounted_map,
534 osb->node_num)) {
539 status = ocfs2_do_request_vote(osb, request, NULL);
547 int ocfs2_request_umount_vote(struct ocfs2_super *osb)
552 request = ocfs2_new_vote_request(osb, 0ULL, 0, OCFS2_VOTE_REQ_UMOUNT);
563 if (ocfs2_node_map_is_only(osb, &osb->mounted_map,
564 osb->node_num)) {
569 status = ocfs2_do_request_vote(osb, request, NULL);
578 static struct ocfs2_net_wait_ctxt * __ocfs2_find_net_wait_ctxt(struct ocfs2_super *osb,
584 list_for_each(p, &osb->net_response_list) {
621 struct ocfs2_super *osb = data;
642 spin_lock(&osb->net_response_lock);
643 w = __ocfs2_find_net_wait_ctxt(osb, response_id);
657 spin_unlock(&osb->net_response_lock);
661 spin_lock(&osb->net_response_lock);
664 __ocfs2_mark_node_responded(osb, w, node_num);
666 spin_unlock(&osb->net_response_lock);
676 struct ocfs2_super *osb = data;
700 spin_lock(&osb->vote_task_lock);
701 list_add_tail(&work->w_list, &osb->vote_list);
702 osb->vote_count++;
703 spin_unlock(&osb->vote_task_lock);
705 ocfs2_kick_vote_thread(osb);
712 void ocfs2_unregister_net_handlers(struct ocfs2_super *osb)
714 if (!osb->net_key)
717 o2net_unregister_handler_list(&osb->osb_net_handlers);
719 if (!list_empty(&osb->net_response_list))
722 osb->net_key = 0;
725 int ocfs2_register_net_handlers(struct ocfs2_super *osb)
729 if (ocfs2_mount_local(osb))
733 osb->net_key,
736 osb, NULL, &osb->osb_net_handlers);
743 osb->net_key,
746 osb, NULL, &osb->osb_net_handlers);
753 ocfs2_unregister_net_handlers(osb);