From 795cddbb4231105952e9c7341ee2285a0d24c6db Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Tue, 12 Nov 2002 21:53:38 +0000
Subject: [PATCH] Add support for new configuration file parameters
 SlurmctldLogFile, SlurmdLogFile, and SlurmdSpoolDir.

---
 src/api/config_info.c            |  3 ++
 src/common/slurm_protocol_defs.c | 54 ++++++++++++++++++--------------
 src/common/slurm_protocol_defs.h |  9 +++---
 src/common/slurm_protocol_pack.c | 14 +++++++++
 src/slurmctld/controller.c       |  6 ++++
 5 files changed, 58 insertions(+), 28 deletions(-)

diff --git a/src/api/config_info.c b/src/api/config_info.c
index e63c7286a18..6ba70064170 100644
--- a/src/api/config_info.c
+++ b/src/api/config_info.c
@@ -56,7 +56,10 @@ void slurm_print_ctl_conf ( FILE* out, slurm_ctl_conf_info_msg_t * slurm_ctl_con
 	fprintf(out, "Prioritize        = %s\n", slurm_ctl_conf_ptr->prioritize);
 	fprintf(out, "Prolog            = %s\n", slurm_ctl_conf_ptr->prolog);
 	fprintf(out, "ReturnToService   = %u\n", slurm_ctl_conf_ptr->ret2service);
+	fprintf(out, "SlurmctldLogFile  = %s\n", slurm_ctl_conf_ptr->slurmctld_logfile);
 	fprintf(out, "SlurmctldTimeout  = %u\n", slurm_ctl_conf_ptr->slurmctld_timeout);
+	fprintf(out, "SlurmdLogFile     = %s\n", slurm_ctl_conf_ptr->slurmd_logfile);
+	fprintf(out, "SlurmdSpoolDir    = %s\n", slurm_ctl_conf_ptr->slurmd_spooldir);
 	fprintf(out, "SlurmdTimeout     = %u\n", slurm_ctl_conf_ptr->slurmd_timeout);
 	fprintf(out, "SLURM_CONFIG_FILE = %s\n", slurm_ctl_conf_ptr->slurm_conf);
 	fprintf(out, "StateSaveLocation = %s\n", slurm_ctl_conf_ptr->state_save_location);
diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c
index 987137aedbc..18578b1d63f 100644
--- a/src/common/slurm_protocol_defs.c
+++ b/src/common/slurm_protocol_defs.c
@@ -65,30 +65,36 @@ void slurm_free_return_code_msg(return_code_msg_t * msg)
 	xfree(msg);
 }
 
-void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * build_ptr)
-{
-	if (build_ptr) {
-		if (build_ptr->backup_addr)
-			xfree(build_ptr->backup_addr);
-		if (build_ptr->backup_controller)
-			xfree(build_ptr->backup_controller);
-		if (build_ptr->control_addr)
-			xfree(build_ptr->control_addr);
-		if (build_ptr->control_machine)
-			xfree(build_ptr->control_machine);
-		if (build_ptr->epilog)
-			xfree(build_ptr->epilog);
-		if (build_ptr->prioritize)
-			xfree(build_ptr->prioritize);
-		if (build_ptr->prolog)
-			xfree(build_ptr->prolog);
-		if (build_ptr->slurm_conf)
-			xfree(build_ptr->slurm_conf);
-		if (build_ptr->state_save_location)
-			xfree(build_ptr->state_save_location);
-		if (build_ptr->tmp_fs)
-			xfree(build_ptr->tmp_fs);
-		xfree(build_ptr);
+void slurm_free_ctl_conf(slurm_ctl_conf_info_msg_t * config_ptr)
+{
+	if (config_ptr) {
+		if (config_ptr->backup_addr)
+			xfree(config_ptr->backup_addr);
+		if (config_ptr->backup_controller)
+			xfree(config_ptr->backup_controller);
+		if (config_ptr->control_addr)
+			xfree(config_ptr->control_addr);
+		if (config_ptr->control_machine)
+			xfree(config_ptr->control_machine);
+		if (config_ptr->epilog)
+			xfree(config_ptr->epilog);
+		if (config_ptr->prioritize)
+			xfree(config_ptr->prioritize);
+		if (config_ptr->prolog)
+			xfree(config_ptr->prolog);
+		if (config_ptr->slurmctld_logfile)
+			xfree(config_ptr->slurmctld_logfile);
+		if (config_ptr->slurmd_logfile)
+			xfree(config_ptr->slurmd_logfile);
+		if (config_ptr->slurmd_spooldir)
+			xfree(config_ptr->slurmd_spooldir);
+		if (config_ptr->slurm_conf)
+			xfree(config_ptr->slurm_conf);
+		if (config_ptr->state_save_location)
+			xfree(config_ptr->state_save_location);
+		if (config_ptr->tmp_fs)
+			xfree(config_ptr->tmp_fs);
+		xfree(config_ptr);
 	}
 }
 
diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h
index c1b4240e500..ac5a47258b9 100644
--- a/src/common/slurm_protocol_defs.h
+++ b/src/common/slurm_protocol_defs.h
@@ -353,7 +353,7 @@ typedef struct partition_info {
  * Slurm API Protocol Data Structures
  *****************************************************************************/
 
-struct slurm_ctl_conf {
+typedef struct slurm_ctl_conf {
 	time_t last_update;	/* last update time of the build parameters */
 	char *backup_addr;	/* comm path of slurmctld secondary server */
 	char *backup_controller;	/* name of slurmctld secondary server */
@@ -370,18 +370,19 @@ struct slurm_ctl_conf {
 	char *prioritize;	/* pathname of program to set initial job priority */
 	char *prolog;		/* pathname of job prolog */
 	uint16_t ret2service;	/* 1 return node to service at registration */ 
+	char *slurmctld_logfile;	/* where slurmctld error log goes by default */
 	uint32_t slurmctld_port;	/* default communications port to slurmctld */
 	uint16_t slurmctld_timeout;	/* how long backup waits for primarly slurmctld */
+	char *slurmd_logfile;	/* where slurmd error log goes by default */
 	uint32_t slurmd_port;	/* default communications port to slurmd */
+	char *slurmd_spooldir;	/* where slurmd put temporary state info */
 	uint16_t slurmd_timeout;	/* how long slurmctld waits for slurmd before setting down */
 	char *slurm_conf;	/* pathname of slurm config file */
 	char *state_save_location;	/* pathname of state save directory */
 	char *tmp_fs;		/* pathname of temporary file system */
 	char *job_credential_private_key;	/* path to private key */
 	char *job_credential_public_certificate;	/* path to public certificate */
-};
-
-typedef struct slurm_ctl_conf slurm_ctl_conf_t;
+} slurm_ctl_conf_t;
 
 /****************************************************************************
  * Slurm Protocol Message Types
diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c
index df03f03637b..08a6e53206d 100644
--- a/src/common/slurm_protocol_pack.c
+++ b/src/common/slurm_protocol_pack.c
@@ -1249,7 +1249,11 @@ void pack_slurm_ctl_conf ( slurm_ctl_conf_info_msg_t * build_ptr, Buf buffer )
 	packstr (build_ptr->prioritize, buffer);
 	packstr (build_ptr->prolog, buffer);
 	pack16 (build_ptr->ret2service, buffer);
+error("logfile=%s",build_ptr->slurmctld_logfile);
+	packstr (build_ptr->slurmctld_logfile, buffer);
 	pack16 (build_ptr->slurmctld_timeout, buffer);
+	packstr (build_ptr->slurmd_logfile, buffer);
+	packstr (build_ptr->slurmd_spooldir, buffer);
 	pack16 (build_ptr->slurmd_timeout, buffer);
 	packstr (build_ptr->slurm_conf, buffer);
 	packstr (build_ptr->state_save_location, buffer);
@@ -1283,7 +1287,11 @@ int unpack_slurm_ctl_conf ( slurm_ctl_conf_info_msg_t **build_buffer_ptr, Buf bu
 	safe_unpackstr_xmalloc (&build_ptr->prioritize, &uint16_tmp, buffer);
 	safe_unpackstr_xmalloc (&build_ptr->prolog, &uint16_tmp, buffer);
 	safe_unpack16 (&build_ptr->ret2service, buffer);
+	safe_unpackstr_xmalloc (&build_ptr->slurmctld_logfile, &uint16_tmp, buffer);
+error("logfile=%s",build_ptr->slurmctld_logfile);
 	safe_unpack16 (&build_ptr->slurmctld_timeout, buffer);
+	safe_unpackstr_xmalloc (&build_ptr->slurmd_logfile, &uint16_tmp, buffer);
+	safe_unpackstr_xmalloc (&build_ptr->slurmd_spooldir, &uint16_tmp, buffer);
 	safe_unpack16 (&build_ptr->slurmd_timeout, buffer);
 	safe_unpackstr_xmalloc (&build_ptr->slurm_conf, &uint16_tmp, buffer);
 	safe_unpackstr_xmalloc (&build_ptr->state_save_location, &uint16_tmp, buffer);
@@ -1307,6 +1315,12 @@ int unpack_slurm_ctl_conf ( slurm_ctl_conf_info_msg_t **build_buffer_ptr, Buf bu
 		xfree (build_ptr->prioritize);
 	if (build_ptr->prolog)
 		xfree (build_ptr->prolog);
+	if (build_ptr->slurmctld_logfile)
+		xfree (build_ptr->slurmctld_logfile);
+	if (build_ptr->slurmd_logfile)
+		xfree (build_ptr->slurmd_logfile);
+	if (build_ptr->slurmd_spooldir)
+		xfree (build_ptr->slurmd_spooldir);
 	if (build_ptr->slurm_conf)
 		xfree (build_ptr->slurm_conf);
 	if (build_ptr->state_save_location)
diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c
index ed540ea576b..cf922438c60 100644
--- a/src/slurmctld/controller.c
+++ b/src/slurmctld/controller.c
@@ -1861,7 +1861,10 @@ init_ctld_conf ( slurm_ctl_conf_t * conf_ptr )
 	conf_ptr->prioritize        	= NULL ;
 	conf_ptr->prolog            	= NULL ;
 	conf_ptr->ret2service           = 0 ;
+	conf_ptr->slurmctld_logfile   	= xstrdup ("test") ; /* FIXME to NULL */
 	conf_ptr->slurmctld_timeout   	= 300 ;
+	conf_ptr->slurmd_logfile   	= NULL ;
+	conf_ptr->slurmd_spooldir   	= NULL ;
 	conf_ptr->slurmd_timeout   	= 300 ;
 	conf_ptr->slurm_conf       	= SLURM_CONFIG_FILE ;
 	conf_ptr->state_save_location   = xstrdup (DEFAULT_TMP_FS) ;
@@ -1900,8 +1903,11 @@ fill_ctld_conf ( slurm_ctl_conf_t * conf_ptr )
 	conf_ptr->prioritize        	= slurmctld_conf.prioritize ;
 	conf_ptr->prolog            	= slurmctld_conf.prolog ;
 	conf_ptr->ret2service           = slurmctld_conf.ret2service ;
+	conf_ptr->slurmctld_logfile   	= slurmctld_conf.slurmctld_logfile ;
 	conf_ptr->slurmctld_port   	= slurmctld_conf.slurmctld_port ;
 	conf_ptr->slurmctld_timeout   	= slurmctld_conf.slurmctld_timeout ;
+	conf_ptr->slurmd_logfile   	= slurmctld_conf.slurmd_logfile ;
+	conf_ptr->slurmd_spooldir   	= slurmctld_conf.slurmd_spooldir ;
 	conf_ptr->slurmd_port   	= slurmctld_conf.slurmd_port ;
 	conf_ptr->slurmd_timeout   	= slurmctld_conf.slurmd_timeout ;
 	conf_ptr->slurm_conf       	= slurmctld_conf.slurm_conf ;
-- 
GitLab