Lines Matching refs:cinfo

121 	struct md_cluster_info *cinfo = mddev->cluster_info;  in lockres_init()  local
126 res->ls = cinfo->lockspace; in lockres_init()
225 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_bitmaps() local
232 while (cinfo->recovery_map) { in recover_bitmaps()
233 slot = fls64((u64)cinfo->recovery_map) - 1; in recover_bitmaps()
236 spin_lock_irq(&cinfo->suspend_lock); in recover_bitmaps()
237 list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list) in recover_bitmaps()
242 spin_unlock_irq(&cinfo->suspend_lock); in recover_bitmaps()
272 clear_bit(slot, &cinfo->recovery_map); in recover_bitmaps()
283 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_slot() local
288 cinfo->slot_number); in recover_slot()
289 set_bit(slot->slot - 1, &cinfo->recovery_map); in recover_slot()
290 if (!cinfo->recovery_thread) { in recover_slot()
291 cinfo->recovery_thread = md_register_thread(recover_bitmaps, in recover_slot()
293 if (!cinfo->recovery_thread) { in recover_slot()
298 md_wakeup_thread(cinfo->recovery_thread); in recover_slot()
306 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_done() local
308 cinfo->slot_number = our_slot; in recover_done()
309 complete(&cinfo->completion); in recover_done()
326 struct md_cluster_info *cinfo = res->mddev->cluster_info; in ack_bast() local
329 md_wakeup_thread(cinfo->recv_thread); in ack_bast()
332 static void __remove_suspend_info(struct md_cluster_info *cinfo, int slot) in __remove_suspend_info() argument
336 list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list) in __remove_suspend_info()
346 static void remove_suspend_info(struct md_cluster_info *cinfo, int slot) in remove_suspend_info() argument
348 spin_lock_irq(&cinfo->suspend_lock); in remove_suspend_info()
349 __remove_suspend_info(cinfo, slot); in remove_suspend_info()
350 spin_unlock_irq(&cinfo->suspend_lock); in remove_suspend_info()
354 static void process_suspend_info(struct md_cluster_info *cinfo, in process_suspend_info() argument
360 remove_suspend_info(cinfo, slot); in process_suspend_info()
369 spin_lock_irq(&cinfo->suspend_lock); in process_suspend_info()
371 __remove_suspend_info(cinfo, slot); in process_suspend_info()
372 list_add(&s->list, &cinfo->suspend_list); in process_suspend_info()
373 spin_unlock_irq(&cinfo->suspend_lock); in process_suspend_info()
379 struct md_cluster_info *cinfo = mddev->cluster_info; in process_add_new_disk() local
389 init_completion(&cinfo->newdisk_completion); in process_add_new_disk()
390 set_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state); in process_add_new_disk()
392 wait_for_completion_timeout(&cinfo->newdisk_completion, in process_add_new_disk()
394 clear_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state); in process_add_new_disk()
400 struct md_cluster_info *cinfo = mddev->cluster_info; in process_metadata_update() local
403 dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR); in process_metadata_update()
466 struct md_cluster_info *cinfo = thread->mddev->cluster_info; in recv_daemon() local
467 struct dlm_lock_resource *ack_lockres = cinfo->ack_lockres; in recv_daemon()
468 struct dlm_lock_resource *message_lockres = cinfo->message_lockres; in recv_daemon()
495 static int lock_comm(struct md_cluster_info *cinfo) in lock_comm() argument
499 error = dlm_lock_sync(cinfo->token_lockres, DLM_LOCK_EX); in lock_comm()
506 static void unlock_comm(struct md_cluster_info *cinfo) in unlock_comm() argument
508 dlm_unlock_sync(cinfo->token_lockres); in unlock_comm()
523 static int __sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg) in __sendmsg() argument
526 int slot = cinfo->slot_number - 1; in __sendmsg()
530 error = dlm_lock_sync(cinfo->message_lockres, DLM_LOCK_EX); in __sendmsg()
536 memcpy(cinfo->message_lockres->lksb.sb_lvbptr, (void *)cmsg, in __sendmsg()
539 error = dlm_lock_sync(cinfo->message_lockres, DLM_LOCK_CR); in __sendmsg()
547 error = dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_EX); in __sendmsg()
555 error = dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_CR); in __sendmsg()
563 dlm_unlock_sync(cinfo->message_lockres); in __sendmsg()
568 static int sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg) in sendmsg() argument
572 lock_comm(cinfo); in sendmsg()
573 ret = __sendmsg(cinfo, cmsg); in sendmsg()
574 unlock_comm(cinfo); in sendmsg()
580 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_all_resync_info() local
593 if (i == (cinfo->slot_number - 1)) in gather_all_resync_info()
606 spin_lock_irq(&cinfo->suspend_lock); in gather_all_resync_info()
608 list_add(&s->list, &cinfo->suspend_list); in gather_all_resync_info()
609 spin_unlock_irq(&cinfo->suspend_lock); in gather_all_resync_info()
627 struct md_cluster_info *cinfo; in join() local
634 cinfo = kzalloc(sizeof(struct md_cluster_info), GFP_KERNEL); in join()
635 if (!cinfo) in join()
638 init_completion(&cinfo->completion); in join()
640 mutex_init(&cinfo->sb_mutex); in join()
641 mddev->cluster_info = cinfo; in join()
647 &md_ls_ops, mddev, &ops_rv, &cinfo->lockspace); in join()
650 wait_for_completion(&cinfo->completion); in join()
651 if (nodes < cinfo->slot_number) { in join()
653 cinfo->slot_number, nodes); in join()
657 cinfo->sb_lock = lockres_init(mddev, "cmd-super", in join()
659 if (!cinfo->sb_lock) { in join()
665 cinfo->recv_thread = md_register_thread(recv_daemon, mddev, "cluster_recv"); in join()
666 if (!cinfo->recv_thread) { in join()
670 cinfo->message_lockres = lockres_init(mddev, "message", NULL, 1); in join()
671 if (!cinfo->message_lockres) in join()
673 cinfo->token_lockres = lockres_init(mddev, "token", NULL, 0); in join()
674 if (!cinfo->token_lockres) in join()
676 cinfo->ack_lockres = lockres_init(mddev, "ack", ack_bast, 0); in join()
677 if (!cinfo->ack_lockres) in join()
679 cinfo->no_new_dev_lockres = lockres_init(mddev, "no-new-dev", NULL, 0); in join()
680 if (!cinfo->no_new_dev_lockres) in join()
684 if (dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_CR)) in join()
688 if (dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR)) in join()
692 pr_info("md-cluster: Joined cluster %s slot %d\n", str, cinfo->slot_number); in join()
693 snprintf(str, 64, "bitmap%04d", cinfo->slot_number - 1); in join()
694 cinfo->bitmap_lockres = lockres_init(mddev, str, NULL, 1); in join()
695 if (!cinfo->bitmap_lockres) in join()
697 if (dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW)) { in join()
703 INIT_LIST_HEAD(&cinfo->suspend_list); in join()
704 spin_lock_init(&cinfo->suspend_lock); in join()
712 lockres_free(cinfo->message_lockres); in join()
713 lockres_free(cinfo->token_lockres); in join()
714 lockres_free(cinfo->ack_lockres); in join()
715 lockres_free(cinfo->no_new_dev_lockres); in join()
716 lockres_free(cinfo->bitmap_lockres); in join()
717 lockres_free(cinfo->sb_lock); in join()
718 if (cinfo->lockspace) in join()
719 dlm_release_lockspace(cinfo->lockspace, 2); in join()
721 kfree(cinfo); in join()
728 struct md_cluster_info *cinfo = mddev->cluster_info; in leave() local
730 if (!cinfo) in leave()
732 md_unregister_thread(&cinfo->recovery_thread); in leave()
733 md_unregister_thread(&cinfo->recv_thread); in leave()
734 lockres_free(cinfo->message_lockres); in leave()
735 lockres_free(cinfo->token_lockres); in leave()
736 lockres_free(cinfo->ack_lockres); in leave()
737 lockres_free(cinfo->no_new_dev_lockres); in leave()
738 lockres_free(cinfo->sb_lock); in leave()
739 lockres_free(cinfo->bitmap_lockres); in leave()
740 dlm_release_lockspace(cinfo->lockspace, 2); in leave()
750 struct md_cluster_info *cinfo = mddev->cluster_info; in slot_number() local
752 return cinfo->slot_number - 1; in slot_number()
757 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_info_update() local
759 add_resync_info(mddev, cinfo->bitmap_lockres, lo, hi); in resync_info_update()
761 dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW); in resync_info_update()
771 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_finish() local
777 ret = __sendmsg(cinfo, &cmsg); in metadata_update_finish()
778 unlock_comm(cinfo); in metadata_update_finish()
784 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_cancel() local
786 return dlm_unlock_sync(cinfo->token_lockres); in metadata_update_cancel()
792 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_send() local
794 int slot = cinfo->slot_number - 1; in resync_send()
804 return sendmsg(cinfo, &cmsg); in resync_send()
821 struct md_cluster_info *cinfo = mddev->cluster_info; in area_resyncing() local
825 spin_lock_irq(&cinfo->suspend_lock); in area_resyncing()
826 if (list_empty(&cinfo->suspend_list)) in area_resyncing()
828 list_for_each_entry(s, &cinfo->suspend_list, list) in area_resyncing()
834 spin_unlock_irq(&cinfo->suspend_lock); in area_resyncing()
840 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk_start() local
850 lock_comm(cinfo); in add_new_disk_start()
851 ret = __sendmsg(cinfo, &cmsg); in add_new_disk_start()
854 cinfo->no_new_dev_lockres->flags |= DLM_LKF_NOQUEUE; in add_new_disk_start()
855 ret = dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_EX); in add_new_disk_start()
856 cinfo->no_new_dev_lockres->flags &= ~DLM_LKF_NOQUEUE; in add_new_disk_start()
861 dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR); in add_new_disk_start()
868 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk_finish() local
873 ret = __sendmsg(cinfo, &cmsg); in add_new_disk_finish()
874 unlock_comm(cinfo); in add_new_disk_finish()
880 struct md_cluster_info *cinfo = mddev->cluster_info; in new_disk_ack() local
882 if (!test_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state)) { in new_disk_ack()
888 dlm_unlock_sync(cinfo->no_new_dev_lockres); in new_disk_ack()
889 complete(&cinfo->newdisk_completion); in new_disk_ack()
896 struct md_cluster_info *cinfo = mddev->cluster_info; in remove_disk() local
899 return __sendmsg(cinfo, &cmsg); in remove_disk()
908 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_bitmaps() local
912 err = sendmsg(cinfo, &cmsg); in gather_bitmaps()
917 if (sn == (cinfo->slot_number - 1)) in gather_bitmaps()