diff options
author | Anand Avati <avati@gluster.com> | 2009-12-06 05:31:44 +0000 |
---|---|---|
committer | Anand V. Avati <avati@dev.gluster.com> | 2009-12-06 03:01:59 -0800 |
commit | a53cd95827df0a9c560fdf5e07b0c23d03707b04 (patch) | |
tree | 9bfefe3967a79012b04ca03776648ead6947e222 | |
parent | ea93dd6397b79842c1d8e5189ff217201c002a8d (diff) |
THIS: set THIS pointers before forget/release/releasedir callbacks
Signed-off-by: Anand V. Avati <avati@blackhole.gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
-rw-r--r-- | libglusterfs/src/fd.c | 7 | ||||
-rw-r--r-- | libglusterfs/src/inode.c | 4 | ||||
-rw-r--r-- | xlators/cluster/dht/src/dht-diskusage.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/libglusterfs/src/fd.c b/libglusterfs/src/fd.c index 59e702dd9..c6b060c61 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; } } } diff --git a/libglusterfs/src/inode.c b/libglusterfs/src/inode.c index bd0684398..5b70ce5fe 100644 --- a/libglusterfs/src/inode.c +++ b/libglusterfs/src/inode.c @@ -276,6 +276,7 @@ __inode_destroy (inode_t *inode) { int index = 0; xlator_t *xl = NULL; + xlator_t *old_THIS = NULL; if (!inode->_ctx) goto noctx; @@ -283,8 +284,11 @@ __inode_destroy (inode_t *inode) for (index = 0; index < inode->table->xl->ctx->xl_count; index++) { if (inode->_ctx[index].key) { xl = (xlator_t *)(long)inode->_ctx[index].key; + old_THIS = THIS; + THIS = xl; if (xl->cbks->forget) xl->cbks->forget (xl, inode); + THIS = old_THIS; } } diff --git a/xlators/cluster/dht/src/dht-diskusage.c b/xlators/cluster/dht/src/dht-diskusage.c index bcc385a2f..6344953d0 100644 --- a/xlators/cluster/dht/src/dht-diskusage.c +++ b/xlators/cluster/dht/src/dht-diskusage.c @@ -210,7 +210,7 @@ dht_is_subvol_filled (xlator_t *this, xlator_t *subvol) UNLOCK (&conf->subvolume_lock); if (subvol_filled) { - if (!(conf->du_stats[i].log++ % GF_UNIVERSAL_ANSWER)) { + if (!(conf->du_stats[i].log++ % (GF_UNIVERSAL_ANSWER * 10))) { gf_log (this->name, GF_LOG_WARNING, "disk space on subvolume '%s' is getting " "full (%.2f %%), consider adding more nodes", |