From d46c7607d374eb36bf64fac74ed17d922b3df2fe Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Thu, 6 Dec 2012 12:23:07 -0800 Subject: [PATCH] Reject job at submit tie if it can not run now due to reservation and can never run Previously the job would be accepted at job submit time if nodes required for its use (e.g. in a required node list or the node count) could not be satisfied at submit time due to an advanced reservation. Bug #187 --- src/slurmctld/node_scheduler.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c index d1ae5c78458..d906b983118 100644 --- a/src/slurmctld/node_scheduler.c +++ b/src/slurmctld/node_scheduler.c @@ -647,16 +647,18 @@ _get_req_features(struct node_set *node_set_ptr, int node_set_size, time_t start_res = time(NULL); rc = job_test_resv(job_ptr, &start_res, false, &resv_bitmap, &exc_core_bitmap); - if ((rc != SLURM_SUCCESS) || - (bit_set_count(resv_bitmap) < min_nodes) || - (job_ptr->details->req_node_bitmap && - (!bit_super_set(job_ptr->details->req_node_bitmap, - resv_bitmap)))) { + if (rc == ESLURM_NODES_BUSY) { + save_avail_node_bitmap = avail_node_bitmap; + avail_node_bitmap = bit_alloc(node_record_count); + FREE_NULL_BITMAP(resv_bitmap); + /* Continue executing through _pick_best_nodes() below + * in order reject job if it can never run */ + } else if (rc != SLURM_SUCCESS) { FREE_NULL_BITMAP(resv_bitmap); + FREE_NULL_BITMAP(exc_core_bitmap); return ESLURM_NODES_BUSY; /* reserved */ - } - if (resv_bitmap && - (!bit_equal(resv_bitmap, avail_node_bitmap))) { + } else if (resv_bitmap && + (!bit_equal(resv_bitmap, avail_node_bitmap))) { bit_and(resv_bitmap, avail_node_bitmap); save_avail_node_bitmap = avail_node_bitmap; avail_node_bitmap = resv_bitmap; -- GitLab