aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuozhonghua <[email protected]>2016-02-26 15:19:40 -0800
committerLinus Torvalds <[email protected]>2016-02-27 10:28:52 -0800
commita4a8481ff68a8a324a878e281bc37f18665224f7 (patch)
tree0a7465c913bb96534a4a2ab5d3ac4c6587f86e56
parent5ef11c35ce86b94bfb878b684de4cdaf96f54b2f (diff)
ocfs2: unlock inode if deleting inode from orphan fails
When doing append direct io cleanup, if deleting inode fails, it goes out without unlocking inode, which will cause the inode deadlock. This issue was introduced by commit cf1776a9e834 ("ocfs2: fix a tiny race when truncate dio orohaned entry"). Signed-off-by: Guozhonghua <[email protected]> Signed-off-by: Joseph Qi <[email protected]> Reviewed-by: Gang He <[email protected]> Cc: Mark Fasheh <[email protected]> Cc: Joel Becker <[email protected]> Cc: Junxiao Bi <[email protected]> Cc: <[email protected]> [4.2+] Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--fs/ocfs2/aops.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ocfs2/aops.c b/fs/ocfs2/aops.c
index 794fd1587f34..cda0361e95a4 100644
--- a/fs/ocfs2/aops.c
+++ b/fs/ocfs2/aops.c
@@ -956,6 +956,7 @@ clean_orphan:
tmp_ret = ocfs2_del_inode_from_orphan(osb, inode, di_bh,
update_isize, end);
if (tmp_ret < 0) {
+ ocfs2_inode_unlock(inode, 1);
ret = tmp_ret;
mlog_errno(ret);
brelse(di_bh);