diff --git a/src/common/node_select.c b/src/common/node_select.c index 97a717bcc05858ee595c76dffa4ff9dd1acc7965..34dd3684e15a03071c1eabddbeccbf9e847dbdf2 100644 --- a/src/common/node_select.c +++ b/src/common/node_select.c @@ -632,13 +632,10 @@ static int _unpack_node_info(bg_info_record_t *bg_info_record, Buf buffer) uint32_t uint32_tmp; char *bp_inx_str; - safe_unpackstr_xmalloc(&(bg_info_record->nodes), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(bg_info_record->ionodes), &uint16_tmp, - buffer); - safe_unpackstr_xmalloc(&bg_info_record->owner_name, &uint16_tmp, - buffer); - safe_unpackstr_xmalloc(&bg_info_record->bg_block_id, &uint16_tmp, - buffer); + safe_unpackstr_xmalloc(&(bg_info_record->nodes), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(bg_info_record->ionodes), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&bg_info_record->owner_name, &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&bg_info_record->bg_block_id, &uint32_tmp, buffer); safe_unpack16(&uint16_tmp, buffer); bg_info_record->state = (int) uint16_tmp; @@ -652,27 +649,27 @@ static int _unpack_node_info(bg_info_record_t *bg_info_record, Buf buffer) bg_info_record->nodecard = (int) uint16_tmp; safe_unpack32(&uint32_tmp, buffer); bg_info_record->node_cnt = (int) uint32_tmp; - safe_unpackstr_xmalloc(&bp_inx_str, &uint16_tmp, buffer); + safe_unpackstr_xmalloc(&bp_inx_str, &uint32_tmp, buffer); if (bp_inx_str == NULL) { bg_info_record->bp_inx = bitfmt2int(""); } else { bg_info_record->bp_inx = bitfmt2int(bp_inx_str); xfree(bp_inx_str); } - safe_unpackstr_xmalloc(&bp_inx_str, &uint16_tmp, buffer); + safe_unpackstr_xmalloc(&bp_inx_str, &uint32_tmp, buffer); if (bp_inx_str == NULL) { bg_info_record->ionode_inx = bitfmt2int(""); } else { bg_info_record->ionode_inx = bitfmt2int(bp_inx_str); xfree(bp_inx_str); } - safe_unpackstr_xmalloc(&bg_info_record->blrtsimage, &uint16_tmp, + safe_unpackstr_xmalloc(&bg_info_record->blrtsimage, &uint32_tmp, buffer); - safe_unpackstr_xmalloc(&bg_info_record->linuximage, &uint16_tmp, + safe_unpackstr_xmalloc(&bg_info_record->linuximage, &uint32_tmp, buffer); - safe_unpackstr_xmalloc(&bg_info_record->mloaderimage, &uint16_tmp, + safe_unpackstr_xmalloc(&bg_info_record->mloaderimage, &uint32_tmp, buffer); - safe_unpackstr_xmalloc(&bg_info_record->ramdiskimage, &uint16_tmp, + safe_unpackstr_xmalloc(&bg_info_record->ramdiskimage, &uint32_tmp, buffer); return SLURM_SUCCESS; @@ -1046,7 +1043,7 @@ extern int select_g_pack_jobinfo (select_jobinfo_t jobinfo, Buf buffer) extern int select_g_unpack_jobinfo(select_jobinfo_t jobinfo, Buf buffer) { int i; - uint16_t uint16_tmp; + uint32_t uint32_tmp; for (i=0; i<SYSTEM_DIMENSIONS; i++) { safe_unpack16(&(jobinfo->start[i]), buffer); @@ -1059,12 +1056,12 @@ extern int select_g_unpack_jobinfo(select_jobinfo_t jobinfo, Buf buffer) safe_unpack32(&(jobinfo->node_cnt), buffer); safe_unpack32(&(jobinfo->max_procs), buffer); - safe_unpackstr_xmalloc(&(jobinfo->bg_block_id), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(jobinfo->ionodes), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(jobinfo->blrtsimage), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(jobinfo->linuximage), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(jobinfo->mloaderimage), &uint16_tmp, buffer); - safe_unpackstr_xmalloc(&(jobinfo->ramdiskimage), &uint16_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->bg_block_id), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->ionodes), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->blrtsimage), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->linuximage), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->mloaderimage), &uint32_tmp, buffer); + safe_unpackstr_xmalloc(&(jobinfo->ramdiskimage), &uint32_tmp, buffer); return SLURM_SUCCESS; diff --git a/src/plugins/sched/wiki2/Makefile.am b/src/plugins/sched/wiki2/Makefile.am index 4f7570b48903632bf68cbad4a61ecfc221d02cac..24a352673dd28adbadba95190fc0b92c4a1a6cee 100644 --- a/src/plugins/sched/wiki2/Makefile.am +++ b/src/plugins/sched/wiki2/Makefile.am @@ -25,6 +25,7 @@ sched_wiki2_la_SOURCES = \ job_release_task.c \ job_requeue.c \ job_signal.c \ + job_will_run.c \ msg.c \ msg.h \ resume_job.c \ diff --git a/src/plugins/sched/wiki2/Makefile.in b/src/plugins/sched/wiki2/Makefile.in index 8c5ad353c76c0b544203224c18dc5ec3aa0f97c0..484fd090fd27c364c1032c8cea84704db0b99913 100644 --- a/src/plugins/sched/wiki2/Makefile.in +++ b/src/plugins/sched/wiki2/Makefile.in @@ -78,8 +78,9 @@ sched_wiki2_la_LIBADD = am_sched_wiki2_la_OBJECTS = cancel_job.lo crypto.lo event.lo \ get_jobs.lo get_nodes.lo hostlist.lo initialize.lo \ job_add_task.lo job_modify.lo job_notify.lo \ - job_release_task.lo job_requeue.lo job_signal.lo msg.lo \ - resume_job.lo sched_wiki.lo start_job.lo suspend_job.lo + job_release_task.lo job_requeue.lo job_signal.lo \ + job_will_run.lo msg.lo resume_job.lo sched_wiki.lo \ + start_job.lo suspend_job.lo sched_wiki2_la_OBJECTS = $(am_sched_wiki2_la_OBJECTS) sched_wiki2_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ @@ -282,6 +283,7 @@ sched_wiki2_la_SOURCES = \ job_release_task.c \ job_requeue.c \ job_signal.c \ + job_will_run.c \ msg.c \ msg.h \ resume_job.c \ @@ -372,6 +374,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job_release_task.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job_requeue.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job_signal.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/job_will_run.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msg.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resume_job.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sched_wiki.Plo@am__quote@ diff --git a/src/plugins/sched/wiki2/msg.c b/src/plugins/sched/wiki2/msg.c index 2834efc02ceecc9703954362d68dffe6a88bc8c8..d7a99be6f435f677bd1e6185bfdb76297493932c 100644 --- a/src/plugins/sched/wiki2/msg.c +++ b/src/plugins/sched/wiki2/msg.c @@ -619,6 +619,9 @@ static void _proc_msg(slurm_fd new_fd, char *msg) } else if (strncmp(cmd_ptr, "JOBRELEASETASK", 14) == 0) { msg_type = "wiki:JOBRELEASETASK"; job_release_task(cmd_ptr, &err_code, &err_msg); + } else if (strncmp(cmd_ptr, "JOBWILLRUN", 10) == 0) { + msg_type = "wiki:JOBWILLRUN"; + job_will_run(cmd_ptr, &err_code, &err_msg); } else if (strncmp(cmd_ptr, "MODIFYJOB", 9) == 0) { msg_type = "wiki:MODIFYJOB"; job_modify_wiki(cmd_ptr, &err_code, &err_msg); diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c index 9495926ada6815e5d7f5ea0101f9c07e48247fdd..2ac2d6b8a1b4c6317529ea014ba2abbbfc6fef3f 100644 --- a/src/slurmctld/node_scheduler.c +++ b/src/slurmctld/node_scheduler.c @@ -93,15 +93,16 @@ static int _build_node_list(struct job_record *job_ptr, static void _feature_list_delete(void *x); static void _filter_nodes_in_set(struct node_set *node_set_ptr, struct job_details *detail_ptr); -static int _job_count_bitmap(bitstr_t * bitmap, bitstr_t * jobmap, - int job_cnt); static int _match_feature(char *seek, char *available); static int _nodes_in_sets(bitstr_t *req_bitmap, struct node_set * node_set_ptr, int node_set_size); +#ifndef HAVE_BG static int _pick_best_load(struct job_record *job_ptr, bitstr_t * bitmap, uint32_t min_nodes, uint32_t max_nodes, uint32_t req_nodes, bool test_only); + +#endif static int _pick_best_nodes(struct node_set *node_set_ptr, int node_set_size, bitstr_t ** select_bitmap, struct job_record *job_ptr, @@ -270,7 +271,7 @@ static int _match_feature(char *seek, char *available) return found; } - +#ifndef HAVE_BG /* * _pick_best_load - Given a specification of scheduling requirements, * identify the nodes which "best" satisfy the request. @@ -344,6 +345,7 @@ _job_count_bitmap(bitstr_t * bitmap, bitstr_t * jobmap, int job_cnt) } return count; } +#endif /* * Decide if a job can share nodes with other jobs based on the