Lines Matching refs:mddev

30 	struct mddev *mddev; /* pointing back to mddev. */  member
120 static struct dlm_lock_resource *lockres_init(struct mddev *mddev, in lockres_init() argument
125 struct md_cluster_info *cinfo = mddev->cluster_info; in lockres_init()
132 res->mddev = mddev; in lockres_init()
208 static struct suspend_info *read_resync_info(struct mddev *mddev, struct dlm_lock_resource *lockres) in read_resync_info() argument
231 struct mddev *mddev = thread->mddev; in recover_bitmaps() local
232 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_bitmaps()
252 bm_lockres = lockres_init(mddev, str, NULL, 1); in recover_bitmaps()
264 ret = bitmap_copy_from_slot(mddev, slot, &lo, &hi, true); in recover_bitmaps()
271 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in recover_bitmaps()
272 if (lo < mddev->recovery_cp) in recover_bitmaps()
273 mddev->recovery_cp = lo; in recover_bitmaps()
274 md_check_recovery(mddev); in recover_bitmaps()
285 struct mddev *mddev = arg; in recover_prep() local
286 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_prep()
290 static void __recover_slot(struct mddev *mddev, int slot) in __recover_slot() argument
292 struct md_cluster_info *cinfo = mddev->cluster_info; in __recover_slot()
297 mddev, "recover"); in __recover_slot()
308 struct mddev *mddev = arg; in recover_slot() local
309 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_slot()
312 mddev->bitmap_info.cluster_name, in recover_slot()
317 __recover_slot(mddev, slot->slot - 1); in recover_slot()
324 struct mddev *mddev = arg; in recover_done() local
325 struct md_cluster_info *cinfo = mddev->cluster_info; in recover_done()
353 struct md_cluster_info *cinfo = res->mddev->cluster_info; in ack_bast()
371 static void remove_suspend_info(struct mddev *mddev, int slot) in remove_suspend_info() argument
373 struct md_cluster_info *cinfo = mddev->cluster_info; in remove_suspend_info()
377 mddev->pers->quiesce(mddev, 2); in remove_suspend_info()
381 static void process_suspend_info(struct mddev *mddev, in process_suspend_info() argument
384 struct md_cluster_info *cinfo = mddev->cluster_info; in process_suspend_info()
388 remove_suspend_info(mddev, slot); in process_suspend_info()
389 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in process_suspend_info()
390 md_wakeup_thread(mddev->thread); in process_suspend_info()
399 mddev->pers->quiesce(mddev, 1); in process_suspend_info()
400 mddev->pers->quiesce(mddev, 0); in process_suspend_info()
406 mddev->pers->quiesce(mddev, 2); in process_suspend_info()
409 static void process_add_new_disk(struct mddev *mddev, struct cluster_msg *cmsg) in process_add_new_disk() argument
412 struct md_cluster_info *cinfo = mddev->cluster_info; in process_add_new_disk()
424 kobject_uevent_env(&disk_to_dev(mddev->gendisk)->kobj, KOBJ_CHANGE, envp); in process_add_new_disk()
431 static void process_metadata_update(struct mddev *mddev, struct cluster_msg *msg) in process_metadata_update() argument
433 struct md_cluster_info *cinfo = mddev->cluster_info; in process_metadata_update()
434 md_reload_sb(mddev, le32_to_cpu(msg->raid_slot)); in process_metadata_update()
438 static void process_remove_disk(struct mddev *mddev, struct cluster_msg *msg) in process_remove_disk() argument
440 struct md_rdev *rdev = md_find_rdev_nr_rcu(mddev, in process_remove_disk()
450 static void process_readd_disk(struct mddev *mddev, struct cluster_msg *msg) in process_readd_disk() argument
452 struct md_rdev *rdev = md_find_rdev_nr_rcu(mddev, in process_readd_disk()
462 static void process_recvd_msg(struct mddev *mddev, struct cluster_msg *msg) in process_recvd_msg() argument
464 if (WARN(mddev->cluster_info->slot_number - 1 == le32_to_cpu(msg->slot), in process_recvd_msg()
469 process_metadata_update(mddev, msg); in process_recvd_msg()
472 process_suspend_info(mddev, le32_to_cpu(msg->slot), in process_recvd_msg()
477 process_add_new_disk(mddev, msg); in process_recvd_msg()
480 process_remove_disk(mddev, msg); in process_recvd_msg()
483 process_readd_disk(mddev, msg); in process_recvd_msg()
486 __recover_slot(mddev, le32_to_cpu(msg->slot)); in process_recvd_msg()
499 struct md_cluster_info *cinfo = thread->mddev->cluster_info; in recv_daemon()
513 process_recvd_msg(thread->mddev, &msg); in recv_daemon()
633 static int gather_all_resync_info(struct mddev *mddev, int total_slots) in gather_all_resync_info() argument
635 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_all_resync_info()
646 bm_lockres = lockres_init(mddev, str, NULL, 1); in gather_all_resync_info()
656 s = read_resync_info(mddev, bm_lockres); in gather_all_resync_info()
677 ret = bitmap_copy_from_slot(mddev, i, &lo, &hi, false); in gather_all_resync_info()
683 if ((hi > 0) && (lo < mddev->recovery_cp)) { in gather_all_resync_info()
684 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in gather_all_resync_info()
685 mddev->recovery_cp = lo; in gather_all_resync_info()
686 md_check_recovery(mddev); in gather_all_resync_info()
696 static int join(struct mddev *mddev, int nodes) in join() argument
711 mddev->cluster_info = cinfo; in join()
714 sprintf(str, "%pU", mddev->uuid); in join()
715 ret = dlm_new_lockspace(str, mddev->bitmap_info.cluster_name, in join()
717 &md_ls_ops, mddev, &ops_rv, &cinfo->lockspace); in join()
729 cinfo->recv_thread = md_register_thread(recv_daemon, mddev, "cluster_recv"); in join()
734 cinfo->message_lockres = lockres_init(mddev, "message", NULL, 1); in join()
737 cinfo->token_lockres = lockres_init(mddev, "token", NULL, 0); in join()
740 cinfo->ack_lockres = lockres_init(mddev, "ack", ack_bast, 0); in join()
743 cinfo->no_new_dev_lockres = lockres_init(mddev, "no-new-dev", NULL, 0); in join()
758 cinfo->bitmap_lockres = lockres_init(mddev, str, NULL, 1); in join()
767 cinfo->resync_lockres = lockres_init(mddev, "resync", NULL, 0); in join()
771 ret = gather_all_resync_info(mddev, nodes); in join()
785 mddev->cluster_info = NULL; in join()
790 static void resync_bitmap(struct mddev *mddev) in resync_bitmap() argument
792 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_bitmap()
803 static int leave(struct mddev *mddev) in leave() argument
805 struct md_cluster_info *cinfo = mddev->cluster_info; in leave()
813 if (cinfo->slot_number > 0 && mddev->recovery_cp != MaxSector) in leave()
814 resync_bitmap(mddev); in leave()
831 static int slot_number(struct mddev *mddev) in slot_number() argument
833 struct md_cluster_info *cinfo = mddev->cluster_info; in slot_number()
838 static int metadata_update_start(struct mddev *mddev) in metadata_update_start() argument
840 return lock_comm(mddev->cluster_info); in metadata_update_start()
843 static int metadata_update_finish(struct mddev *mddev) in metadata_update_finish() argument
845 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_finish()
855 rdev_for_each(rdev, mddev) in metadata_update_finish()
869 static void metadata_update_cancel(struct mddev *mddev) in metadata_update_cancel() argument
871 struct md_cluster_info *cinfo = mddev->cluster_info; in metadata_update_cancel()
875 static int resync_start(struct mddev *mddev) in resync_start() argument
877 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_start()
882 static int resync_info_update(struct mddev *mddev, sector_t lo, sector_t hi) in resync_info_update() argument
884 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_info_update()
897 static int resync_finish(struct mddev *mddev) in resync_finish() argument
899 struct md_cluster_info *cinfo = mddev->cluster_info; in resync_finish()
902 return resync_info_update(mddev, 0, 0); in resync_finish()
905 static int area_resyncing(struct mddev *mddev, int direction, in area_resyncing() argument
908 struct md_cluster_info *cinfo = mddev->cluster_info; in area_resyncing()
933 static int add_new_disk(struct mddev *mddev, struct md_rdev *rdev) in add_new_disk() argument
935 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk()
962 static void add_new_disk_cancel(struct mddev *mddev) in add_new_disk_cancel() argument
964 struct md_cluster_info *cinfo = mddev->cluster_info; in add_new_disk_cancel()
968 static int new_disk_ack(struct mddev *mddev, bool ack) in new_disk_ack() argument
970 struct md_cluster_info *cinfo = mddev->cluster_info; in new_disk_ack()
973 pr_warn("md-cluster(%s): Spurious cluster confirmation\n", mdname(mddev)); in new_disk_ack()
983 static int remove_disk(struct mddev *mddev, struct md_rdev *rdev) in remove_disk() argument
986 struct md_cluster_info *cinfo = mddev->cluster_info; in remove_disk()
997 struct mddev *mddev = rdev->mddev; in gather_bitmaps() local
998 struct md_cluster_info *cinfo = mddev->cluster_info; in gather_bitmaps()
1006 for (sn = 0; sn < mddev->bitmap_info.nodes; sn++) { in gather_bitmaps()
1009 err = bitmap_copy_from_slot(mddev, sn, &lo, &hi, false); in gather_bitmaps()
1014 if ((hi > 0) && (lo < mddev->recovery_cp)) in gather_bitmaps()
1015 mddev->recovery_cp = lo; in gather_bitmaps()