lkml.org 
[lkml]   [2006]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Date
Subject[PATCH -mm] Send statistics even if thread group leader exits
Hi, Andrew,

The following problem was found during the usage of the per-task delay
accounting code.

When a thread group leader exits, the statistics of the remaining threads
in the thread group are not sent on exit. delayacct_add_tsk() would
fail for the thread group leader. This fix causes statistics collected for
the pid to be sent out, even if collection of tgid statistics fail.

Test Program Psuedocode

1. Main program
creates two threads called t1 and t2
calls pthread_exit()

2. t1
sleeps for a while
calls pthread_exit()
3. t2
sleeps for a while
calls pthread_exit()

Earlier no stats were being sent for t1 and t2.

The pid statistics are being sent to user space after the fix.

Signed-off-by: Balbir Singh <balbir@in.ibm.com>
---

kernel/taskstats.c | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)

diff -puN kernel/taskstats.c~taskstats-thread-group-leader-exits-first-fix kernel/taskstats.c
--- linux-2.6.17-rc5/kernel/taskstats.c~taskstats-thread-group-leader-exits-first-fix 2006-06-02 18:12:44.000000000 +0530
+++ linux-2.6.17-rc5-balbir/kernel/taskstats.c 2006-06-03 00:32:16.000000000 +0530
@@ -277,8 +277,15 @@ void taskstats_exit_send(struct task_str
}

rc = fill_tgid(tsk->pid, tsk, tgidstats);
- if (rc < 0)
- goto err_skb;
+ /*
+ * If fill_tgid() failed then one probable reason could be that the
+ * thread group leader has exited. fill_tgid() will fail, send out
+ * the pid statistics collected earlier.
+ */
+ if (rc < 0) {
+ send_reply(rep_skb, 0, TASKSTATS_MSG_MULTICAST);
+ goto ret;
+ }

na = nla_nest_start(rep_skb, TASKSTATS_TYPE_AGGR_TGID);
NLA_PUT_U32(rep_skb, TASKSTATS_TYPE_TGID, (u32)tsk->tgid);
_
--

Balbir Singh,
Linux Technology Center,
IBM Software Labs
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-06-02 21:26    [W:0.035 / U:0.324 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site