소스 검색

Fix for global_ckpt_id not synced


git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@1239 fd59a12c-fef9-0310-b244-a6a79926bd2f
Hans Feldt 19 년 전
부모
커밋
1351bebe3e
1개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      exec/ckpt.c

+ 6 - 0
exec/ckpt.c

@@ -345,6 +345,7 @@ DECLARE_LIST_INIT(checkpoint_iteration_list_head);
 
 DECLARE_LIST_INIT(checkpoint_recovery_list_head);
 
+/* cluster wide synchronized checkpoint ID */
 static mar_uint32_t global_ckpt_id = 0;
 
 struct checkpoint_cleanup {
@@ -2105,6 +2106,11 @@ static int recovery_checkpoint_open (
 		log_printf (LOG_LEVEL_DEBUG, "recovery CHECKPOINT reopened is %p\n", checkpoint);
 	}
 
+	/* synchronize global_ckpt_id to max(ckpt_id,global_ckpt_id)+1 */
+	if (ckpt_id > global_ckpt_id) {
+		global_ckpt_id = ckpt_id + 1;
+	}
+
 	/*CHECK to see if there are any existing ckpts*/
 	if ((checkpoint->ckpt_refcnt) &&  (ckpt_refcnt_total(checkpoint->ckpt_refcnt) > 0)) {
 		log_printf (LOG_LEVEL_DEBUG,"calling merge_ckpt_refcnts\n");