diff options
author | shishir gowda <shishirng@gluster.com> | 2010-12-13 13:40:34 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2010-12-27 20:50:31 -0800 |
commit | b4218f679113b3b0a6e08a0dd9482ec99ee77a38 (patch) | |
tree | 080f1bf3ce83de352e8b038f1748b2b5c66d5da5 /xlators/cluster | |
parent | ef27058512773a76853e3c6c715465f87da2b13a (diff) |
Implement STRIPE_STACK_UNWIND and STRIPE_STACK_DESTROY
Signed-off-by: shishir gowda <shishirng@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 2134 (inode leaks on stripe)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2134
Diffstat (limited to 'xlators/cluster')
-rw-r--r-- | xlators/cluster/stripe/src/stripe.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/xlators/cluster/stripe/src/stripe.h b/xlators/cluster/stripe/src/stripe.h index d94d82d6dc9..3dbd93d59f6 100644 --- a/xlators/cluster/stripe/src/stripe.h +++ b/xlators/cluster/stripe/src/stripe.h @@ -37,6 +37,24 @@ #include <signal.h> +#define STRIPE_STACK_UNWIND(fop, frame, params ...) do { \ + stripe_local_t *__local = NULL; \ + if (frame) { \ + __local = frame->local; \ + frame->local = NULL; \ + } \ + STACK_UNWIND_STRICT (fop, frame, params); \ + stripe_local_wipe(__local); \ + } while (0) + +#define STRIPE_STACK_DESTROY(frame) do { \ + stripe_local_t *__local = NULL; \ + __local = frame->local; \ + frame->local = NULL; \ + STACK_DESTROY (frame->root); \ + stripe_local_wipe (__local); \ + } while (0) + /** * struct stripe_options : This keeps the pattern and the block-size * information, which is used for striping on a file. |