Lines Matching refs:cinfo

125 	struct md_cluster_info *cinfo = mddev->cluster_info;  in lockres_init()  local
131 res->ls = cinfo->lockspace; in lockres_init()
232 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_bitmaps() local
239 while (cinfo->recovery_map) { in recover_bitmaps()
240 slot = fls64((u64)cinfo->recovery_map) - 1; in recover_bitmaps()
243 spin_lock_irq(&cinfo->suspend_lock); in recover_bitmaps()
244 list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list) in recover_bitmaps()
249 spin_unlock_irq(&cinfo->suspend_lock); in recover_bitmaps()
279 clear_bit(slot, &cinfo->recovery_map); in recover_bitmaps()
286 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_prep() local
287 set_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state); in recover_prep()
292 struct md_cluster_info *cinfo = mddev->cluster_info; in __recover_slot() local
294 set_bit(slot, &cinfo->recovery_map); in __recover_slot()
295 if (!cinfo->recovery_thread) { in __recover_slot()
296 cinfo->recovery_thread = md_register_thread(recover_bitmaps, in __recover_slot()
298 if (!cinfo->recovery_thread) { in __recover_slot()
303 md_wakeup_thread(cinfo->recovery_thread); in __recover_slot()
309 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_slot() local
314 cinfo->slot_number); in recover_slot()
325 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_done() local
327 cinfo->slot_number = our_slot; in recover_done()
330 if (test_bit(MD_CLUSTER_BEGIN_JOIN_CLUSTER, &cinfo->state)) { in recover_done()
331 complete(&cinfo->completion); in recover_done()
332 clear_bit(MD_CLUSTER_BEGIN_JOIN_CLUSTER, &cinfo->state); in recover_done()
334 clear_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state); in recover_done()
353 struct md_cluster_info *cinfo = res->mddev->cluster_info; in ack_bast() local
356 md_wakeup_thread(cinfo->recv_thread); in ack_bast()
359 static void __remove_suspend_info(struct md_cluster_info *cinfo, int slot) in __remove_suspend_info() argument
363 list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list) in __remove_suspend_info()
373 struct md_cluster_info *cinfo = mddev->cluster_info; in remove_suspend_info() local
374 spin_lock_irq(&cinfo->suspend_lock); in remove_suspend_info()
375 __remove_suspend_info(cinfo, slot); in remove_suspend_info()
376 spin_unlock_irq(&cinfo->suspend_lock); in remove_suspend_info()
384 struct md_cluster_info *cinfo = mddev->cluster_info; in process_suspend_info() local
401 spin_lock_irq(&cinfo->suspend_lock); in process_suspend_info()
403 __remove_suspend_info(cinfo, slot); in process_suspend_info()
404 list_add(&s->list, &cinfo->suspend_list); in process_suspend_info()
405 spin_unlock_irq(&cinfo->suspend_lock); in process_suspend_info()
412 struct md_cluster_info *cinfo = mddev->cluster_info; in process_add_new_disk() local
422 init_completion(&cinfo->newdisk_completion); in process_add_new_disk()
423 set_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state); in process_add_new_disk()
425 wait_for_completion_timeout(&cinfo->newdisk_completion, in process_add_new_disk()
427 clear_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state); in process_add_new_disk()
433 struct md_cluster_info *cinfo = mddev->cluster_info; in process_metadata_update() local
435 dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR); in process_metadata_update()
499 struct md_cluster_info *cinfo = thread->mddev->cluster_info; in recv_daemon() local
500 struct dlm_lock_resource *ack_lockres = cinfo->ack_lockres; in recv_daemon()
501 struct dlm_lock_resource *message_lockres = cinfo->message_lockres; in recv_daemon()
540 static int lock_comm(struct md_cluster_info *cinfo) in lock_comm() argument
544 if (cinfo->token_lockres->mode == DLM_LOCK_EX) in lock_comm()
547 error = dlm_lock_sync(cinfo->token_lockres, DLM_LOCK_EX); in lock_comm()
554 static void unlock_comm(struct md_cluster_info *cinfo) in unlock_comm() argument
556 WARN_ON(cinfo->token_lockres->mode != DLM_LOCK_EX); in unlock_comm()
557 dlm_unlock_sync(cinfo->token_lockres); in unlock_comm()
572 static int __sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg) in __sendmsg() argument
575 int slot = cinfo->slot_number - 1; in __sendmsg()
579 error = dlm_lock_sync(cinfo->message_lockres, DLM_LOCK_EX); in __sendmsg()
585 memcpy(cinfo->message_lockres->lksb.sb_lvbptr, (void *)cmsg, in __sendmsg()
588 error = dlm_lock_sync(cinfo->message_lockres, DLM_LOCK_CW); in __sendmsg()
596 error = dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_EX); in __sendmsg()
604 error = dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_CR); in __sendmsg()
612 error = dlm_unlock_sync(cinfo->message_lockres); in __sendmsg()
623 static int sendmsg(struct md_cluster_info *cinfo, struct cluster_msg *cmsg) in sendmsg() argument
627 lock_comm(cinfo); in sendmsg()
628 ret = __sendmsg(cinfo, cmsg); in sendmsg()
629 unlock_comm(cinfo); in sendmsg()
635 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_all_resync_info() local
649 if (i == (cinfo->slot_number - 1)) in gather_all_resync_info()
662 spin_lock_irq(&cinfo->suspend_lock); in gather_all_resync_info()
664 list_add(&s->list, &cinfo->suspend_list); in gather_all_resync_info()
665 spin_unlock_irq(&cinfo->suspend_lock); in gather_all_resync_info()
698 struct md_cluster_info *cinfo; in join() local
702 cinfo = kzalloc(sizeof(struct md_cluster_info), GFP_KERNEL); in join()
703 if (!cinfo) in join()
706 INIT_LIST_HEAD(&cinfo->suspend_list); in join()
707 spin_lock_init(&cinfo->suspend_lock); in join()
708 init_completion(&cinfo->completion); in join()
709 set_bit(MD_CLUSTER_BEGIN_JOIN_CLUSTER, &cinfo->state); in join()
711 mddev->cluster_info = cinfo; in join()
717 &md_ls_ops, mddev, &ops_rv, &cinfo->lockspace); in join()
720 wait_for_completion(&cinfo->completion); in join()
721 if (nodes < cinfo->slot_number) { in join()
723 cinfo->slot_number, nodes); in join()
729 cinfo->recv_thread = md_register_thread(recv_daemon, mddev, "cluster_recv"); in join()
730 if (!cinfo->recv_thread) { in join()
734 cinfo->message_lockres = lockres_init(mddev, "message", NULL, 1); in join()
735 if (!cinfo->message_lockres) in join()
737 cinfo->token_lockres = lockres_init(mddev, "token", NULL, 0); in join()
738 if (!cinfo->token_lockres) in join()
740 cinfo->ack_lockres = lockres_init(mddev, "ack", ack_bast, 0); in join()
741 if (!cinfo->ack_lockres) in join()
743 cinfo->no_new_dev_lockres = lockres_init(mddev, "no-new-dev", NULL, 0); in join()
744 if (!cinfo->no_new_dev_lockres) in join()
748 if (dlm_lock_sync(cinfo->ack_lockres, DLM_LOCK_CR)) in join()
752 if (dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR)) in join()
756 pr_info("md-cluster: Joined cluster %s slot %d\n", str, cinfo->slot_number); in join()
757 snprintf(str, 64, "bitmap%04d", cinfo->slot_number - 1); in join()
758 cinfo->bitmap_lockres = lockres_init(mddev, str, NULL, 1); in join()
759 if (!cinfo->bitmap_lockres) in join()
761 if (dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW)) { in join()
767 cinfo->resync_lockres = lockres_init(mddev, "resync", NULL, 0); in join()
768 if (!cinfo->resync_lockres) in join()
777 lockres_free(cinfo->message_lockres); in join()
778 lockres_free(cinfo->token_lockres); in join()
779 lockres_free(cinfo->ack_lockres); in join()
780 lockres_free(cinfo->no_new_dev_lockres); in join()
781 lockres_free(cinfo->resync_lockres); in join()
782 lockres_free(cinfo->bitmap_lockres); in join()
783 if (cinfo->lockspace) in join()
784 dlm_release_lockspace(cinfo->lockspace, 2); in join()
786 kfree(cinfo); in join()
792 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_bitmap() local
797 err = sendmsg(cinfo, &cmsg); in resync_bitmap()
805 struct md_cluster_info *cinfo = mddev->cluster_info; in leave() local
807 if (!cinfo) in leave()
813 if (cinfo->slot_number > 0 && mddev->recovery_cp != MaxSector) in leave()
816 md_unregister_thread(&cinfo->recovery_thread); in leave()
817 md_unregister_thread(&cinfo->recv_thread); in leave()
818 lockres_free(cinfo->message_lockres); in leave()
819 lockres_free(cinfo->token_lockres); in leave()
820 lockres_free(cinfo->ack_lockres); in leave()
821 lockres_free(cinfo->no_new_dev_lockres); in leave()
822 lockres_free(cinfo->bitmap_lockres); in leave()
823 dlm_release_lockspace(cinfo->lockspace, 2); in leave()
833 struct md_cluster_info *cinfo = mddev->cluster_info; in slot_number() local
835 return cinfo->slot_number - 1; in slot_number()
845 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_finish() local
862 ret = __sendmsg(cinfo, &cmsg); in metadata_update_finish()
865 unlock_comm(cinfo); in metadata_update_finish()
871 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_cancel() local
872 unlock_comm(cinfo); in metadata_update_cancel()
877 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_start() local
878 cinfo->resync_lockres->flags |= DLM_LKF_NOQUEUE; in resync_start()
879 return dlm_lock_sync(cinfo->resync_lockres, DLM_LOCK_EX); in resync_start()
884 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_info_update() local
887 add_resync_info(cinfo->bitmap_lockres, lo, hi); in resync_info_update()
889 dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW); in resync_info_update()
894 return sendmsg(cinfo, &cmsg); in resync_info_update()
899 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_finish() local
900 cinfo->resync_lockres->flags &= ~DLM_LKF_NOQUEUE; in resync_finish()
901 dlm_unlock_sync(cinfo->resync_lockres); in resync_finish()
908 struct md_cluster_info *cinfo = mddev->cluster_info; in area_resyncing() local
913 test_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state)) in area_resyncing()
916 spin_lock_irq(&cinfo->suspend_lock); in area_resyncing()
917 if (list_empty(&cinfo->suspend_list)) in area_resyncing()
919 list_for_each_entry(s, &cinfo->suspend_list, list) in area_resyncing()
925 spin_unlock_irq(&cinfo->suspend_lock); in area_resyncing()
935 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk() local
945 lock_comm(cinfo); in add_new_disk()
946 ret = __sendmsg(cinfo, &cmsg); in add_new_disk()
949 cinfo->no_new_dev_lockres->flags |= DLM_LKF_NOQUEUE; in add_new_disk()
950 ret = dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_EX); in add_new_disk()
951 cinfo->no_new_dev_lockres->flags &= ~DLM_LKF_NOQUEUE; in add_new_disk()
956 unlock_comm(cinfo); in add_new_disk()
958 dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_CR); in add_new_disk()
964 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk_cancel() local
965 unlock_comm(cinfo); in add_new_disk_cancel()
970 struct md_cluster_info *cinfo = mddev->cluster_info; in new_disk_ack() local
972 if (!test_bit(MD_CLUSTER_WAITING_FOR_NEWDISK, &cinfo->state)) { in new_disk_ack()
978 dlm_unlock_sync(cinfo->no_new_dev_lockres); in new_disk_ack()
979 complete(&cinfo->newdisk_completion); in new_disk_ack()
986 struct md_cluster_info *cinfo = mddev->cluster_info; in remove_disk() local
989 return __sendmsg(cinfo, &cmsg); in remove_disk()
998 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_bitmaps() local
1002 err = sendmsg(cinfo, &cmsg); in gather_bitmaps()
1007 if (sn == (cinfo->slot_number - 1)) in gather_bitmaps()