1 /*****************************************************************************\
2  *  slurm_errno.h - error codes and functions for slurm
3  ******************************************************************************
4  *  Copyright (C) 2002-2007 The Regents of the University of California.
5  *  Copyright (C) 2008-2009 Lawrence Livermore National Security.
6  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
7  *  Written by Kevin Tew <tew1@llnl.gov>,
8  *	Jim Garlick <garlick@llnl.gov>, et. al.
9  *  CODE-OCEC-09-009. All rights reserved.
10  *
11  *  This file is part of Slurm, a resource management program.
12  *  For details, see <https://slurm.schedmd.com/>.
13  *  Please also read the included file: DISCLAIMER.
14  *
15  *  Slurm is free software; you can redistribute it and/or modify it under
16  *  the terms of the GNU General Public License as published by the Free
17  *  Software Foundation; either version 2 of the License, or (at your option)
18  *  any later version.
19  *
20  *  In addition, as a special exception, the copyright holders give permission
21  *  to link the code of portions of this program with the OpenSSL library under
22  *  certain conditions as described in each individual source file, and
23  *  distribute linked combinations including the two. You must obey the GNU
24  *  General Public License in all respects for all of the code used other than
25  *  OpenSSL. If you modify file(s) with this exception, you may extend this
26  *  exception to your version of the file(s), but you are not obligated to do
27  *  so. If you do not wish to do so, delete this exception statement from your
28  *  version.  If you delete this exception statement from all source files in
29  *  the program, then also delete it here.
30  *
31  *  Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
32  *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
33  *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
34  *  details.
35  *
36  *  You should have received a copy of the GNU General Public License along
37  *  with Slurm; if not, write to the Free Software Foundation, Inc.,
38  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
39 \*****************************************************************************/
40 #ifndef _SLURM_ERRNO_H
41 #define _SLURM_ERRNO_H
42 
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46 
47 #include <errno.h>
48 
49 /* set errno to the specified value - then return -1 */
50 #define slurm_seterrno_ret(errnum) do { \
51 	slurm_seterrno(errnum);         \
52 	return (errnum ? -1 : 0);       \
53 	} while (0)
54 
55 /* general return codes */
56 #define SLURM_SUCCESS   0
57 #define SLURM_ERROR    -1
58 
59 enum {
60 	/* General Message error codes */
61 	SLURM_UNEXPECTED_MSG_ERROR = 			1000,
62 	SLURM_COMMUNICATIONS_CONNECTION_ERROR,
63 	SLURM_COMMUNICATIONS_SEND_ERROR,
64 	SLURM_COMMUNICATIONS_RECEIVE_ERROR,
65 	SLURM_COMMUNICATIONS_SHUTDOWN_ERROR,
66 	SLURM_PROTOCOL_VERSION_ERROR,
67 	SLURM_PROTOCOL_IO_STREAM_VERSION_ERROR,
68 	SLURM_PROTOCOL_AUTHENTICATION_ERROR,
69 	SLURM_PROTOCOL_INSANE_MSG_LENGTH,
70 	SLURM_MPI_PLUGIN_NAME_INVALID,
71 	SLURM_MPI_PLUGIN_PRELAUNCH_SETUP_FAILED,
72 	SLURM_PLUGIN_NAME_INVALID,
73 	SLURM_UNKNOWN_FORWARD_ADDR,
74 
75 	/* communication failures to/from slurmctld */
76 	SLURMCTLD_COMMUNICATIONS_CONNECTION_ERROR =     1800,
77 	SLURMCTLD_COMMUNICATIONS_SEND_ERROR,
78 	SLURMCTLD_COMMUNICATIONS_RECEIVE_ERROR,
79 	SLURMCTLD_COMMUNICATIONS_SHUTDOWN_ERROR,
80 
81 	/* _info.c/communication layer RESPONSE_SLURM_RC message codes */
82 	SLURM_NO_CHANGE_IN_DATA =			1900,
83 
84 	/* slurmctld error codes */
85 	ESLURM_INVALID_PARTITION_NAME = 		2000,
86 	ESLURM_DEFAULT_PARTITION_NOT_SET,
87 	ESLURM_ACCESS_DENIED,
88 	ESLURM_JOB_MISSING_REQUIRED_PARTITION_GROUP,
89 	ESLURM_REQUESTED_NODES_NOT_IN_PARTITION,
90 	ESLURM_TOO_MANY_REQUESTED_CPUS,
91 	ESLURM_INVALID_NODE_COUNT,
92 	ESLURM_ERROR_ON_DESC_TO_RECORD_COPY,
93 	ESLURM_JOB_MISSING_SIZE_SPECIFICATION,
94 	ESLURM_JOB_SCRIPT_MISSING,
95 	ESLURM_USER_ID_MISSING =			2010,
96 	ESLURM_DUPLICATE_JOB_ID,
97 	ESLURM_PATHNAME_TOO_LONG,
98 	ESLURM_NOT_TOP_PRIORITY,
99 	ESLURM_REQUESTED_NODE_CONFIG_UNAVAILABLE,
100 	ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE,
101 	ESLURM_NODES_BUSY,
102 	ESLURM_INVALID_JOB_ID,
103 	ESLURM_INVALID_NODE_NAME,
104 	ESLURM_WRITING_TO_FILE,
105 	ESLURM_TRANSITION_STATE_NO_UPDATE =		2020,
106 	ESLURM_ALREADY_DONE,
107 	ESLURM_INTERCONNECT_FAILURE,
108 	ESLURM_BAD_DIST,
109 	ESLURM_JOB_PENDING,
110 	ESLURM_BAD_TASK_COUNT,
111 	ESLURM_INVALID_JOB_CREDENTIAL,
112 	ESLURM_IN_STANDBY_MODE,
113 	ESLURM_INVALID_NODE_STATE,
114 	ESLURM_INVALID_FEATURE,
115 	ESLURM_INVALID_AUTHTYPE_CHANGE =		2030,
116 	ESLURM_ACTIVE_FEATURE_NOT_SUBSET,
117 	ESLURM_INVALID_SCHEDTYPE_CHANGE,
118 	ESLURM_INVALID_SELECTTYPE_CHANGE,
119 	ESLURM_INVALID_SWITCHTYPE_CHANGE,
120 	ESLURM_FRAGMENTATION,
121 	ESLURM_NOT_SUPPORTED,
122 	ESLURM_DISABLED,
123 	ESLURM_DEPENDENCY,
124 	ESLURM_BATCH_ONLY,
125 	ESLURM_TASKDIST_ARBITRARY_UNSUPPORTED =		2040,
126 	ESLURM_TASKDIST_REQUIRES_OVERCOMMIT,
127 	ESLURM_JOB_HELD,
128 	ESLURM_INVALID_CRED_TYPE_CHANGE,
129 	ESLURM_INVALID_TASK_MEMORY,
130 	ESLURM_INVALID_ACCOUNT,
131 	ESLURM_INVALID_PARENT_ACCOUNT,
132 	ESLURM_SAME_PARENT_ACCOUNT,
133 	ESLURM_INVALID_LICENSES,
134 	ESLURM_NEED_RESTART,
135 	ESLURM_ACCOUNTING_POLICY =			2050,
136 	ESLURM_INVALID_TIME_LIMIT,
137 	ESLURM_RESERVATION_ACCESS,
138 	ESLURM_RESERVATION_INVALID,
139 	ESLURM_INVALID_TIME_VALUE,
140 	ESLURM_RESERVATION_BUSY,
141 	ESLURM_RESERVATION_NOT_USABLE,
142 	ESLURM_INVALID_WCKEY,
143 	ESLURM_RESERVATION_OVERLAP,
144 	ESLURM_PORTS_BUSY,
145 	ESLURM_PORTS_INVALID =				2060,
146 	ESLURM_PROLOG_RUNNING,
147 	ESLURM_NO_STEPS,
148 	ESLURM_INVALID_BLOCK_STATE,
149 	ESLURM_INVALID_BLOCK_LAYOUT,
150 	ESLURM_INVALID_BLOCK_NAME,
151 	ESLURM_INVALID_QOS,
152 	ESLURM_QOS_PREEMPTION_LOOP,
153 	ESLURM_NODE_NOT_AVAIL,
154 	ESLURM_INVALID_CPU_COUNT,
155 	ESLURM_PARTITION_NOT_AVAIL =			2070,
156 	ESLURM_CIRCULAR_DEPENDENCY,
157 	ESLURM_INVALID_GRES,
158 	ESLURM_JOB_NOT_PENDING,
159 	ESLURM_QOS_THRES,
160 	ESLURM_PARTITION_IN_USE,
161 	ESLURM_STEP_LIMIT,
162 	ESLURM_JOB_SUSPENDED,
163 	ESLURM_CAN_NOT_START_IMMEDIATELY,
164 	ESLURM_INTERCONNECT_BUSY,
165 	ESLURM_RESERVATION_EMPTY =			2080,
166 	ESLURM_INVALID_ARRAY,
167 	ESLURM_RESERVATION_NAME_DUP,
168 	ESLURM_JOB_STARTED,
169 	ESLURM_JOB_FINISHED,
170 	ESLURM_JOB_NOT_RUNNING,
171 	ESLURM_JOB_NOT_PENDING_NOR_RUNNING,
172 	ESLURM_JOB_NOT_SUSPENDED,
173 	ESLURM_JOB_NOT_FINISHED,
174 	ESLURM_TRIGGER_DUP,
175 	ESLURM_INTERNAL =				2090,
176 	ESLURM_INVALID_BURST_BUFFER_CHANGE,
177 	ESLURM_BURST_BUFFER_PERMISSION,
178 	ESLURM_BURST_BUFFER_LIMIT,
179 	ESLURM_INVALID_BURST_BUFFER_REQUEST,
180 	ESLURM_PRIO_RESET_FAIL,
181 	ESLURM_POWER_NOT_AVAIL,
182 	ESLURM_POWER_RESERVED,
183 	ESLURM_INVALID_POWERCAP,
184 	ESLURM_INVALID_MCS_LABEL,
185 	ESLURM_BURST_BUFFER_WAIT =			2100,
186 	ESLURM_PARTITION_DOWN,
187 	ESLURM_DUPLICATE_GRES,
188 	ESLURM_JOB_SETTING_DB_INX,
189 	ESLURM_RSV_ALREADY_STARTED,
190 	ESLURM_SUBMISSIONS_DISABLED,
191 	ESLURM_NOT_HET_JOB,
192 	ESLURM_NOT_HET_JOB_LEADER,
193 	ESLURM_NOT_WHOLE_HET_JOB,
194 	ESLURM_CORE_RESERVATION_UPDATE,
195 	ESLURM_DUPLICATE_STEP_ID =			2110,
196 	ESLURM_INVALID_CORE_CNT,
197 	ESLURM_X11_NOT_AVAIL,
198 	ESLURM_GROUP_ID_MISSING,
199 	ESLURM_BATCH_CONSTRAINT,
200 	ESLURM_INVALID_TRES,
201 	ESLURM_INVALID_TRES_BILLING_WEIGHTS,
202 	ESLURM_INVALID_JOB_DEFAULTS,
203 	ESLURM_RESERVATION_MAINT,
204 	ESLURM_INVALID_GRES_TYPE,
205 	ESLURM_REBOOT_IN_PROGRESS =			2120,
206 	ESLURM_MULTI_KNL_CONSTRAINT,
207 	ESLURM_UNSUPPORTED_GRES,
208 	ESLURM_INVALID_NICE,
209 	ESLURM_INVALID_TIME_MIN_LIMIT,
210 	ESLURM_DEFER,
211 	ESLURM_CONFIGLESS_DISABLED,
212 	ESLURM_ENVIRONMENT_MISSING,
213 
214 	/* slurmd error codes */
215 	ESLURMD_PIPE_ERROR_ON_TASK_SPAWN =		4000,
216 	ESLURMD_KILL_TASK_FAILED,
217 	ESLURMD_KILL_JOB_ALREADY_COMPLETE,
218 	ESLURMD_INVALID_ACCT_FREQ,
219 	ESLURMD_INVALID_JOB_CREDENTIAL,
220 	ESLURMD_UID_NOT_FOUND,
221 	ESLURMD_GID_NOT_FOUND,
222 	ESLURMD_CREDENTIAL_EXPIRED,
223 	ESLURMD_CREDENTIAL_REVOKED,
224 	ESLURMD_CREDENTIAL_REPLAYED,
225 	ESLURMD_CREATE_BATCH_DIR_ERROR =		4010,
226 	ESLURMD_MODIFY_BATCH_DIR_ERROR,
227 	ESLURMD_CREATE_BATCH_SCRIPT_ERROR,
228 	ESLURMD_MODIFY_BATCH_SCRIPT_ERROR,
229 	ESLURMD_SETUP_ENVIRONMENT_ERROR,
230 	ESLURMD_SHARED_MEMORY_ERROR,
231 	ESLURMD_SET_UID_OR_GID_ERROR,
232 	ESLURMD_SET_SID_ERROR,
233 	ESLURMD_CANNOT_SPAWN_IO_THREAD,
234 	ESLURMD_FORK_FAILED,
235 	ESLURMD_EXECVE_FAILED =				4020,
236 	ESLURMD_IO_ERROR,
237 	ESLURMD_PROLOG_FAILED,
238 	ESLURMD_EPILOG_FAILED,
239 	ESLURMD_SESSION_KILLED,
240 	ESLURMD_TOOMANYSTEPS,
241 	ESLURMD_STEP_EXISTS,
242 	ESLURMD_JOB_NOTRUNNING,
243 	ESLURMD_STEP_SUSPENDED,
244 	ESLURMD_STEP_NOTSUSPENDED,
245 	ESLURMD_INVALID_SOCKET_NAME_LEN =		4030,
246 
247 	/* slurmd errors in user batch job */
248 	ESCRIPT_CHDIR_FAILED =			4100,
249 	ESCRIPT_OPEN_OUTPUT_FAILED,
250 	ESCRIPT_NON_ZERO_RETURN,
251 
252 	/* socket specific Slurm communications error */
253 	SLURM_PROTOCOL_SOCKET_IMPL_ZERO_RECV_LENGTH =	5000,
254 	SLURM_PROTOCOL_SOCKET_IMPL_NEGATIVE_RECV_LENGTH,
255 	SLURM_PROTOCOL_SOCKET_IMPL_NOT_ALL_DATA_SENT,
256 	ESLURM_PROTOCOL_INCOMPLETE_PACKET ,
257 	SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT ,
258 	SLURM_PROTOCOL_SOCKET_ZERO_BYTES_SENT,
259 
260 	/* slurm_auth errors */
261 	ESLURM_AUTH_CRED_INVALID	= 6000,
262 	ESLURM_AUTH_FOPEN_ERROR,
263 	ESLURM_AUTH_NET_ERROR,
264 	ESLURM_AUTH_UNABLE_TO_SIGN,
265 	ESLURM_AUTH_BADARG,
266 	ESLURM_AUTH_MEMORY,
267 	ESLURM_AUTH_INVALID,
268 	ESLURM_AUTH_UNPACK,
269 
270 	/* accounting errors */
271 	ESLURM_DB_CONNECTION            = 7000,
272 	ESLURM_JOBS_RUNNING_ON_ASSOC,
273 	ESLURM_CLUSTER_DELETED,
274 	ESLURM_ONE_CHANGE,
275 	ESLURM_BAD_NAME,
276 	ESLURM_OVER_ALLOCATE,
277 	ESLURM_RESULT_TOO_LARGE,
278 	ESLURM_DB_QUERY_TOO_WIDE,
279 
280 	/* Federation Errors */
281 	ESLURM_FED_CLUSTER_MAX_CNT              = 7100,
282 	ESLURM_FED_CLUSTER_MULTIPLE_ASSIGNMENT,
283 	ESLURM_INVALID_CLUSTER_FEATURE,
284 	ESLURM_JOB_NOT_FEDERATED,
285 	ESLURM_INVALID_CLUSTER_NAME,
286 	ESLURM_FED_JOB_LOCK,
287 	ESLURM_FED_NO_VALID_CLUSTERS,
288 
289 	/* plugin and custom errors */
290 	ESLURM_MISSING_TIME_LIMIT       = 8000,
291 	ESLURM_INVALID_KNL
292 };
293 
294 /* look up an errno value */
295 char * slurm_strerror(int errnum);
296 
297 /* set an errno value */
298 void slurm_seterrno(int errnum);
299 
300 /* get an errno value */
301 int slurm_get_errno(void);
302 
303 /* print message: error string for current errno value */
304 void slurm_perror(const char *msg);
305 
306 #ifdef __cplusplus
307 }
308 #endif
309 
310 #endif /* !_SLURM_ERRNO_H */
311