Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b8a0ae57 authored by Wengang Wang's avatar Wengang Wang Committed by Joel Becker
Browse files

ocfs2: Commit transactions in error cases -v2



There are three cases found that in error cases, journal transactions are not
committed nor aborted. We should take care of these case by committing the
transactions. Otherwise, there would left a journal handle which will lead to
, in same process context, the comming ocfs2_start_trans() gets wrong credits.

Signed-off-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
Signed-off-by: default avatarJoel Becker <jlbec@evilplan.org>
parent 82985248
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -5699,7 +5699,7 @@ int ocfs2_remove_btree_range(struct inode *inode,
					   OCFS2_JOURNAL_ACCESS_WRITE);
	if (ret) {
		mlog_errno(ret);
		goto out;
		goto out_commit;
	}

	dquot_free_space_nodirty(inode,
+2 −1
Original line number Diff line number Diff line
@@ -122,7 +122,7 @@ static int ocfs2_set_inode_attr(struct inode *inode, unsigned flags,
	if ((oldflags & OCFS2_IMMUTABLE_FL) || ((flags ^ oldflags) &
		(OCFS2_APPEND_FL | OCFS2_IMMUTABLE_FL))) {
		if (!capable(CAP_LINUX_IMMUTABLE))
			goto bail_unlock;
			goto bail_commit;
	}

	ocfs2_inode->ip_attr = flags;
@@ -132,6 +132,7 @@ static int ocfs2_set_inode_attr(struct inode *inode, unsigned flags,
	if (status < 0)
		mlog_errno(status);

bail_commit:
	ocfs2_commit_trans(osb, handle);
bail_unlock:
	ocfs2_inode_unlock(inode, 1);
+6 −4
Original line number Diff line number Diff line
@@ -2376,16 +2376,18 @@ static int ocfs2_remove_value_outside(struct inode*inode,
		}

		ret = ocfs2_xattr_value_truncate(inode, vb, 0, &ctxt);
		if (ret < 0) {
			mlog_errno(ret);
			break;
		}

		ocfs2_commit_trans(osb, ctxt.handle);
		if (ctxt.meta_ac) {
			ocfs2_free_alloc_context(ctxt.meta_ac);
			ctxt.meta_ac = NULL;
		}

		if (ret < 0) {
			mlog_errno(ret);
			break;
		}

	}

	if (ctxt.meta_ac)