The first two are ok. Have a comment for the last one.

On 09/25/2011 02:13 AM, Wengang Wang wrote:
> Commit transactions in error cases.
>
> 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.w...@oracle.com>
> ---
>   fs/ocfs2/alloc.c |    2 +-
>   fs/ocfs2/ioctl.c |    3 ++-
>   fs/ocfs2/xattr.c |    2 +-
>   3 files changed, 4 insertions(+), 3 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..6eb01c5 100644
> --- a/fs/ocfs2/xattr.c
> +++ b/fs/ocfs2/xattr.c
> @@ -2376,12 +2376,12 @@ static int ocfs2_remove_value_outside(struct 
> inode*inode,
>               }
>
>               ret = ocfs2_xattr_value_truncate(inode, vb, 0,&ctxt);
> +             ocfs2_commit_trans(osb, ctxt.handle);
>               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;

                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;
+               }


I don't like the commit_trans() shoe horned. The above reads cleaner imo.


_______________________________________________
Ocfs2-devel mailing list
Ocfs2-devel@oss.oracle.com
http://oss.oracle.com/mailman/listinfo/ocfs2-devel

Reply via email to