<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style>
<!--
@font-face
        {font-family:Wingdings}
@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}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        text-indent:21.0pt;
        font-size:10.5pt;
        font-family:"Calibri","sans-serif"}
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
        {}
ol
        {margin-bottom:0cm}
ul
        {margin-bottom:0cm}
-->
</style>
</head>
<body lang="ZH-CN" link="blue" vlink="purple" style="">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">Hi, All</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">As one node died, another node is to recovery it.</span></p>
<p class="MsoNormal"><span lang="EN-US">In the function dlm_send_begin_reco_message, if the DLM_BEGIN_RECO_MSG message is sent to one active node failed, the recovery node will retry to send the message until it success.</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">I think in the function dlm_send_finalize_reco_message, we should send the DLM_FINALIZE_RECO_MSG again to the node when failed.
</span></p>
<p class="MsoNormal"><span lang="EN-US">It should not break out the loop as sending FINALIZE_RECO_MSG to one active node failed.</span></p>
<p class="MsoNormal"><span lang="EN-US">It would be good to retry send message to active node until all active nodes processed the message successfully.</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">static int dlm_send_finalize_reco_message(struct dlm_ctxt *dlm)</span></p>
<p class="MsoNormal"><span lang="EN-US">{</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">stage2:</span></p>
<p class="MsoNormal"><span lang="EN-US"> memset(&fr, 0, sizeof(fr));</span></p>
<p class="MsoNormal"><span lang="EN-US"> fr.node_idx = dlm->node_num;</span></p>
<p class="MsoNormal"><span lang="EN-US"> fr.dead_node = dlm->reco.dead_node;</span></p>
<p class="MsoNormal"><span lang="EN-US"> if (stage == 2)</span></p>
<p class="MsoNormal"><span lang="EN-US"> fr.flags |= DLM_FINALIZE_STAGE2;</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US"> while ((nodenum = dlm_node_iter_next(&iter)) >= 0) {</span></p>
<p class="MsoNormal"><span lang="EN-US"> if (nodenum == dlm->node_num)</span></p>
<p class="MsoNormal"><span lang="EN-US"> continue;</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">+ retry:</span></p>
<p class="MsoNormal"><span lang="EN-US"> ret = o2net_send_message(DLM_FINALIZE_RECO_MSG, dlm->key,</span></p>
<p class="MsoNormal"><span lang="EN-US"> &fr, sizeof(fr), nodenum, &status);</span></p>
<p class="MsoNormal"><span lang="EN-US"> if (ret >= 0)</span></p>
<p class="MsoNormal"><span lang="EN-US"> ret = status;</span></p>
<p class="MsoNormal"><span lang="EN-US"> if (ret < 0) {</span></p>
<p class="MsoNormal"><span lang="EN-US"> mlog(ML_ERROR, "Error %d when sending message %u (key "</span></p>
<p class="MsoNormal"><span lang="EN-US"> "0x%x) to node %u\n", ret, DLM_FINALIZE_RECO_MSG,</span></p>
<p class="MsoNormal"><span lang="EN-US"> dlm->key, nodenum);</span></p>
<p class="MsoNormal"><span lang="EN-US"> if (dlm_is_host_down(ret)) {</span></p>
<p class="MsoNormal"><span lang="EN-US"> /* this has no effect on this recovery</span></p>
<p class="MsoNormal"><span lang="EN-US"> * session, so set the status to zero to</span></p>
<p class="MsoNormal"><span lang="EN-US"> * finish out the last recovery */</span></p>
<p class="MsoNormal"><span lang="EN-US"> mlog(ML_ERROR, "node %u went down after this "</span></p>
<p class="MsoNormal"><span lang="EN-US"> "node finished recovery.\n", nodenum);</span></p>
<p class="MsoNormal"><span lang="EN-US"> ret = 0;</span></p>
<p class="MsoNormal"><span lang="EN-US"> continue;</span></p>
<p class="MsoNormal"><span lang="EN-US"> }</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">+ msleep(100);</span></p>
<p class="MsoNormal"><span lang="EN-US">+ goto retry;</span></p>
<p class="MsoListParagraph" style="margin-left:18.0pt; text-indent:-18.0pt"><span lang="EN-US"><span style="">-<span style="font:7.0pt "Times New Roman"">
</span></span></span><span lang="EN-US"> break; </span></p>
<p class="MsoNormal"><span lang="EN-US"> }</span></p>
<p class="MsoNormal"><span lang="EN-US"> }</span></p>
<p class="MsoNormal"><span lang="EN-US"> </span></p>
<p class="MsoNormal"><span lang="EN-US">As break out in the loop, some nodes process the message OK, others may be failed.</span></p>
</div>
<span style="font-size:7.5pt; font-family:华文细黑; color:gray"><span lang="EN-US">-------------------------------------------------------------------------------------------------------------------------------------<br>
</span>本邮件及其附件含有杭州华三通信技术有限公司的保密信息,仅限于发送给上面地址中列出<span lang="EN-US"><br>
</span>的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全部或部分地泄露、复制、<span lang="EN-US"><br>
</span>或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或邮件通知发件人并删除本<span lang="EN-US"><br>
</span>邮件!<span lang="EN-US"><br>
</span></span><span lang="EN-US" style="font-size:7.5pt; font-family:"Arial","sans-serif"; 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>