From 8fda324df01b6de9c58a1395263ce9755465b26d Mon Sep 17 00:00:00 2001 From: Vijay Bellur Date: Sun, 13 Mar 2016 10:44:12 -0400 Subject: mount/fuse: cleanup an additional inode_ref() commit ca515db0127 introduced a check in fuse_resolve_inode_simple(). This results in an additional ref being held on inodes which were obtained through readdirp. As a result, the inode table keeps growing and entries remain in the active list even after deletion of such inodes. Change-Id: I780ec5513990d6ef00ea051ec57ff20e4428081e BUG: 1317948 Signed-off-by: Vijay Bellur Reviewed-on: http://review.gluster.org/13689 NetBSD-regression: NetBSD Build System CentOS-regression: Gluster Build System Smoke: Gluster Build System Reviewed-by: Niels de Vos --- xlators/mount/fuse/src/fuse-resolve.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'xlators') diff --git a/xlators/mount/fuse/src/fuse-resolve.c b/xlators/mount/fuse/src/fuse-resolve.c index a0352bcf43f..7d3494f5419 100644 --- a/xlators/mount/fuse/src/fuse-resolve.c +++ b/xlators/mount/fuse/src/fuse-resolve.c @@ -256,8 +256,11 @@ fuse_resolve_parent_simple (fuse_state_t *state) * have been there even though it need not have (bug #804592). */ - if (loc->inode && inode_needs_lookup (loc->inode, THIS)) + if (loc->inode && inode_needs_lookup (loc->inode, THIS)) { + inode_unref (loc->inode); + loc->inode = NULL; return -1; + } if ((loc->inode == NULL) && __is_root_gfid (parent->gfid)) { -- cgit