<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style>
<!--
@font-face
        {font-family:SimSun}
@font-face
        {font-family:SimSun}
@font-face
        {font-family:Calibri}
@font-face
        {font-family:SimSun}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif"}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
span.EmailStyle17
        {font-family:"Calibri","sans-serif";
        color:windowtext}
.MsoChpDefault
        {font-family:"Calibri","sans-serif"}
@page WordSection1
        {margin:72.0pt 90.0pt 72.0pt 90.0pt}
div.WordSection1
        {}
-->
</style>
</head>
<body lang="ZH-CN" link="blue" vlink="purple" style="">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">As we test the ocfs2 cluster, the cluster is sometime hangs up.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">I got some information about the dead lock, which cause the cluster hangs up, the sys dir / lock is held and the node did not release it which cause the cluster hangs up.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp; root@cvknode-21:~# ps -e -o pid,stat,comm,wchan=WIDE-WCHAN-COLUMN | grep D</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PID STAT COMMAND WIDE-WCHAN-COLUMN</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp; 7489 D jbd2/sdh-621 jbd2_journal_commit_transaction</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp; 16218 D ls iterate_dir</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp; 16533 D mkdir dlm_wait_for_lock_mastery</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp; 31195 D&#43; ls iterate_dir</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">So the code reviewed, and I found the order of the lock may wrong.</span></p>
<p class="MsoNormal"><span lang="EN-US">In the function dlm_master_request_handler, the resource lock is held and so after the lock of &amp;dlm-&gt;master_lock is locked.</span></p>
<p class="MsoNormal"><span lang="EN-US">But in the function dlm_get_lock_resource, the &amp;dlm-&gt;master_lock is locked first and so resource lock.</span></p>
<p class="MsoNormal"><span lang="EN-US">They are different order in different function.</span></p>
<p class="MsoNormal"><span lang="EN-US">If there are two task, one holds the res-&gt;lock waiting for the dlm-&gt;master_lock, with the function dlm_master_request_handler.</span></p>
<p class="MsoNormal"><span lang="EN-US">Another task holds the &amp;dlm-&gt;master_lock waiting for the res-&gt;lock with dlm_get_lock_resource.</span></p>
<p class="MsoNormal"><span lang="EN-US">So the deadlock may be up. </span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">I changed some code, and the patch request reviews.</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;</span></p>
<p class="MsoNormal"><span lang="EN-US">*** ocfs2-ko-3.16/dlm/dlmmaster.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2014-09-11 12:45:45.821657634 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">--- ocfs2-ko-3.16_compared/dlm/dlmmaster.c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2014-09-11 18:54:34.970243238 &#43;0800</span></p>
<p class="MsoNormal"><span lang="EN-US">*************** way_up_top:</span></p>
<p class="MsoNormal"><span lang="EN-US">*** 1506,1512 ****</span></p>
<p class="MsoNormal"><span lang="EN-US">--- 1506,1515 ----</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // mlog(0, &quot;lockres is in progress...\n&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_unlock(&amp;res-&gt;spinlock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_lock(&amp;dlm-&gt;master_lock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_lock(&amp;res-&gt;spinlock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; found = dlm_find_mle(dlm, &amp;tmpmle, name, namelen);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!found) {</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mlog(ML_ERROR, &quot;no mle found for this lock!\n&quot;);</span></p>
<p class="MsoNormal"><span lang="EN-US">*************** way_up_top:</span></p>
<p class="MsoNormal"><span lang="EN-US">*** 1551,1558 ****</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set_bit(request-&gt;node_idx, tmpmle-&gt;maybe_map);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_unlock(&amp;tmpmle-&gt;spinlock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US">- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_unlock(&amp;dlm-&gt;master_lock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_unlock(&amp;res-&gt;spinlock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&#43; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; spin_unlock(&amp;dlm-&gt;master_lock);</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; </span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* keep the mle attached to heartbeat events */</span></p>
<p class="MsoNormal"><span lang="EN-US">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dlm_put_mle(tmpmle);</span></p>
</div>
<span style="font-size:7.5pt; font-family:&#21326;&#25991;&#32454;&#40657;; color:gray"><span lang="EN-US">-------------------------------------------------------------------------------------------------------------------------------------<br>
</span>&#26412;&#37038;&#20214;&#21450;&#20854;&#38468;&#20214;&#21547;&#26377;&#26477;&#24030;&#21326;&#19977;&#36890;&#20449;&#25216;&#26415;&#26377;&#38480;&#20844;&#21496;&#30340;&#20445;&#23494;&#20449;&#24687;&#65292;&#20165;&#38480;&#20110;&#21457;&#36865;&#32473;&#19978;&#38754;&#22320;&#22336;&#20013;&#21015;&#20986;<span lang="EN-US"><br>
</span>&#30340;&#20010;&#20154;&#25110;&#32676;&#32452;&#12290;&#31105;&#27490;&#20219;&#20309;&#20854;&#20182;&#20154;&#20197;&#20219;&#20309;&#24418;&#24335;&#20351;&#29992;&#65288;&#21253;&#25324;&#20294;&#19981;&#38480;&#20110;&#20840;&#37096;&#25110;&#37096;&#20998;&#22320;&#27844;&#38706;&#12289;&#22797;&#21046;&#12289;<span lang="EN-US"><br>
</span>&#25110;&#25955;&#21457;&#65289;&#26412;&#37038;&#20214;&#20013;&#30340;&#20449;&#24687;&#12290;&#22914;&#26524;&#24744;&#38169;&#25910;&#20102;&#26412;&#37038;&#20214;&#65292;&#35831;&#24744;&#31435;&#21363;&#30005;&#35805;&#25110;&#37038;&#20214;&#36890;&#30693;&#21457;&#20214;&#20154;&#24182;&#21024;&#38500;&#26412;<span lang="EN-US"><br>
</span>&#37038;&#20214;&#65281;<span lang="EN-US"><br>
</span></span><span lang="EN-US" style="font-size:7.5pt; font-family:&quot;Arial&quot;,&quot;sans-serif&quot;; color:gray">This e-mail and its attachments contain confidential information from H3C, which is
<br>
intended only for the person or entity whose address is listed above. Any use of the
<br>
information contained herein in any way (including, but not limited to, total or partial
<br>
disclosure, reproduction, or dissemination) by persons other than the intended <br>
recipient(s) is prohibited. If you receive this e-mail in error, please notify the sender
<br>
by phone or email immediately and delete it!</span>
</body>
</html>