All of lore.kernel.org
 help / color / mirror / Atom feed
* [Ocfs2-devel] [PATCH] ocfs2: iput inode alloc when failed locally
@ 2014-03-14  9:57 jiangyiwen
  0 siblings, 0 replies; only message in thread
From: jiangyiwen @ 2014-03-14  9:57 UTC (permalink / raw)
  To: ocfs2-devel

In ocfs2_info_handle_freeinode() and ocfs2_test_inode_bit() func,
after calls ocfs2_get_system_file_inode() to get inode ref, if
calls ocfs2_info_scan_inode_alloc() or ocfs2_inode_lock() failed,
we should iput inode alloc to avoid inode alloc be left over.

Reviewed-by: Joseph Qi <joseph.qi@huawei.com>
Signed-off-by: jiangyiwen <jiangyiwen@huawei.com>
---
 fs/ocfs2/ioctl.c    | 5 +++--
 fs/ocfs2/suballoc.c | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c
index 8ca3c29..490229f 100644
--- a/fs/ocfs2/ioctl.c
+++ b/fs/ocfs2/ioctl.c
@@ -413,11 +413,12 @@ int ocfs2_info_handle_freeinode(struct inode *inode,
 		}

 		status = ocfs2_info_scan_inode_alloc(osb, inode_alloc, blkno, oifi, i);
-		if (status < 0)
-			goto bail;

 		iput(inode_alloc);
 		inode_alloc = NULL;
+
+		if (status < 0)
+			goto bail;
 	}

 	o2info_set_request_filled(&oifi->ifi_req);
diff --git a/fs/ocfs2/suballoc.c b/fs/ocfs2/suballoc.c
index 47ae266..5843420 100644
--- a/fs/ocfs2/suballoc.c
+++ b/fs/ocfs2/suballoc.c
@@ -2870,6 +2870,7 @@ int ocfs2_test_inode_bit(struct ocfs2_super *osb, u64 blkno, int *res)
 	status = ocfs2_inode_lock(inode_alloc_inode, &alloc_bh, 0);
 	if (status < 0) {
 		mutex_unlock(&inode_alloc_inode->i_mutex);
+		iput(inode_alloc_inode);
 		mlog(ML_ERROR, "lock on alloc inode on slot %u failed %d\n",
 		     (u32)suballoc_slot, status);
 		goto bail;

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-03-14  9:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-03-14  9:57 [Ocfs2-devel] [PATCH] ocfs2: iput inode alloc when failed locally jiangyiwen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.