示例#1
0
文件: spawn.c 项目: corburn/slurm
extern int
spawn_resp_send_to_srun(spawn_resp_t *resp)
{
	Buf buf;
	int rc;
	uint16_t cmd;

	buf = init_buf(1024);

	cmd = TREE_CMD_SPAWN_RESP;
	pack16(cmd, buf);
	spawn_resp_pack(resp, buf);

	rc = tree_msg_to_srun(get_buf_offset(buf), get_buf_data(buf));
	free_buf(buf);
	return rc;
}
示例#2
0
文件: kvs.c 项目: SchedMD/slurm
extern int
temp_kvs_send(void)
{
	int rc = SLURM_ERROR, retry = 0;
	unsigned int delay = 1;
	char *nodelist = NULL;

	if (!in_stepd())	/* srun */
		nodelist = xstrdup(job_info.step_nodelist);
	else if (tree_info.parent_node)
		nodelist = xstrdup(tree_info.parent_node);

	/* cmd included in temp_kvs_buf */
	kvs_seq++; /* expecting new kvs after now */

	while (1) {
		if (retry == 1)
			verbose("failed to send temp kvs, rc=%d, retrying", rc);

		if (nodelist)
			/* srun or non-first-level stepds */
			rc = slurm_forward_data(&nodelist,
						tree_sock_addr,
						temp_kvs_cnt,
						temp_kvs_buf);
		else		/* first level stepds */
			rc = tree_msg_to_srun(temp_kvs_cnt, temp_kvs_buf);

		if (rc == SLURM_SUCCESS)
			break;

		if (++retry >= MAX_RETRIES)
			break;
		/* wait, in case parent stepd / srun not ready */
		sleep(delay);
		delay *= 2;
	}
	temp_kvs_init();	/* clear old temp kvs */

	xfree(nodelist);

	return rc;
}
示例#3
0
文件: kvs.c 项目: BYUHPC/slurm
extern int
temp_kvs_send(void)
{
	int rc = SLURM_ERROR, retry = 0;
	unsigned int delay = 1;

	/* cmd included in temp_kvs_buf */
	kvs_seq ++; /* expecting new kvs after now */

	while (1) {
		if (retry == 1) {
			verbose("failed to send temp kvs, rc=%d, retrying", rc);
		}
		if (! in_stepd()) {	/* srun */
			rc = tree_msg_to_stepds(job_info.step_nodelist,
						temp_kvs_cnt,
						temp_kvs_buf);
		} else if (tree_info.parent_node != NULL) {
			/* non-first-level stepds */
			rc = tree_msg_to_stepds(tree_info.parent_node,
						temp_kvs_cnt,
						temp_kvs_buf);
		} else {		/* first level stepds */
			rc = tree_msg_to_srun(temp_kvs_cnt, temp_kvs_buf);
		}
		if (rc == SLURM_SUCCESS)
			break;
		retry ++;
		if (retry >= MAX_RETRIES)
			break;
		/* wait, in case parent stepd / srun not ready */
		sleep(delay);
		delay *= 2;
	}
	temp_kvs_init();	/* clear old temp kvs */
	return rc;
}