summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/fd.c
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/fd.c')
-rw-r--r--libglusterfs/src/fd.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c
index 59e702dd9de..c6b060c61a5 100644
--- a/libglusterfs/src/fd.c
+++ b/libglusterfs/src/fd.c
@@ -385,6 +385,7 @@ fd_destroy (fd_t *fd)
{
xlator_t *xl = NULL;
int i = 0;
+ xlator_t *old_THIS = NULL;
if (fd == NULL){
gf_log ("xlator", GF_LOG_ERROR, "invalid arugument");
@@ -402,16 +403,22 @@ fd_destroy (fd_t *fd)
for (i = 0; i < fd->inode->table->xl->ctx->xl_count; i++) {
if (fd->_ctx[i].key) {
xl = (xlator_t *)(long)fd->_ctx[i].key;
+ old_THIS = THIS;
+ THIS = xl;
if (xl->cbks->releasedir)
xl->cbks->releasedir (xl, fd);
+ THIS = old_THIS;
}
}
} else {
for (i = 0; i < fd->inode->table->xl->ctx->xl_count; i++) {
if (fd->_ctx[i].key) {
xl = (xlator_t *)(long)fd->_ctx[i].key;
+ old_THIS = THIS;
+ THIS = xl;
if (xl->cbks->release)
xl->cbks->release (xl, fd);
+ THIS = old_THIS;
}
}
}