summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglusterfs/src/syncop.c4
-rw-r--r--libglusterfs/src/syncop.h1
2 files changed, 4 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));
diff --git a/libglusterfs/src/syncop.h b/libglusterfs/src/syncop.h
index 80b899badb2..31438b17883 100644
--- a/libglusterfs/src/syncop.h
+++ b/libglusterfs/src/syncop.h
@@ -79,6 +79,7 @@ struct synctask {
int done;
struct list_head waitq; /* can wait only "once" at a time */
+ char btbuf[GF_BACKTRACE_LEN];
};