summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/syncop.c
diff options
context:
space:
mode:
authorKrishnan Parthasarathi <kparthas@redhat.com>2014-09-05 14:55:01 +0530
committerVijay Bellur <vbellur@redhat.com>2014-09-22 04:17:11 -0700
commit58f23090fc0af2d93c02da68b06e02d1263df499 (patch)
tree36fac5bd4f6db90b5026a6e9a622045430916bbe /libglusterfs/src/syncop.c
parent1b53756e50cb9ad5422292d7f4e1e6fe23357222 (diff)
synctask: add backtrace per waiting task
The backtrace is 'saved' in a per-task buffer. This would come handy while debugging code using synctasks. Change-Id: I732b275f6d15b31f31361f5ecf2ba47cacde9b54 BUG: 1138503 Signed-off-by: Krishnan Parthasarathi <kparthas@redhat.com> Reviewed-on: http://review.gluster.org/8622 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Jeff Darcy <jdarcy@redhat.com> Reviewed-by: Atin Mukherjee <amukherj@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'libglusterfs/src/syncop.c')
-rw-r--r--libglusterfs/src/syncop.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libglusterfs/src/syncop.c b/libglusterfs/src/syncop.c
index cc25cd58815..3e176cffc17 100644
--- a/libglusterfs/src/syncop.c
+++ b/libglusterfs/src/syncop.c
@@ -291,8 +291,10 @@ synctask_yield (struct synctask *task)
task->proc->sched.uc_flags &= ~_UC_TLSBASE;
#endif
- if (task->state != SYNCTASK_DONE)
+ if (task->state != SYNCTASK_DONE) {
task->state = SYNCTASK_SUSPEND;
+ (void) gf_backtrace_save (task->btbuf);
+ }
if (swapcontext (&task->ctx, &task->proc->sched) < 0) {
gf_log ("syncop", GF_LOG_ERROR,
"swapcontext failed (%s)", strerror (errno));