diff --git a/src/slurmctld/node_scheduler.c b/src/slurmctld/node_scheduler.c index b073a56a8fc5691a170946369174f92632fb81a7..28293994225d969bcb6931bf0a7930c80fd1d439 100644 --- a/src/slurmctld/node_scheduler.c +++ b/src/slurmctld/node_scheduler.c @@ -681,8 +681,8 @@ static int _match_feature(char *seek, struct node_set *node_set_ptr) * 1 = exclusive * * Return values: - * 0 = no sharing - * 1 = share resources + * 0 = requires idle nodes + * 1 = can use non-idle nodes */ static int _resolve_shared_status(struct job_record *job_ptr, uint16_t part_max_share, @@ -691,28 +691,36 @@ _resolve_shared_status(struct job_record *job_ptr, uint16_t part_max_share, /* no sharing if partition Shared=EXCLUSIVE */ if (part_max_share == 0) { job_ptr->details->whole_node = 1; + job_ptr->details->share_res = 0; return 0; } /* sharing if partition Shared=FORCE with count > 1 */ if ((part_max_share & SHARED_FORCE) && - ((part_max_share & (~SHARED_FORCE)) > 1)) + ((part_max_share & (~SHARED_FORCE)) > 1)) { + job_ptr->details->share_res = 1; return 1; + } if (cons_res_flag) { if ((job_ptr->details->share_res == 0) || - (job_ptr->details->whole_node == 1)) + (job_ptr->details->whole_node == 1)) { + job_ptr->details->share_res = 0; return 0; + } return 1; } else { job_ptr->details->whole_node = 1; - if (part_max_share == 1) /* partition configured Shared=NO */ + if (part_max_share == 1) { /* partition configured Shared=NO */ + job_ptr->details->share_res = 0; return 0; + } /* share if the user requested it */ if (job_ptr->details->share_res == 1) return 1; + job_ptr->details->share_res = 0; + return 0; } - return 0; } /* @@ -1075,7 +1083,6 @@ _pick_best_nodes(struct node_set *node_set_ptr, int node_set_size, shared = _resolve_shared_status(job_ptr, part_ptr->max_share, cr_enabled); - job_ptr->details->share_res = shared; if (cr_enabled) job_ptr->cr_enabled = cr_enabled; /* CR enabled for this job */