From 7dc8a327b5c3a48c726d4a3ac52886eaa86e736d Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Tue, 2 Jul 2013 14:04:27 -0700
Subject: [PATCH] Make job ID value available to slurmd daemon in sbcast RPC

---
 src/slurmd/slurmd/req.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/slurmd/slurmd/req.c b/src/slurmd/slurmd/req.c
index 80db251dd79..b6a02a1b57e 100644
--- a/src/slurmd/slurmd/req.c
+++ b/src/slurmd/slurmd/req.c
@@ -188,7 +188,7 @@ static int  _waiter_complete (uint32_t jobid);
 
 static bool _steps_completed_now(uint32_t jobid);
 static int  _valid_sbcast_cred(file_bcast_msg_t *req, uid_t req_uid,
-			       uint16_t block_no);
+			       uint16_t block_no, uint32_t *job_id);
 static void _wait_state_completed(uint32_t jobid, int max_delay);
 static long _get_job_uid(uint32_t jobid);
 
@@ -2692,15 +2692,16 @@ _get_grouplist(uid_t my_uid, gid_t my_gid, int *ngroups, gid_t **groups)
  * Munge without generating a credential replay error
  * RET SLURM_SUCCESS or an error code */
 static int
-_valid_sbcast_cred(file_bcast_msg_t *req, uid_t req_uid, uint16_t block_no)
+_valid_sbcast_cred(file_bcast_msg_t *req, uid_t req_uid, uint16_t block_no,
+		   uint32_t *job_id)
 {
 	int rc = SLURM_SUCCESS;
-	uint32_t job_id;
 	char *nodes = NULL;
 	hostset_t hset = NULL;
 
+	*job_id = NO_VAL;
 	rc = extract_sbcast_cred(conf->vctx, req->cred, block_no,
-				 &job_id, &nodes);
+				 job_id, &nodes);
 	if (rc != 0) {
 		error("Security violation: Invalid sbcast_cred from uid %d",
 		      req_uid);
@@ -2734,6 +2735,7 @@ _rpc_file_bcast(slurm_msg_t *msg)
 	uid_t req_uid = g_slurm_auth_get_uid(msg->auth_cred, NULL);
 	gid_t req_gid = g_slurm_auth_get_gid(msg->auth_cred, NULL);
 	pid_t child;
+	uint32_t job_id;
 
 #if 0
 	info("last_block=%u force=%u modes=%o",
@@ -2748,14 +2750,17 @@ _rpc_file_bcast(slurm_msg_t *msg)
 #endif
 #endif
 
-	if (!_slurm_authorized_user(req_uid)) {
-		rc = _valid_sbcast_cred(req, req_uid, req->block_no);
-		if (rc != SLURM_SUCCESS)
-			return rc;
-	}
+	rc = _valid_sbcast_cred(req, req_uid, req->block_no, &job_id);
+	if ((rc != SLURM_SUCCESS) && !_slurm_authorized_user(req_uid))
+		return rc;
 
-	info("sbcast req_uid=%u fname=%s block_no=%u",
-	     req_uid, req->fname, req->block_no);
+	if (req->block_no == 1) {
+		info("sbcast req_uid=%u job_id=%u fname=%s block_no=%u",
+		     req_uid, job_id, req->fname, req->block_no);
+	} else {
+		debug("sbcast req_uid=%u job_id=%u fname=%s block_no=%u",
+		      req_uid, job_id, req->fname, req->block_no);
+	}
 
 	if ((rc = _get_grouplist(req_uid, req_gid, &ngroups, &groups)) < 0) {
 		error("sbcast: getgrouplist(%u): %m", req_uid);
-- 
GitLab