diff --git a/src/plugins/select/cons_res/select_cons_res.c b/src/plugins/select/cons_res/select_cons_res.c index ba49ea0fbf42dd32807940c94e6fe0ca44207a11..b67241d86e6039a8765f6f4a24e3667f33edb941 100644 --- a/src/plugins/select/cons_res/select_cons_res.c +++ b/src/plugins/select/cons_res/select_cons_res.c @@ -573,9 +573,8 @@ static void _build_row_bitmaps(struct part_res_record *p_ptr, struct job_record *job_ptr) { uint32_t i, j, num_jobs, size; - int x, *jstart; + int x; struct part_row_data *this_row, *orig_row; - struct job_resources **tmpjobs; struct sort_support *ss; if (!p_ptr->row) @@ -641,19 +640,15 @@ static void _build_row_bitmaps(struct part_res_record *p_ptr, size = bit_size(p_ptr->row[0].row_bitmap); /* create a master job list and clear out ALL row data */ - tmpjobs = xmalloc(num_jobs * sizeof(struct job_resources *)); - jstart = xmalloc(num_jobs * sizeof(int)); ss = xmalloc(num_jobs * sizeof(struct sort_support)); x = 0; for (i = 0; i < p_ptr->num_rows; i++) { for (j = 0; j < p_ptr->row[i].num_jobs; j++) { - tmpjobs[x] = p_ptr->row[i].job_list[j]; + ss[x].tmpjobs = p_ptr->row[i].job_list[j]; p_ptr->row[i].job_list[j] = NULL; - jstart[x] = bit_ffs(tmpjobs[x]->node_bitmap); - jstart[x] = cr_get_coremap_offset(jstart[x]); - jstart[x] += bit_ffs(tmpjobs[x]->core_bitmap); - ss[x].jstart = jstart[x]; - ss[x].tmpjobs = tmpjobs[x]; + ss[x].jstart = bit_ffs(ss[x].tmpjobs->node_bitmap); + ss[x].jstart = cr_get_coremap_offset(ss[x].jstart); + ss[x].jstart += bit_ffs(ss[x].tmpjobs->core_bitmap); x++; } p_ptr->row[i].num_jobs = 0; @@ -672,36 +667,32 @@ static void _build_row_bitmaps(struct part_res_record *p_ptr, * - fixme: JOB SHUFFLING BETWEEN ROWS NEEDS TESTING */ qsort(ss, num_jobs, sizeof(struct sort_support), _compare_support); - for (i = 0; i < num_jobs; i++) { - jstart[i] = ss[i].jstart; - tmpjobs[i] = ss[i].tmpjobs; - } - if (select_debug_flags & DEBUG_FLAG_CPU_BIND) { for (i = 0; i < num_jobs; i++) { char cstr[64], nstr[64]; - if (tmpjobs[i]->core_bitmap) { + if (ss[i].tmpjobs->core_bitmap) { bit_fmt(cstr, (sizeof(cstr)-1) , - tmpjobs[i]->core_bitmap); + ss[i].tmpjobs->core_bitmap); } else sprintf(cstr, "[no core_bitmap]"); - if (tmpjobs[i]->node_bitmap) { + if (ss[i].tmpjobs->node_bitmap) { bit_fmt(nstr, (sizeof(nstr)-1), - tmpjobs[i]->node_bitmap); + ss[i].tmpjobs->node_bitmap); } else sprintf(nstr, "[no node_bitmap]"); - info("DEBUG: jstart %d job nb %s cb %s", jstart[i], - nstr, cstr); + info("DEBUG: jstart %d job nb %s cb %s", + ss[i].jstart, nstr, cstr); } } /* add jobs to the rows */ for (j = 0; j < num_jobs; j++) { for (i = 0; i < p_ptr->num_rows; i++) { - if (_can_job_fit_in_row(tmpjobs[j], &(p_ptr->row[i]))) { + if (_can_job_fit_in_row(ss[j].tmpjobs, + &(p_ptr->row[i]))) { /* job fits in row, so add it */ - _add_job_to_row(tmpjobs[j], &(p_ptr->row[i])); - tmpjobs[j] = NULL; + _add_job_to_row(ss[j].tmpjobs,&(p_ptr->row[i])); + ss[j].tmpjobs = NULL; break; } } @@ -711,7 +702,7 @@ static void _build_row_bitmaps(struct part_res_record *p_ptr, /* test for dangling jobs */ for (j = 0; j < num_jobs; j++) { - if (tmpjobs[j]) + if (ss[j].tmpjobs) break; } if (j < num_jobs) { @@ -751,8 +742,6 @@ static void _build_row_bitmaps(struct part_res_record *p_ptr, if (orig_row) _destroy_row_data(orig_row, p_ptr->num_rows); - xfree(tmpjobs); - xfree(jstart); xfree(ss); return;