<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
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
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
/* Page Definitions */
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 90.0pt 72.0pt 90.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=zh-Hans-HK link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='mso-fareast-language:ZH-CN'>Thanks for your review, I will fix in version 2.</span><span lang=EN-US style='font-size:11.0pt'><o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt'><o:p> </o:p></span></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b><span style='font-family:DengXian'>发件人</span><span lang=EN-US>: </span></b><span lang=EN-US><a href="mailto:danielhb413@gmail.com">Daniel Henrique Barboza</a><br></span><b><span style='font-family:DengXian'>发送时间</span><span lang=EN-US>: </span></b><span lang=EN-US>2020</span><span style='font-family:DengXian'>年</span><span lang=EN-US>6</span><span style='font-family:DengXian'>月</span><span lang=EN-US>16</span><span style='font-family:DengXian'>日星期二</span> <span style='font-family:DengXian'>上午</span><span lang=EN-US>2:36<br></span><b><span style='font-family:DengXian'>收件人</span><span lang=EN-US>: </span></b><span lang=EN-US><a href="mailto:owen.si@ucloud.cn">Bingsong Si</a>; <a href="mailto:libvir-list@redhat.com">libvir-list@redhat.com</a><br></span><b><span style='font-family:DengXian'>主题</span><span lang=EN-US>: </span></b><span lang=EN-US>Re: [PATCH] network: Fix a race condition when shutdown & start vm at the same time</span></p></div><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>On 6/11/20 6:58 AM, Bingsong Si wrote:</span></p><p class=MsoNormal><span lang=EN-US>> when shutdown vm, the qemuProcessStop cleanup virtual interface in two steps:</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>s/when/When</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>> 1. qemuProcessKill kill qemu process, and vif disappeared</span></p><p class=MsoNormal><span lang=EN-US>> 2. ovs-vsctl del-port from the brige</span></p><p class=MsoNormal><span lang=EN-US>> </span></p><p class=MsoNormal><span lang=EN-US>> if start a vm in the middle of the two steps, the new vm will reused the vif,</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>s/if/If</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>> but removed from bridge by step 2</span></p><p class=MsoNormal><span lang=EN-US>> </span></p><p class=MsoNormal><span lang=EN-US>> Signed-off-by: Bingsong Si <owen.si@ucloud.cn></span></p><p class=MsoNormal><span lang=EN-US>> ---</span></p><p class=MsoNormal><span lang=EN-US>>   src/qemu/qemu_process.c | 8 +++++---</span></p><p class=MsoNormal><span lang=EN-US>>   1 file changed, 5 insertions(+), 3 deletions(-)</span></p><p class=MsoNormal><span lang=EN-US>> </span></p><p class=MsoNormal><span lang=EN-US>> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c</span></p><p class=MsoNormal><span lang=EN-US>> index d36088ba98..706248815a 100644</span></p><p class=MsoNormal><span lang=EN-US>> --- a/src/qemu/qemu_process.c</span></p><p class=MsoNormal><span lang=EN-US>> +++ b/src/qemu/qemu_process.c</span></p><p class=MsoNormal><span lang=EN-US>> @@ -7483,9 +7483,11 @@ void qemuProcessStop(virQEMUDriverPtr driver,</span></p><p class=MsoNormal><span lang=EN-US>>               if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_MIDONET) {</span></p><p class=MsoNormal><span lang=EN-US>>                   ignore_value(virNetDevMidonetUnbindPort(vport));</span></p><p class=MsoNormal><span lang=EN-US>>               } else if (vport->virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH) {</span></p><p class=MsoNormal><span lang=EN-US>> -                ignore_value(virNetDevOpenvswitchRemovePort(</span></p><p class=MsoNormal><span lang=EN-US>> -                                 virDomainNetGetActualBridgeName(net),</span></p><p class=MsoNormal><span lang=EN-US>> -                                 net->ifname));</span></p><p class=MsoNormal><span lang=EN-US>> +                virMacAddr mac;</span></p><p class=MsoNormal><span lang=EN-US>> +                if (virNetDevGetMAC(net->ifname, &mac) < 0 ||  !virMacAddrCmp(&mac, &net->mac))</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Extra space between "||" and "!virMacAddrCmp(.."</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>With these nits fixed:</span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US>> +                    ignore_value(virNetDevOpenvswitchRemovePort(</span></p><p class=MsoNormal><span lang=EN-US>> +                                     virDomainNetGetActualBridgeName(net),</span></p><p class=MsoNormal><span lang=EN-US>> +                                     net->ifname));</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>> </span></p><p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p></div></body></html>