From fc2cc1715be5aba735db04cb95174b0e196f4566 Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Mon, 4 Aug 2014 13:44:58 -0700
Subject: [PATCH] Add function that purges step list

No checking or other operations are performed on this list, just a purge.
---
 src/slurmctld/slurmctld.h |  6 ++++++
 src/slurmctld/step_mgr.c  | 21 +++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/src/slurmctld/slurmctld.h b/src/slurmctld/slurmctld.h
index 6f6dac0fb1c..131be4a18c7 100644
--- a/src/slurmctld/slurmctld.h
+++ b/src/slurmctld/slurmctld.h
@@ -1928,6 +1928,12 @@ extern slurm_step_layout_t *step_layout_create(struct step_record *step_ptr,
 					       uint16_t task_dist,
 					       uint16_t plane_size);
 
+/*
+ * step_list_purge - Simple purge of a job's step list records.
+ * IN job_ptr - pointer to job table entry to have step records removed
+ */
+extern void step_list_purge(struct job_record *job_ptr);
+
 /* start_power_mgr - Start power management thread as needed. The thread
  *	terminates automatically at slurmctld shutdown time.
  * IN thread_id - pointer to thread ID of the started pthread.
diff --git a/src/slurmctld/step_mgr.c b/src/slurmctld/step_mgr.c
index d8a5947f8e8..35278987823 100644
--- a/src/slurmctld/step_mgr.c
+++ b/src/slurmctld/step_mgr.c
@@ -282,7 +282,28 @@ extern void delete_step_records (struct job_record *job_ptr)
 		_free_step_rec(step_ptr);
 	}
 	list_iterator_destroy(step_iterator);
+}
+
+/*
+ * step_list_purge - Simple purge of a job's step list records.
+ * IN job_ptr - pointer to job table entry to have step records removed
+ */
+extern void step_list_purge(struct job_record *job_ptr)
+{
+	ListIterator step_iterator;
+	struct step_record *step_ptr;
+
+	xassert(job_ptr);
+	if (job_ptr->step_list == NULL)
+		return;
 
+	step_iterator = list_iterator_create(job_ptr->step_list);
+	while ((step_ptr = (struct step_record *) list_next (step_iterator))) {
+		list_remove (step_iterator);
+		_free_step_rec(step_ptr);
+	}
+	list_iterator_destroy(step_iterator);
+	list_destroy(job_ptr->step_list);
 }
 
 /* _free_step_rec - delete a step record's data structures */
-- 
GitLab