From 23cc54810c90dc014aae238ad38e3ca3b3e09ab9 Mon Sep 17 00:00:00 2001
From: Danny Auble <da@llnl.gov>
Date: Fri, 13 Aug 2010 00:01:57 +0000
Subject: [PATCH] make multi_core stuff backwards compatible

---
 src/common/gres.c                | 10 +++++-----
 src/common/slurm_protocol_pack.c | 10 ++++++----
 src/common/slurm_protocol_pack.h |  6 ++++--
 src/slurmctld/job_mgr.c          | 12 +++++++-----
 4 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/src/common/gres.c b/src/common/gres.c
index a82e7805bac..01306f76197 100644
--- a/src/common/gres.c
+++ b/src/common/gres.c
@@ -2139,7 +2139,7 @@ extern int gres_plugin_job_state_unpack(List *gres_list, Buf buffer,
 					uint32_t job_id,
 					uint16_t protocol_version)
 {
-	int i, rc;
+	int i = 0, rc;
 	uint32_t magic, plugin_id;
 	uint16_t rec_cnt;
 	uint8_t  has_more;
@@ -2205,12 +2205,12 @@ extern int gres_plugin_job_state_unpack(List *gres_list, Buf buffer,
 						      buffer);
 				}
 			}
-			for (i=0; i<gres_context_cnt; i++) {
-				if (gres_context[i].plugin_id == plugin_id)
-					break;
-			}
 		}
 
+		for (i=0; i<gres_context_cnt; i++) {
+			if (gres_context[i].plugin_id == plugin_id)
+				break;
+		}
 		if (i >= gres_context_cnt) {
 			/* A likely sign that GresPlugins has changed.
 			 * Not a fatal error, skip over the data. */
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index 143b6ea0684..decd0282ce8 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -3705,7 +3705,7 @@ _unpack_job_info_members(job_info_t * job, Buf buffer,
 			xfree(node_inx_str);
 		}
 
-		if (unpack_multi_core_data(&mc_ptr, buffer))
+		if (unpack_multi_core_data(&mc_ptr, buffer, protocol_version))
 			goto unpack_error;
 		if (mc_ptr) {
 			job->sockets_per_node  = mc_ptr->sockets_per_node;
@@ -3809,7 +3809,7 @@ _unpack_job_info_members(job_info_t * job, Buf buffer,
 			xfree(node_inx_str);
 		}
 
-		if (unpack_multi_core_data(&mc_ptr, buffer))
+		if (unpack_multi_core_data(&mc_ptr, buffer, protocol_version))
 			goto unpack_error;
 		if (mc_ptr) {
 			job->sockets_per_node  = mc_ptr->sockets_per_node;
@@ -7628,7 +7628,8 @@ unpack_error:
 }
 
 extern void
-pack_multi_core_data (multi_core_data_t *multi_core, Buf buffer)
+pack_multi_core_data (multi_core_data_t *multi_core, Buf buffer,
+		      uint16_t protocol_version)
 {
 	if (multi_core == NULL) {
 		pack8((uint8_t) 0, buffer);	/* flag as Empty */
@@ -7647,7 +7648,8 @@ pack_multi_core_data (multi_core_data_t *multi_core, Buf buffer)
 }
 
 extern int
-unpack_multi_core_data (multi_core_data_t **mc_ptr, Buf buffer)
+unpack_multi_core_data (multi_core_data_t **mc_ptr, Buf buffer,
+			uint16_t protocol_version)
 {
 	uint8_t flag;
 	multi_core_data_t *multi_core;
diff --git a/src/common/slurm_protocol_pack.h b/src/common/slurm_protocol_pack.h
index 986161e6b4a..9aa576ee692 100644
--- a/src/common/slurm_protocol_pack.h
+++ b/src/common/slurm_protocol_pack.h
@@ -140,8 +140,10 @@ extern int unpack_msg ( slurm_msg_t * msg , Buf buffer );
 /* 		char *partition, char *nodes, char *name, char *network, */
 /* 		Buf buffer ); */
 
-extern void pack_multi_core_data (multi_core_data_t *multi_core, Buf buffer);
-extern int unpack_multi_core_data (multi_core_data_t **multi_core, Buf buffer);
+extern void pack_multi_core_data (multi_core_data_t *multi_core, Buf buffer,
+				  uint16_t protocol_version);
+extern int unpack_multi_core_data (multi_core_data_t **multi_core, Buf buffer,
+				   uint16_t protocol_version);
 extern int slurm_unpack_block_info_msg(
 	block_info_msg_t **block_info_msg_pptr, Buf buffer,
 	uint16_t protocol_version);
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 360b3a160f6..e9531f20eb6 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -1394,7 +1394,8 @@ void _dump_job_details(struct job_details *detail_ptr, Buf buffer)
 	packstr(detail_ptr->ckpt_dir,  buffer);
 	packstr(detail_ptr->restart_dir, buffer);
 
-	pack_multi_core_data(detail_ptr->mc_ptr, buffer);
+	pack_multi_core_data(detail_ptr->mc_ptr, buffer,
+			     SLURM_PROTOCOL_VERSION);
 	packstr_array(detail_ptr->argv, detail_ptr->argc, buffer);
 	packstr_array(detail_ptr->env_sup, detail_ptr->env_cnt, buffer);
 }
@@ -1465,7 +1466,7 @@ static int _load_job_details(struct job_record *job_ptr, Buf buffer,
 		safe_unpackstr_xmalloc(&ckpt_dir, &name_len, buffer);
 		safe_unpackstr_xmalloc(&restart_dir, &name_len, buffer);
 
-		if (unpack_multi_core_data(&mc_ptr, buffer))
+		if (unpack_multi_core_data(&mc_ptr, buffer, protocol_version))
 			goto unpack_error;
 		safe_unpackstr_array(&argv, &argc, buffer);
 		safe_unpackstr_array(&env_sup, &env_cnt, buffer);
@@ -1511,7 +1512,7 @@ static int _load_job_details(struct job_record *job_ptr, Buf buffer,
 		safe_unpackstr_xmalloc(&ckpt_dir, &name_len, buffer);
 		safe_unpackstr_xmalloc(&restart_dir, &name_len, buffer);
 
-		if (unpack_multi_core_data(&mc_ptr, buffer))
+		if (unpack_multi_core_data(&mc_ptr, buffer, protocol_version))
 			goto unpack_error;
 		safe_unpackstr_array(&argv, &argc, buffer);
 		safe_unpackstr_array(&env_sup, &env_cnt, buffer);
@@ -5109,7 +5110,8 @@ static void _pack_pending_job_details(struct job_details *detail_ptr,
 			packstr(detail_ptr->exc_nodes, buffer);
 			pack_bit_fmt(detail_ptr->exc_node_bitmap, buffer);
 
-			pack_multi_core_data(detail_ptr->mc_ptr, buffer);
+			pack_multi_core_data(detail_ptr->mc_ptr, buffer,
+					     protocol_version);
 		} else {
 			pack16((uint16_t) 0, buffer);
 			pack16((uint16_t) 0, buffer);
@@ -5124,7 +5126,7 @@ static void _pack_pending_job_details(struct job_details *detail_ptr,
 			packnull(buffer);
 			packnull(buffer);
 
-			pack_multi_core_data(NULL, buffer);
+			pack_multi_core_data(NULL, buffer, protocol_version);
 		}
 	}
 }
-- 
GitLab