<div dir="ltr">NAK. Current code looks ok.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 28, 2013 at 1:49 PM, Andrew Morton <span dir="ltr">&lt;<a href="mailto:akpm@linux-foundation.org" target="_blank">akpm@linux-foundation.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Folks, 3.10 is nigh.  Could we please have some review and test of this<br>
patch?<br>
<br>
<br>
From: Younger Liu &lt;<a href="mailto:younger.liu@huawei.com">younger.liu@huawei.com</a>&gt;<br>
Subject: ocfs2: should call ocfs2_journal_access_di() before ocfs2_delete_entry() in ocfs2_orphan_del()<br>
<div class="im"><br>
While deleting a file into orphan dir in ocfs2_orphan_del(), it calls<br>
ocfs2_delete_entry() before ocfs2_journal_access_di().  If<br>
ocfs2_delete_entry() succeeded and ocfs2_journal_access_di() failed, there<br>
would be a inconsistency: the file is deleted from orphan dir, but orphan<br>
dir dinode is not updated.<br>
<br>
</div>So we need to call ocfs2_journal_access_di() before ocfs2_orphan_del().<br>
<br>
Signed-off-by: Younger Liu &lt;<a href="mailto:younger.liu@huawei.com">younger.liu@huawei.com</a>&gt;<br>
Cc: Jie Liu &lt;<a href="mailto:jeff.liu@oracle.com">jeff.liu@oracle.com</a>&gt;<br>
Cc: Joel Becker &lt;<a href="mailto:jlbec@evilplan.org">jlbec@evilplan.org</a>&gt;<br>
Cc: Mark Fasheh &lt;<a href="mailto:mfasheh@suse.com">mfasheh@suse.com</a>&gt;<br>
Signed-off-by: Andrew Morton &lt;<a href="mailto:akpm@linux-foundation.org">akpm@linux-foundation.org</a>&gt;<br>
<div class="im">---<br>
<br>
 fs/ocfs2/namei.c |   12 ++++++------<br>
 1 file changed, 6 insertions(+), 6 deletions(-)<br>
<br>
</div>diff -puN fs/ocfs2/namei.c~ocfs2-should-call-ocfs2_journal_access_di-before-ocfs2_delete_entry-in-ocfs2_orphan_del fs/ocfs2/namei.c<br>
--- a/fs/ocfs2/namei.c~ocfs2-should-call-ocfs2_journal_access_di-before-ocfs2_delete_entry-in-ocfs2_orphan_del<br>
+++ a/fs/ocfs2/namei.c<br>
@@ -2095,17 +2095,17 @@ int ocfs2_orphan_del(struct ocfs2_super<br>
<div class="im HOEnZb">                goto leave;<br>
        }<br>
<br>
-       /* remove it from the orphan directory */<br>
-       status = ocfs2_delete_entry(handle, orphan_dir_inode, &amp;lookup);<br>
+       status = ocfs2_journal_access_di(handle,<br>
+                                        INODE_CACHE(orphan_dir_inode),<br>
+                                        orphan_dir_bh,<br>
+                                        OCFS2_JOURNAL_ACCESS_WRITE);<br>
        if (status &lt; 0) {<br>
                mlog_errno(status);<br>
                goto leave;<br>
        }<br>
<br>
-       status = ocfs2_journal_access_di(handle,<br>
-                                        INODE_CACHE(orphan_dir_inode),<br>
-                                        orphan_dir_bh,<br>
-                                        OCFS2_JOURNAL_ACCESS_WRITE);<br>
+       /* remove it from the orphan directory */<br>
+       status = ocfs2_delete_entry(handle, orphan_dir_inode, &amp;lookup);<br>
        if (status &lt; 0) {<br>
                mlog_errno(status);<br>
                goto leave;<br>
</div><div class="HOEnZb"><div class="h5">_<br>
<br>
<br>
<br>
_______________________________________________<br>
Ocfs2-devel mailing list<br>
<a href="mailto:Ocfs2-devel@oss.oracle.com">Ocfs2-devel@oss.oracle.com</a><br>
<a href="https://oss.oracle.com/mailman/listinfo/ocfs2-devel" target="_blank">https://oss.oracle.com/mailman/listinfo/ocfs2-devel</a><br>
</div></div></blockquote></div><br></div>