From 0e55819e884be1fca82ab3f8bb80a80f11b4159f Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Thu, 25 Jun 2009 21:34:17 +0000
Subject: [PATCH] clean up some code for node info purging. put all into one  
 function rather than have duplication in 3 functions

---
 src/slurmctld/node_mgr.c    | 42 ++++++++++++++++++-------------------
 src/slurmctld/read_config.c | 16 +++++---------
 src/slurmctld/slurmctld.h   |  3 +++
 3 files changed, 28 insertions(+), 33 deletions(-)

diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index c183e6936e0..daf01d65d24 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -235,6 +235,18 @@ create_node_record (struct config_record *config_ptr, char *node_name)
 	return node_ptr;
 }
 
+/* Purge the contents of a node record */
+extern void purge_node_rec(struct node_record *node_ptr)
+{
+	xfree(node_ptr->arch);
+	xfree(node_ptr->comm_name);
+	xfree(node_ptr->features);
+	xfree(node_ptr->name);
+	xfree(node_ptr->os);
+	xfree(node_ptr->part_pptr);
+	xfree(node_ptr->reason);
+	select_g_select_nodeinfo_free(node_ptr->select_nodeinfo);
+}
 
 /*
  * _delete_config_record - delete all configuration records
@@ -696,18 +708,11 @@ int init_node_conf (void)
 {
 	last_node_update = time (NULL);
 	int i;
+	struct node_record *node_ptr;
 
-	for (i=0; i<node_record_count; i++) {
-		xfree(node_record_table_ptr[i].arch);
-		xfree(node_record_table_ptr[i].comm_name);
-		xfree(node_record_table_ptr[i].features);
-		xfree(node_record_table_ptr[i].name);
-		xfree(node_record_table_ptr[i].os);
-		xfree(node_record_table_ptr[i].part_pptr);
-		xfree(node_record_table_ptr[i].reason);
-		select_g_select_nodeinfo_free(
-			node_record_table_ptr[i].select_nodeinfo);
-	}
+	node_ptr = node_record_table_ptr;
+	for (i=0; i< node_record_count; i++, node_ptr++)
+		purge_node_rec(node_ptr);
 
 	node_record_count = 0;
 	xfree(node_record_table_ptr);
@@ -2638,6 +2643,7 @@ void make_node_idle(struct node_record *node_ptr,
 void node_fini(void)
 {
 	int i;
+	struct node_record *node_ptr;
 
 	if (config_list) {
 		list_destroy(config_list);
@@ -2646,17 +2652,9 @@ void node_fini(void)
 		feature_list = NULL;
 	}
 
-	for (i=0; i< node_record_count; i++) {
-		xfree(node_record_table_ptr[i].arch);
-		xfree(node_record_table_ptr[i].comm_name);
-		xfree(node_record_table_ptr[i].features);
-		xfree(node_record_table_ptr[i].name);
-		xfree(node_record_table_ptr[i].os);
-		xfree(node_record_table_ptr[i].part_pptr);
-		xfree(node_record_table_ptr[i].reason);
-		select_g_select_nodeinfo_free(
-			node_record_table_ptr[i].select_nodeinfo);
-	}
+	node_ptr = node_record_table_ptr;
+	for (i=0; i< node_record_count; i++, node_ptr++)
+		purge_node_rec(node_ptr);
 
 	FREE_NULL_BITMAP(idle_node_bitmap);
 	FREE_NULL_BITMAP(avail_node_bitmap);
diff --git a/src/slurmctld/read_config.c b/src/slurmctld/read_config.c
index 58ede152e7e..4dfa40acc65 100644
--- a/src/slurmctld/read_config.c
+++ b/src/slurmctld/read_config.c
@@ -1002,18 +1002,12 @@ static void _purge_old_node_state(struct node_record *old_node_table_ptr,
 				int old_node_record_count)
 {
 	int i;
+	struct node_record *node_ptr;
+
+	node_ptr = old_node_table_ptr;
+	for (i=0; i< old_node_record_count; i++, node_ptr++)
+		purge_node_rec(node_ptr);
 
-	for (i = 0; i < old_node_record_count; i++) {
-		xfree(old_node_table_ptr[i].arch);
-		xfree(old_node_table_ptr[i].comm_name);
-		xfree(old_node_table_ptr[i].features);
-		xfree(old_node_table_ptr[i].name);
-		xfree(old_node_table_ptr[i].os);
-		xfree(old_node_table_ptr[i].part_pptr);
-		xfree(old_node_table_ptr[i].reason);
-		select_g_select_nodeinfo_free(
-			node_record_table_ptr[i].select_nodeinfo);
-	}
 	xfree(old_node_table_ptr);
 }
 
diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 48add9f6d12..44f11e589b1 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -1412,6 +1412,9 @@ extern void part_filter_set(uid_t uid);
 /* part_fini - free all memory associated with partition records */
 extern void part_fini (void);
 
+/* Purge the contents of a node record */
+extern void purge_node_rec(struct node_record *node_ptr);
+
 /*
  * purge_old_job - purge old job records. 
  *	the jobs must have completed at least MIN_JOB_AGE minutes ago
-- 
GitLab