From 0416c0b9225a2976bb6e4cae1e3e941f121ac957 Mon Sep 17 00:00:00 2001 From: tewk <tewk@unknown> Date: Fri, 12 Jul 2002 19:21:37 +0000 Subject: [PATCH] Fixed job kill rpc function --- src/slurmd/shmem_struct.c | 19 +++++++++++++++++++ src/slurmd/shmem_struct.h | 2 ++ src/slurmd/task_mgr.c | 22 +++++++++------------- 3 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/slurmd/shmem_struct.c b/src/slurmd/shmem_struct.c index 74903b21cd7..a8d5e93d38b 100644 --- a/src/slurmd/shmem_struct.c +++ b/src/slurmd/shmem_struct.c @@ -195,3 +195,22 @@ int find_job_id_for_session ( slurmd_shmem_t * shmem , int session_id ) info ( "No job_id found for session_id %i", session_id ); return SLURM_FAILURE ; } + +void * find_job_step ( slurmd_shmem_t * shmem , int job_id , int job_step_id ) +{ + int i ; + pthread_mutex_lock ( & shmem -> mutex ) ; + for ( i=0 ; i < MAX_JOB_STEPS ; i ++ ) + { + if (shmem -> job_steps[i].used == false + && shmem -> job_steps[i].job_id == job_id + && shmem -> job_steps[i].job_step_id == job_step_id + ) + { + pthread_mutex_unlock ( & shmem -> mutex ) ; + return & shmem -> job_steps[i] ; + } + } + pthread_mutex_unlock ( & shmem -> mutex ) ; + return (void * ) SLURM_ERROR ; +} diff --git a/src/slurmd/shmem_struct.h b/src/slurmd/shmem_struct.h index c3d1be92b49..a0cb853c7f8 100644 --- a/src/slurmd/shmem_struct.h +++ b/src/slurmd/shmem_struct.h @@ -54,4 +54,6 @@ void * alloc_task ( slurmd_shmem_t * shmem , job_step_t * job_step ) ; int find_job_id_for_session ( slurmd_shmem_t * shmem , int session_id ) ; /* clears a job_step and associated task list for future use */ int deallocate_job_step ( job_step_t * jobstep ) ; +/* find a particular job_step */ +void * find_job_step ( slurmd_shmem_t * shmem , int job_id , int job_step_id ) ; #endif diff --git a/src/slurmd/task_mgr.c b/src/slurmd/task_mgr.c index c2bafece4cf..87029880382 100644 --- a/src/slurmd/task_mgr.c +++ b/src/slurmd/task_mgr.c @@ -464,24 +464,20 @@ int setup_child_pipes ( int * pipes ) int kill_tasks ( kill_tasks_msg_t * kill_task_msg ) { int error_code = SLURM_SUCCESS ; - + slurmd_shmem_t * shmem_ptr = get_shmem ( ) ; + job_step_t * job_step_ptr = find_job_step ( shmem_ptr , kill_task_msg -> job_id , kill_task_msg -> job_step_id ) ; + task_t * task_ptr = job_step_ptr -> head_task ; + while ( task_ptr != NULL ) + { + kill_task ( task_ptr ) ; + task_ptr = task_ptr -> next ; + } return error_code ; } int kill_task ( task_t * task ) { - return SLURM_SUCCESS ; -} - -int setup_task_env (task_start_t * task_start ) -{ - int i ; - for ( i = 0 ; i < task_start -> launch_msg -> envc ; i ++ ) - { - char * env_var = xmalloc ( strlen ( task_start -> launch_msg -> env[i] ) ) ; - memcpy ( env_var , task_start -> launch_msg -> env[i] , strlen ( task_start -> launch_msg -> env[i] ) ) ; - putenv ( env_var ) ; - } + kill ( task -> task_start . exec_pid , SIGKILL ) ; return SLURM_SUCCESS ; } -- GitLab