diff options
-rw-r--r-- | xlators/debug/io-stats/src/io-stats.c | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/xlators/debug/io-stats/src/io-stats.c b/xlators/debug/io-stats/src/io-stats.c index 41a099396e9..13173b498a2 100644 --- a/xlators/debug/io-stats/src/io-stats.c +++ b/xlators/debug/io-stats/src/io-stats.c @@ -340,7 +340,7 @@ ios_stat_unref (struct ios_stat *iosstat) LOCK (&iosstat->lock); { iosstat->refcnt--; - if (iosstat->refcnt <= 0) { + if (iosstat->refcnt == 0) { if (iosstat->filename) { GF_FREE (iosstat->filename); iosstat->filename = NULL; @@ -484,8 +484,15 @@ ios_stats_cleanup (xlator_t *this, inode_t *inode) { struct ios_stat *iosstat = NULL; + uint64_t iosstat64 = 0; - ios_inode_ctx_get (inode, this, &iosstat); + inode_ctx_del (inode, this, &iosstat64); + if (!iosstat64) { + gf_log (this->name, GF_LOG_WARNING, + "could not get inode ctx"); + return 0; + } + iosstat = (void *) (long)iosstat64; if (iosstat) { ios_stat_unref (iosstat); } @@ -1306,14 +1313,6 @@ io_stats_unlink_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preparent, struct iatt *postparent) { - inode_t *inode = NULL; - - if (frame->local) { - inode = frame->local; - frame->local = NULL; - ios_stats_cleanup (this, inode); - inode = NULL; - } END_FOP_LATENCY (frame, UNLINK); STACK_UNWIND_STRICT (unlink, frame, op_ret, op_errno, preparent, postparent); @@ -1465,18 +1464,9 @@ io_stats_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret, int32_t op_errno, struct iatt *preparent, struct iatt *postparent) { - inode_t *inode = NULL; END_FOP_LATENCY (frame, RMDIR); - - if (frame->local) { - inode = frame->local; - frame->local = NULL; - ios_stats_cleanup (this, inode); - inode = NULL; - } - STACK_UNWIND_STRICT (rmdir, frame, op_ret, op_errno, preparent, postparent); return 0; @@ -1828,7 +1818,6 @@ io_stats_rmdir (call_frame_t *frame, xlator_t *this, { BUMP_FOP (RMDIR); - frame->local = loc->inode; START_FOP_LATENCY (frame); STACK_WIND (frame, io_stats_rmdir_cbk, @@ -2346,7 +2335,7 @@ int io_stats_forget (xlator_t *this, inode_t *inode) { BUMP_FOP (FORGET); - + ios_stats_cleanup (this, inode); return 0; } |