diff --git a/src/slurmctld/job_mgr.c b/src/slurmctld/job_mgr.c index 083284848e470ad98d31e00a59e5e6004d3f326f..47c60db0ee82dbedbe0bf3aff25617690ce8872b 100644 --- a/src/slurmctld/job_mgr.c +++ b/src/slurmctld/job_mgr.c @@ -6921,6 +6921,7 @@ int update_job(job_desc_msg_t * job_specs, uid_t uid) if (job_specs->partition) { List part_ptr_list = NULL; + bool old_res = false; if (!IS_JOB_PENDING(job_ptr)) { error_code = ESLURM_DISABLED; @@ -6937,9 +6938,21 @@ int update_job(job_desc_msg_t * job_specs, uid_t uid) job_specs->time_min = job_ptr->time_min; if (job_specs->time_limit == NO_VAL) job_specs->time_limit = job_ptr->time_limit; + if (!job_specs->reservation + || !strlen(job_specs->reservation)) { + /* just incase the reservation is '' */ + xfree(job_specs->reservation); + job_specs->reservation = job_ptr->resv_name; + old_res = true; + } + error_code = _valid_job_part(job_specs, uid, job_ptr->details->req_node_bitmap, &tmp_part_ptr, &part_ptr_list); + + if (old_res) + job_specs->reservation = NULL; + if (error_code != SLURM_SUCCESS) ; else if ((tmp_part_ptr->state_up & PARTITION_SUBMIT) == 0)