From ab4fdfaf50d658d13ee39383cb3a5614fcaa336d Mon Sep 17 00:00:00 2001
From: Danny Auble <da@schedmd.com>
Date: Tue, 4 Mar 2014 12:46:04 -0800
Subject: [PATCH] Replace hostlist_create("") with hostlist_create(NULL).  It
 is much faster, and does the same thing.

When testing times went from ~900 usec to 1.
---
 src/api/step_launch.c          | 4 ++--
 src/common/node_conf.c         | 2 +-
 src/scontrol/info_job.c        | 4 ++--
 src/sinfo/sinfo.c              | 6 +++---
 src/slurmctld/agent.c          | 2 +-
 src/slurmctld/controller.c     | 2 +-
 src/slurmctld/job_mgr.c        | 8 ++++----
 src/slurmctld/node_mgr.c       | 2 +-
 src/slurmctld/node_scheduler.c | 6 +++---
 src/slurmctld/ping_nodes.c     | 8 ++++----
 src/slurmctld/step_mgr.c       | 6 +++---
 src/sview/part_info.c          | 2 +-
 12 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/src/api/step_launch.c b/src/api/step_launch.c
index 3331194bc48..175f063c23f 100644
--- a/src/api/step_launch.c
+++ b/src/api/step_launch.c
@@ -729,7 +729,7 @@ void slurm_step_launch_fwd_signal(slurm_step_ctx_t *ctx, int signo)
 
 	pthread_mutex_lock(&sls->lock);
 
-	hl = hostlist_create("");
+	hl = hostlist_create(NULL);
 	for (node_id = 0;
 	     node_id < ctx->step_resp->step_layout->node_cnt;
 	     node_id++) {
@@ -1659,7 +1659,7 @@ static void _print_launch_msg(launch_tasks_request_msg_t *msg,
 {
 	int i;
 	char tmp_str[10], *task_list = NULL;
-	hostlist_t hl = hostlist_create("");
+	hostlist_t hl = hostlist_create(NULL);
 
 	for (i=0; i<msg->tasks_to_launch[nodeid]; i++) {
 		sprintf(tmp_str, "%u", msg->global_task_ids[nodeid][i]);
diff --git a/src/common/node_conf.c b/src/common/node_conf.c
index 84d022824f7..0e35c36d24b 100644
--- a/src/common/node_conf.c
+++ b/src/common/node_conf.c
@@ -502,7 +502,7 @@ char * bitmap2node_name_sortable (bitstr_t *bitmap, bool sort)
 		return xstrdup("");
 
 	last  = bit_fls(bitmap);
-	hl = hostlist_create("");
+	hl = hostlist_create(NULL);
 	for (i = first; i <= last; i++) {
 		if (bit_test(bitmap, i) == 0)
 			continue;
diff --git a/src/scontrol/info_job.c b/src/scontrol/info_job.c
index 67fd78438a7..137322ddb19 100644
--- a/src/scontrol/info_job.c
+++ b/src/scontrol/info_job.c
@@ -212,8 +212,8 @@ scontrol_print_completing_job(job_info_t *job_ptr,
 	char *node_buf;
 
 	all_nodes  = hostlist_create(job_ptr->nodes);
-	comp_nodes = hostlist_create("");
-	down_nodes = hostlist_create("");
+	comp_nodes = hostlist_create(NULL);
+	down_nodes = hostlist_create(NULL);
 
 	for (i=0; i<node_info_msg->record_count; i++) {
 		node_info = &(node_info_msg->node_array[i]);
diff --git a/src/sinfo/sinfo.c b/src/sinfo/sinfo.c
index 3185ac7ec0a..dd25ac0568c 100644
--- a/src/sinfo/sinfo.c
+++ b/src/sinfo/sinfo.c
@@ -1124,9 +1124,9 @@ static sinfo_data_t *_create_sinfo(partition_info_t* part_ptr,
 
 	sinfo_ptr->part_info = part_ptr;
 	sinfo_ptr->part_inx = part_inx;
-	sinfo_ptr->nodes     = hostlist_create("");
-	sinfo_ptr->node_addr = hostlist_create("");
-	sinfo_ptr->hostnames = hostlist_create("");
+	sinfo_ptr->nodes     = hostlist_create(NULL);
+	sinfo_ptr->node_addr = hostlist_create(NULL);
+	sinfo_ptr->hostnames = hostlist_create(NULL);
 
 	if (node_ptr)
 		_update_sinfo(sinfo_ptr, node_ptr, node_scaling);
diff --git a/src/slurmctld/agent.c b/src/slurmctld/agent.c
index a63451f22d2..e44371987ec 100644
--- a/src/slurmctld/agent.c
+++ b/src/slurmctld/agent.c
@@ -1086,7 +1086,7 @@ static void _queue_agent_retry(agent_info_t * agent_info_ptr, int count)
 	agent_arg_ptr = xmalloc(sizeof(agent_arg_t));
 	agent_arg_ptr->node_count = count;
 	agent_arg_ptr->retry = 1;
-	agent_arg_ptr->hostlist = hostlist_create("");
+	agent_arg_ptr->hostlist = hostlist_create(NULL);
 	agent_arg_ptr->msg_type = agent_info_ptr->msg_type;
 	agent_arg_ptr->msg_args = *(agent_info_ptr->msg_args_pptr);
 	*(agent_info_ptr->msg_args_pptr) = NULL;
diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index 2304d642e91..e6072ce069f 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -1323,7 +1323,7 @@ static void _queue_reboot_msg(void)
 			reboot_agent_args = xmalloc(sizeof(agent_arg_t));
 			reboot_agent_args->msg_type = REQUEST_REBOOT_NODES;
 			reboot_agent_args->retry = 0;
-			reboot_agent_args->hostlist = hostlist_create("");
+			reboot_agent_args->hostlist = hostlist_create(NULL);
 		}
 		hostlist_push(reboot_agent_args->hostlist, node_ptr->name);
 		reboot_agent_args->node_count++;
diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c
index 274537aabbf..18356643ad1 100644
--- a/src/slurmctld/job_mgr.c
+++ b/src/slurmctld/job_mgr.c
@@ -9102,7 +9102,7 @@ static void _send_job_kill(struct job_record *job_ptr)
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = REQUEST_TERMINATE_JOB;
 	agent_args->retry = 0;	/* re_kill_job() resends as needed */
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	kill_job = xmalloc(sizeof(kill_job_msg_t));
 	last_node_update    = time(NULL);
 	kill_job->job_id    = job_ptr->job_id;
@@ -9692,7 +9692,7 @@ _xmit_new_end_time(struct job_record *job_ptr)
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = REQUEST_UPDATE_JOB_TIME;
 	agent_args->retry = 1;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	job_time_msg_ptr = xmalloc(sizeof(job_time_msg_t));
 	job_time_msg_ptr->job_id          = job_ptr->job_id;
 	job_time_msg_ptr->expiration_time = job_ptr->end_time;
@@ -10137,7 +10137,7 @@ static void _signal_job(struct job_record *job_ptr, int signal)
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = REQUEST_SIGNAL_JOB;
 	agent_args->retry = 1;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	signal_job_msg = xmalloc(sizeof(kill_tasks_msg_t));
 	signal_job_msg->job_id = job_ptr->job_id;
 	signal_job_msg->signal = signal;
@@ -10206,7 +10206,7 @@ static void _suspend_job(struct job_record *job_ptr, uint16_t op,
 				 * sched/wiki or sched/wiki2 can
 				 * quickly induce huge backlog
 				 * of agent.c RPCs */
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	sus_ptr = xmalloc(sizeof(suspend_int_msg_t));
 	sus_ptr->job_core_spec = job_ptr->details->core_spec;
 	sus_ptr->job_id = job_ptr->job_id;
diff --git a/src/slurmctld/node_mgr.c b/src/slurmctld/node_mgr.c
index d01060db4d1..61ecd35fc1a 100644
--- a/src/slurmctld/node_mgr.c
+++ b/src/slurmctld/node_mgr.c
@@ -2828,7 +2828,7 @@ void msg_to_slurmd (slurm_msg_type_t msg_type)
 	kill_agent_args = xmalloc (sizeof (agent_arg_t));
 	kill_agent_args->msg_type = msg_type;
 	kill_agent_args->retry = 0;
-	kill_agent_args->hostlist = hostlist_create("");
+	kill_agent_args->hostlist = hostlist_create(NULL);
 	if (msg_type == REQUEST_SHUTDOWN) {
  		shutdown_req = xmalloc(sizeof(shutdown_msg_t));
 		shutdown_req->options = 0;
diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c
index fe2cfc7dbb7..a87ab638e2e 100644
--- a/src/slurmctld/node_scheduler.c
+++ b/src/slurmctld/node_scheduler.c
@@ -489,7 +489,7 @@ extern void deallocate_nodes(struct job_record *job_ptr, bool timeout,
 	else
 		agent_args->msg_type = REQUEST_TERMINATE_JOB;
 	agent_args->retry = 0;	/* re_kill_job() resends as needed */
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	kill_job = xmalloc(sizeof(kill_job_msg_t));
 	last_node_update    = time(NULL);
 	kill_job->job_id    = job_ptr->job_id;
@@ -2635,11 +2635,11 @@ extern void re_kill_job(struct job_record *job_ptr)
 	xassert(job_ptr);
 	xassert(job_ptr->details);
 
-	kill_hostlist = hostlist_create("");
+	kill_hostlist = hostlist_create(NULL);
 
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = REQUEST_TERMINATE_JOB;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	agent_args->retry = 0;
 	kill_job = xmalloc(sizeof(kill_job_msg_t));
 	kill_job->job_id    = job_ptr->job_id;
diff --git a/src/slurmctld/ping_nodes.c b/src/slurmctld/ping_nodes.c
index 063792b2a72..d0eff38c459 100644
--- a/src/slurmctld/ping_nodes.c
+++ b/src/slurmctld/ping_nodes.c
@@ -143,12 +143,12 @@ void ping_nodes (void)
 	ping_agent_args = xmalloc (sizeof (agent_arg_t));
 	ping_agent_args->msg_type = REQUEST_PING;
 	ping_agent_args->retry = 0;
-	ping_agent_args->hostlist = hostlist_create("");
+	ping_agent_args->hostlist = hostlist_create(NULL);
 
 	reg_agent_args = xmalloc (sizeof (agent_arg_t));
 	reg_agent_args->msg_type = REQUEST_NODE_REGISTRATION_STATUS;
 	reg_agent_args->retry = 0;
-	reg_agent_args->hostlist = hostlist_create("");
+	reg_agent_args->hostlist = hostlist_create(NULL);
 
 	/*
 	 * If there are a large number of down nodes, the node ping
@@ -356,7 +356,7 @@ extern void run_health_check(void)
 	check_agent_args = xmalloc (sizeof (agent_arg_t));
 	check_agent_args->msg_type = REQUEST_HEALTH_CHECK;
 	check_agent_args->retry = 0;
-	check_agent_args->hostlist = hostlist_create("");
+	check_agent_args->hostlist = hostlist_create(NULL);
 #ifdef HAVE_FRONT_END
 	for (i = 0, front_end_ptr = front_end_nodes;
 	     i < front_end_node_cnt; i++, front_end_ptr++) {
@@ -437,7 +437,7 @@ extern void update_nodes_acct_gather_data(void)
 	agent_args = xmalloc (sizeof (agent_arg_t));
 	agent_args->msg_type = REQUEST_ACCT_GATHER_UPDATE;
 	agent_args->retry = 0;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 
 #ifdef HAVE_FRONT_END
 	for (i = 0, front_end_ptr = front_end_nodes;
diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index b6f988c6674..04ca8fb3c1c 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -530,7 +530,7 @@ void signal_step_tasks(struct step_record *step_ptr, uint16_t signal,
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = msg_type;
 	agent_args->retry    = 1;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	kill_tasks_msg = xmalloc(sizeof(kill_tasks_msg_t));
 	kill_tasks_msg->job_id      = step_ptr->job_ptr->job_id;
 	kill_tasks_msg->job_step_id = step_ptr->step_id;
@@ -3101,7 +3101,7 @@ static hostlist_t _step_range_to_hostlist(struct step_record *step_ptr,
 		uint32_t range_first, uint32_t range_last)
 {
 	int i, node_inx = -1;
-	hostlist_t hl = hostlist_create("");
+	hostlist_t hl = hostlist_create(NULL);
 
 	for (i = 0; i < node_record_count; i++) {
 		if (bit_test(step_ptr->step_node_bitmap, i) == 0)
@@ -3704,7 +3704,7 @@ static void _signal_step_timelimit(struct job_record *job_ptr,
 	agent_args = xmalloc(sizeof(agent_arg_t));
 	agent_args->msg_type = REQUEST_KILL_TIMELIMIT;
 	agent_args->retry = 1;
-	agent_args->hostlist = hostlist_create("");
+	agent_args->hostlist = hostlist_create(NULL);
 	kill_step = xmalloc(sizeof(kill_job_msg_t));
 	kill_step->job_id    = job_ptr->job_id;
 	kill_step->step_id   = step_ptr->step_id;
diff --git a/src/sview/part_info.c b/src/sview/part_info.c
index c27d872c9f9..db5af1bbc6c 100644
--- a/src/sview/part_info.c
+++ b/src/sview/part_info.c
@@ -1620,7 +1620,7 @@ static sview_part_sub_t *_create_sview_part_sub(partition_info_t *part_ptr,
 		return NULL;
 	}
 	sview_part_sub_ptr->part_ptr = part_ptr;
-	sview_part_sub_ptr->hl = hostlist_create("");
+	sview_part_sub_ptr->hl = hostlist_create(NULL);
 	sview_part_sub_ptr->node_ptr_list = list_create(NULL);
 
 	_update_sview_part_sub(sview_part_sub_ptr, node_ptr, node_scaling);
-- 
GitLab