[Ocfs2-devel] [PATCH] ocfs2: Commit transactions in error cases -v2

Joel Becker jlbec at evilplan.org
Thu Nov 17 01:49:59 PST 2011


On Wed, Oct 12, 2011 at 03:22:15PM +0800, Wengang Wang wrote:
> 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: Wengang Wang <wen.gang.wang at oracle.com>

	This patch is now in the 'fixes' branch of ocfs2.git.

Joel

> ---
>  fs/ocfs2/alloc.c |    2 +-
>  fs/ocfs2/ioctl.c |    3 ++-
>  fs/ocfs2/xattr.c |   10 ++++++----
>  3 files changed, 9 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c
> index ed553c6..3165aeb 100644
> --- a/fs/ocfs2/alloc.c
> +++ b/fs/ocfs2/alloc.c
> @@ -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,
> diff --git a/fs/ocfs2/ioctl.c b/fs/ocfs2/ioctl.c
> index bc91072..5612c3d 100644
> --- a/fs/ocfs2/ioctl.c
> +++ b/fs/ocfs2/ioctl.c
> @@ -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);
> diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c
> index 81ecf9c..93d6c80 100644
> --- a/fs/ocfs2/xattr.c
> +++ b/fs/ocfs2/xattr.c
> @@ -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)
> -- 
> 1.7.5.2
> 
> 
> _______________________________________________
> Ocfs2-devel mailing list
> Ocfs2-devel at oss.oracle.com
> http://oss.oracle.com/mailman/listinfo/ocfs2-devel

-- 

"There is no sincerer love than the love of food."  
         - George Bernard Shaw 

			http://www.jlbec.org/
			jlbec at evilplan.org



More information about the Ocfs2-devel mailing list