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