diff --git a/src/common/job_resources.c b/src/common/job_resources.c index 01b3d7d84d2c46b2cc4076846a38133c9e93057f..da9b97fc82da908e3acb2c72b15c427606cd9a98 100644 --- a/src/common/job_resources.c +++ b/src/common/job_resources.c @@ -529,15 +529,13 @@ extern void pack_job_resources(job_resources_t *job_resrcs_ptr, Buf buffer, { uint32_t cluster_flags = slurmdb_setup_cluster_flags(); - if(protocol_version >= SLURM_2_2_PROTOCOL_VERSION) { + if (protocol_version >= SLURM_2_2_PROTOCOL_VERSION) { if (job_resrcs_ptr == NULL) { uint32_t empty = NO_VAL; pack32(empty, buffer); return; } - xassert(job_resrcs_ptr->nhosts); - pack32(job_resrcs_ptr->nhosts, buffer); pack32(job_resrcs_ptr->ncpus, buffer); pack8(job_resrcs_ptr->node_req, buffer); @@ -616,8 +614,6 @@ extern void pack_job_resources(job_resources_t *job_resrcs_ptr, Buf buffer, return; } - xassert(job_resrcs_ptr->nhosts); - pack32(job_resrcs_ptr->nhosts, buffer); pack32(job_resrcs_ptr->ncpus, buffer); pack8(job_resrcs_ptr->node_req, buffer); diff --git a/src/plugins/select/linear/select_linear.c b/src/plugins/select/linear/select_linear.c index 7bb07bfb942c4db7e878e780d8242692beaba0ce..a10b0becd815a46072a584eb16d1ec314878ce29 100644 --- a/src/plugins/select/linear/select_linear.c +++ b/src/plugins/select/linear/select_linear.c @@ -1574,8 +1574,7 @@ static int _job_expand(struct job_record *from_job_ptr, build_job_resources(new_job_resrcs_ptr, node_record_table_ptr, select_fast_schedule); xfree(to_job_ptr->node_addr); - to_job_ptr->node_addr = xmalloc(sizeof(slurm_addr_t) * - to_job_ptr->total_nodes); + to_job_ptr->node_addr = xmalloc(sizeof(slurm_addr_t) * node_cnt); first_bit = MIN(bit_ffs(from_job_resrcs_ptr->node_bitmap), bit_ffs(to_job_resrcs_ptr->node_bitmap)); last_bit = MAX(bit_fls(from_job_resrcs_ptr->node_bitmap), @@ -1674,10 +1673,25 @@ static int _job_expand(struct job_record *from_job_ptr, to_job_ptr->job_resrcs = new_job_resrcs_ptr; to_job_ptr->total_cpus += from_job_ptr->total_cpus; - from_job_ptr->total_cpus = 0; - from_job_ptr->total_nodes = 0; - to_job_ptr->total_nodes = new_job_resrcs_ptr->nhosts; - from_job_ptr->total_nodes = 0; + if (to_job_ptr->details) { + to_job_ptr->details->min_cpus = to_job_ptr->total_cpus; + to_job_ptr->details->max_cpus = to_job_ptr->total_cpus; + } + from_job_ptr->total_cpus = 0; + from_job_resrcs_ptr->ncpus = 0; + if (from_job_ptr->details) { + from_job_ptr->details->min_cpus = 0; + from_job_ptr->details->max_cpus = 0; + } + + from_job_ptr->total_nodes = 0; + from_job_resrcs_ptr->nhosts = 0; + from_job_ptr->node_cnt = 0; + if (from_job_ptr->details) + from_job_ptr->details->min_nodes = 0; + to_job_ptr->total_nodes = new_job_resrcs_ptr->nhosts; + to_job_ptr->node_cnt = new_job_resrcs_ptr->nhosts; + bit_or(to_job_ptr->node_bitmap, from_job_ptr->node_bitmap); bit_nclear(from_job_ptr->node_bitmap, 0, (node_record_count - 1)); xfree(to_job_ptr->nodes);