From 4e56260fa78817fd6ab039b673aac652c3473f07 Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Fri, 6 Dec 2013 10:47:06 -0800 Subject: [PATCH] Fix for gres count change A abort has been reported if the node's gres count differs from it's bitmap. This has been induced by changing the count manually (e.g. scontrol update nodename=tux123 gres=gpu:4"). I have not been able to reproduce this problem, but this will resize the bitmap in order to avoid the assert failure. --- src/common/gres.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/common/gres.c b/src/common/gres.c index a74861ffc9e..cdacbbd1364 100644 --- a/src/common/gres.c +++ b/src/common/gres.c @@ -2910,6 +2910,14 @@ extern int _job_alloc(void *job_gres_data, void *node_gres_data, } else if (node_gres_ptr->gres_bit_alloc) { job_gres_ptr->gres_bit_alloc[node_offset] = bit_alloc(node_gres_ptr->gres_cnt_avail); + i = bit_size(node_gres_ptr->gres_bit_alloc); + if (i < node_gres_ptr->gres_cnt_avail) { + error("gres/%s: node %s gres bitmap size bad (%d < %u)", + i, node_gres_ptr->gres_cnt_avail); + node_gres_ptr->gres_bit_alloc = + bit_realloc(node_gres_ptr->gres_bit_alloc, + node_gres_ptr->gres_cnt_avail); + } for (i=0; i<node_gres_ptr->gres_cnt_avail && gres_cnt>0; i++) { if (bit_test(node_gres_ptr->gres_bit_alloc, i)) continue; -- GitLab