From d517610b92d8f6905aa42a2ee63703bb29c96062 Mon Sep 17 00:00:00 2001
From: Moe Jette <jette1@llnl.gov>
Date: Mon, 20 Jun 2005 19:49:32 +0000
Subject: [PATCH] Add logic to send SIGMIRGRATE and SIGSOUND to top process
 only, not entire process group. Used to initiate job checkpoint.

---
 src/slurmd/req.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/slurmd/req.c b/src/slurmd/req.c
index a6ab96dac1f..f603b658a5d 100644
--- a/src/slurmd/req.c
+++ b/src/slurmd/req.c
@@ -1,6 +1,6 @@
 /*****************************************************************************\
- * src/slurmd/req.c - slurmd request handling
- * $Id$
+ *  src/slurmd/req.c - slurmd request handling
+ *  $Id$
  *****************************************************************************
  *  Copyright (C) 2002 The Regents of the University of California.
  *  Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
@@ -762,6 +762,19 @@ _rpc_kill_tasks(slurm_msg_t *msg, slurm_addr *cli_addr)
 			if  (slurm_signal_container(step->cont_id,
 						    req->signal) < 0)
 				rc = errno;
+/* SIGMIGRATE and SIGSOUND are used to initiate job checkpoint on AIX.
+ * These signals are not sent to the entire process group, but just a
+ * single process, namely the PMD. */
+#ifdef SIGMIGRATE
+#ifdef SIGSOUND
+		} else if ((req->signal == SIGMIGRATE) || 
+		           (req->signal == SIGSOUND)) {
+			if (step->task_list
+			    && (step->task_list->pid > (pid_t) 0)
+			    && (kill(step->task_list->pid, req->signal) < 0))
+				rc = errno;
+#endif
+#endif
 		} else {
 			if (step->task_list 
 			    && (step->task_list->pid > (pid_t) 0)
-- 
GitLab