<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"><<a href="mailto:akpm@linux-foundation.org" target="_blank">akpm@linux-foundation.org</a>></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 <<a href="mailto:younger.liu@huawei.com">younger.liu@huawei.com</a>><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 <<a href="mailto:younger.liu@huawei.com">younger.liu@huawei.com</a>><br>
Cc: Jie Liu <<a href="mailto:jeff.liu@oracle.com">jeff.liu@oracle.com</a>><br>
Cc: Joel Becker <<a href="mailto:jlbec@evilplan.org">jlbec@evilplan.org</a>><br>
Cc: Mark Fasheh <<a href="mailto:mfasheh@suse.com">mfasheh@suse.com</a>><br>
Signed-off-by: Andrew Morton <<a href="mailto:akpm@linux-foundation.org">akpm@linux-foundation.org</a>><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, &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 < 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, &lookup);<br>
if (status < 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>