diff --git a/src/common/slurm_protocol_defs.h b/src/common/slurm_protocol_defs.h index 97d7d17f715fc85a60cd2d706c0d28e6dc747ba0..87271b1d6baf90066071a20d95acfaefb3fe0828 100644 --- a/src/common/slurm_protocol_defs.h +++ b/src/common/slurm_protocol_defs.h @@ -195,6 +195,11 @@ typedef struct job_id_msg { uint32_t job_id; } job_id_msg_t ; +typedef struct job_step_id_msg { + uint32_t job_id; + uint32_t job_step_id ; +} job_step_id_msg_t ; + typedef struct slurm_update_node_msg { char * node_names ; diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 891a03e9d574ae5290bffbf4593389eec1952e52..d1bc56eb85ac7430b49c8e445def9792a409866f 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -132,13 +132,17 @@ int pack_msg ( slurm_msg_t const * msg , char ** buffer , uint32_t * buf_len ) pack_launch_tasks_msg ( ( launch_tasks_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ; break ; case REQUEST_KILL_TASKS : - pack_kill_tasks_msg ( ( kill_tasks_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ; + pack_cancel_tasks_msg ( ( kill_tasks_msg_t * ) msg->data , ( void ** ) buffer , buf_len ) ; break ; case REQUEST_CANCEL_JOB : + pack_cancel_job_msg ( ( job_id_msg_t * ) msg->data , + ( void ** ) buffer , buf_len ) ; break ; case REQUEST_CANCEL_JOB_STEP : + pack_cancel_job_step_msg ( ( job_step_id_msg_t * ) msg->data , + ( void ** ) buffer , buf_len ) ; break ; case REQUEST_SIGNAL_JOB : break ; @@ -256,12 +260,16 @@ int unpack_msg ( slurm_msg_t * msg , char ** buffer , uint32_t * buf_len ) ( void ** ) buffer , buf_len ) ; break ; case REQUEST_KILL_TASKS : - unpack_kill_tasks_msg ( ( kill_tasks_msg_t ** ) & ( msg->data ) , + unpack_cancel_tasks_msg ( ( kill_tasks_msg_t ** ) & ( msg->data ) , ( void ** ) buffer , buf_len ) ; break ; case REQUEST_CANCEL_JOB : + unpack_cancel_job_msg ( ( job_id_msg_t ** ) & ( msg->data ) , + ( void ** ) buffer , buf_len ) ; break ; case REQUEST_CANCEL_JOB_STEP : + unpack_cancel_job_step_msg ( ( job_step_id_msg_t ** ) & ( msg->data ) , + ( void ** ) buffer , buf_len ) ; break ; case REQUEST_SIGNAL_JOB : break ; @@ -931,13 +939,13 @@ int unpack_launch_tasks_msg ( launch_tasks_msg_t ** msg_ptr , void ** buffer , u return 0 ; } -void pack_kill_tasks_msg ( kill_tasks_msg_t * msg , void ** buffer , uint32_t * length ) +void pack_cancel_tasks_msg ( kill_tasks_msg_t * msg , void ** buffer , uint32_t * length ) { pack32 ( msg -> job_id , buffer , length ) ; pack32 ( msg -> job_step_id , buffer , length ) ; } -int unpack_kill_tasks_msg ( kill_tasks_msg_t ** msg_ptr , void ** buffer , uint32_t * length ) +int unpack_cancel_tasks_msg ( kill_tasks_msg_t ** msg_ptr , void ** buffer , uint32_t * length ) { kill_tasks_msg_t * msg ; @@ -954,6 +962,50 @@ int unpack_kill_tasks_msg ( kill_tasks_msg_t ** msg_ptr , void ** buffer , uint3 return 0 ; } +void pack_cancel_job_msg ( job_id_msg_t * msg , void ** buffer , uint32_t * length ) +{ + pack32 ( msg -> job_id , buffer , length ) ; +} + +int unpack_cancel_job_msg ( job_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ) +{ + job_id_msg_t * msg ; + + msg = xmalloc ( sizeof ( job_id_msg_t ) ) ; + if ( msg == NULL) + { + *msg_ptr = NULL ; + return ENOMEM ; + } + + unpack32 ( & msg -> job_id , buffer , length ) ; + *msg_ptr = msg ; + return 0 ; +} + +void pack_cancel_job_step_msg ( job_step_id_msg_t * msg , void ** buffer , uint32_t * length ) +{ + pack32 ( msg -> job_id , buffer , length ) ; + pack32 ( msg -> job_step_id , buffer , length ) ; +} + +int unpack_cancel_job_step_msg ( job_step_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ) +{ + job_step_id_msg_t * msg ; + + msg = xmalloc ( sizeof ( job_step_id_msg_t ) ) ; + if ( msg == NULL) + { + *msg_ptr = NULL ; + return ENOMEM ; + } + + unpack32 ( & msg -> job_id , buffer , length ) ; + unpack32 ( & msg -> job_step_id , buffer , length ) ; + *msg_ptr = msg ; + return 0 ; +} + /* template void pack_ ( * msg , void ** buffer , uint32_t * length ) { diff --git a/src/common/slurm_protocol_pack.h b/src/common/slurm_protocol_pack.h index a48bb6c52912c072b3423043b8aaf2004ee8f021..c1ff2a34cef685cbd88957006fafc8a2936fd431 100644 --- a/src/common/slurm_protocol_pack.h +++ b/src/common/slurm_protocol_pack.h @@ -58,6 +58,13 @@ int unpack_node_info_msg ( node_info_msg_t ** msg , void ** buf_ptr , int * buff int unpack_node_table_msg ( node_table_msg_t ** node , void ** buf_ptr , int * buffer_size ); int unpack_node_table ( node_table_msg_t * node , void ** buf_ptr , int * buffer_size ); +void pack_cancel_job_msg ( job_id_msg_t * msg , void ** buffer , uint32_t * length ); +int unpack_cancel_job_msg ( job_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); +void pack_cancel_job_step_msg ( job_step_id_msg_t * msg , void ** buffer , uint32_t * length ); +int unpack_cancel_job_step_msg ( job_step_id_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); +void pack_cancel_tasks_msg ( kill_tasks_msg_t * msg , void ** buffer , uint32_t * length ); +int unpack_cancel_tasks_msg ( kill_tasks_msg_t ** msg_ptr , void ** buffer , uint32_t * length ); + void pack_resource_allocation_response_msg ( resource_allocation_response_msg_t * msg, void ** buffer , int * length ); int unpack_resource_allocation_response_msg ( resource_allocation_response_msg_t ** msg , void ** buffer , int * length ); diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index b28a3e1767da16ae41a5eba123152dbfd5171113..c79c3af229f65695160a160a04da04a99b5e85ee 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -364,14 +364,14 @@ slurm_rpc_job_cancel ( slurm_msg_t * msg ) /* return result */ if (error_code) { - info ("slurmctld_req: job_cancel error %d, time=%ld", - error_code, (long) (clock () - start_time)); + info ("slurmctld_req: job_cancel error %d for %u, time=%ld", + error_code, job_id_msg->job_id, (long) (clock () - start_time)); slurm_send_rc_msg ( msg , error_code ); } else { - info ("slurmctld_req: job_cancel success for %d, time=%ld", - job_id_msg->job_id, (long) (clock () - start_time)); + info ("slurmctld_req: job_cancel success for %u, time=%ld", + job_id_msg->job_id, (long) (clock () - start_time)); slurm_send_rc_msg ( msg , SLURM_SUCCESS ); }