From 8636ddcf23adf68b480507c84c0951229e34208d Mon Sep 17 00:00:00 2001
From: Mark Grondona <mgrondona@llnl.gov>
Date: Fri, 20 Sep 2002 15:16:58 +0000
Subject: [PATCH]  o avoid case where HighContext exceeds max user context when
 running    more than 1 process per node (and generating random hw contexts)

---
 src/common/qsw.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/common/qsw.c b/src/common/qsw.c
index 787d16e77cb..901e4e14954 100644
--- a/src/common/qsw.c
+++ b/src/common/qsw.c
@@ -406,7 +406,7 @@ _generate_hwcontext(int num)
 		_unlock_qsw();
 	} else {
 		_srand_if_needed();
-		new = lrand48() % (QSW_CTX_END - QSW_CTX_START + 1);
+		new = lrand48() % (QSW_CTX_END - (QSW_CTX_START + num - 1) + 1);
 		new +=  QSW_CTX_START;
 	}
 	return new;
@@ -605,6 +605,7 @@ qsw_prog_init(qsw_jobinfo_t jobinfo, uid_t uid)
 			slurm_seterrno(EELAN3CONTROL);
 			goto fail;
 		}
+		
 	
 		/* make cap known via rms_getcap/rms_ncaps to members 
 		 * of this prgnum */
@@ -828,6 +829,7 @@ _print_capbitmap(FILE *fp, ELAN_CAPABILITY *cap)
 	fprintf(fp, "\n");
 }
 
+#define _USE_ELAN3_CAPABILITY_STRING 1
 void
 qsw_print_jobinfo(FILE *fp, struct qsw_jobinfo *jobinfo)
 {
@@ -841,8 +843,9 @@ qsw_print_jobinfo(FILE *fp, struct qsw_jobinfo *jobinfo)
 
 	cap = &jobinfo->j_cap;
 	/* use elan3_capability_string as a shorter alternative for now */
+#if _USE_ELAN3_CAPABILITY_STRING
 	fprintf(fp, "%s\n", elan3_capability_string(cap, str));
-#if 0
+#else 
 	fprintf(fp, "cap.UserKey=%8.8x.%8.8x.%8.8x.%8.8x\n",
 			cap->UserKey.Values[0], cap->UserKey.Values[1],
 			cap->UserKey.Values[2], cap->UserKey.Values[3]);
-- 
GitLab