From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wen Congyang Subject: Re: [PATCH v11 20/27] Support colo mode for qemu disk Date: Mon, 7 Mar 2016 10:06:06 +0800 Message-ID: <56DCE20E.7060804@cn.fujitsu.com> References: <1457080891-26054-1-git-send-email-xiecl.fnst@cn.fujitsu.com> <1457080891-26054-21-git-send-email-xiecl.fnst@cn.fujitsu.com> <22233.51582.196386.722857@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <22233.51582.196386.722857@mariner.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Ian Jackson , Changlong Xie Cc: Lars Kurth , Wei Liu , Ian Campbell , Andrew Cooper , Jiang Yunhong , Dong Eddie , xen devel , Anthony Perard , Gui Jianfeng , Shriram Rajagopalan , Yang Hongyang List-Id: xen-devel@lists.xenproject.org T24gMDMvMDUvMjAxNiAwMTo0NCBBTSwgSWFuIEphY2tzb24gd3JvdGU6Cj4gQ2hhbmdsb25nIFhp ZSB3cml0ZXMgKCJbUEFUQ0ggdjExIDIwLzI3XSBTdXBwb3J0IGNvbG8gbW9kZSBmb3IgcWVtdSBk aXNrIik6Cj4+IEZyb206IFdlbiBDb25neWFuZyA8d2VuY3lAY24uZnVqaXRzdS5jb20+Cj4+Cj4+ IFVzYWdlOiBkaXNrID0gWycuLi4sY29sbyxjb2xvLWhvc3Q9eHh4LGNvbG8tcG9ydD14eHgsY29s by1leHBvcnQ9eHh4LGFjdGl2ZS1kaXNrPXh4eCxoaWRkZW4tZGlzaz14eHguLi4nXQo+PiBGb3Ig UUVNVSBibG9jayByZXBsaWNhdGlvbiBkZXRhaWxzOgo+PiBodHRwOi8vd2lraS5xZW11Lm9yZy9G ZWF0dXJlcy9CbG9ja1JlcGxpY2F0aW9uCj4gCj4gU28gbm93IEkgYW0gc2xpZ2h0bHkgY29uZnVz ZWQgYnkgdGhlIGRlc2lnbiwgSSB0aGluay4KPiAKPiBXaGVuIHlvdSByZXBsaWNhdGUgYSBWTSB3 aXRoIENPTE8gdXNpbmcgeGwsIGl0cyBtZW1vcnkgc3RhdGUgaXMKPiB0cmFuc2ZlcnJlZCBvdmVy IHNzaC4gIEJ1dCBpdHMgZGlzayByZXBsaWNhdGlvbiBpcyBkb25lIHVuZW5jcnlwdGVkCj4gYW5k IHVuYXV0aGVudGljYXRlZCA/CgpZZXMsIGl0IGlzIGEgcHJvYmxlbS4gSSB3aWxsIHRoaW5rIGhv dyB0byBpbXByb3ZlIGl0LgoKPiAKPiBBbmQgdGhlIGRpc2sgcmVwbGljYXRpb24gaXMsIG91dCBv ZiBiYW5kLCBhbmQgbmVlZHMgdG8gYmUgY29uZmlndXJlZAo+IHNlcGFyYXRlbHkgPyAgVGhpcyBp cyByYXRoZXIgYXdrd2FyZCwgYWx0aG91Z2ggbWF5YmUgbm90IGEKPiBzaG93c3RvcHBlci4gIChN YXliZSB3ZSBjYW4gaGF2ZSBhIHBsYW4gdG8gZml4IGl0IGluIHRoZSBmdXR1cmUuLi4pCgpjb2xv LWhvc3QsY29sby1wb3J0IHNob3VsZCBiZSB0aGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb24uIEFuZCBj b2xvLWV4cG9ydCwKYWN0aXZlLWRpc2ssaGlkZGVuLWRpc2sgbXVzdCBiZSBjb25maWd1cmVkIHNl cGFyYXRlbHksIGJlY2F1c2UgZWFjaApkaXNrIHNob3VsZCBoYXZlIGEgZGlmZmVyZW50IGNvbmZp Z3VyYXRpb24uCgo+IAo+IEFuZCwgaG93IGRvZXMgdGhlIGRpc2sgcmVwbGljYXRpb24sIHdoaWNo IGRvZXNuJ3QgZGVwZW5kIG9uIHRoZXJlCj4gYmVpbmcgeGwgcnVubmluZywgcmVsYXRlIHRvIHRo ZSB2bSBzdGF0ZSByZXBsaWNhdGlvbiwgd2hpY2ggZG9lcyA/ICBJCj4gdGhpbmsgYXQgdGhlIHZl cnkgbGVhc3QgSSdkIGxpa2UgdG8gc2VlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCj4gcHJp bmNpcGxlcyBvZiBvcGVyYXRpb24gLSBlaXRoZXIgZXhwbGFpbmVkLCBvciByZWZlcnJlZCB0bywg aW4gdGhlCj4gdXNlciBtYW51YWwuCgpPSy4gVGhlIGRpc2sgcmVwbGljYXRpb24gZG9lc24ndCBk ZXBlbmQgb24geGwuIFdlIG9ubHkgY2FuIG9wZXJhdGUgaXQKdmlhIHFlbXUgbW9uaXRvciBjb21t YW5kOgoxLiBzdG9wIHRoZSB2bQoyLiBkbyB0aGUgY2hlY2twb2ludAozLiBzdGFydCB0aGUgdm0K MS8zIGlzIHN1c3BlbmQvcmVzdW1lIHRoZSBndWVzdC4gV2Ugb25seSBuZWVkIHRvIGRvIDIgd2hl biBib3RoIHZtIGFyZQppbiB0aGUgY29uc2lzdGVudCBzdGF0ZS4KCj4gCj4gSXMgaXQgcG9zc2li bGUgdG8gdXNlIENPTE8gd2l0aCBhbiBleGlzdGluZyBmdWxsLXNlcnZpY2UgZGlzawo+IHJlcGxp Y2F0aW9uIHNlcnZpY2Ugc3VjaCBhcyBEUkJEID8KCkRSQkQgZG9lc24ncyBzdXBwb3J0IHRoZSBj YXNlIGxpa2UgQ09MTy4gQmVjYXVzZSBib3RoIHByaW1hcnkgZ3Vlc3QKYW5kIHNlY29uZGFyeSBn dWVzdCBuZWVkIHRvIHdyaXRlIHRvIHRoZSBkaXNrLgoKPiAKPj4gKyhhKSBBbiBleGFtcGxlIGZv ciBDT0xPIHJlcGxpY2F0aW9uJ3MgY29uZmlndXJhdGlvbjogZGlzayA9WycuLi4sY29sbyxjb2xv LWhvc3QKPj4gKz14eHgsY29sby1wb3J0PXh4eCxjb2xvLWV4cG9ydD14eHgsYWN0aXZlLWRpc2s9 eHh4LGhpZGRlbi1kaXNrPXh4eC4uLiddCj4+ICsKPj4gKz1pdGVtIEI8Y29sby1ob3N0PiAgICAg IDpTZWNvbmRhcnkgaG9zdCdzIGlwIGFkZHJlc3MuCj4+ICsKPj4gKz1pdGVtIEI8Y29sby1wb3J0 PiAgICAgIDpTZWNvbmRhcnkgaG9zdCdzIHBvcnQsIHdlIHdpbGwgcnVuIGEgbmJkIHNlcnZlciBv bgo+PiArc2Vjb25kYXJ5IGhvc3QsIGFuZCB0aGUgbmJkIHNlcnZlciB3aWxsIGxpc3RlbiB0aGlz IHBvcnQuCj4+ICsKPj4gKz1pdGVtIEI8Y29sby1leHBvcnQ+ICAgIDpOYmQgc2VydmVyJ3MgZGlz ayBleHBvcnQgbmFtZSBvZiBzZWNvbmRhcnkgaG9zdC4KPj4gKwo+PiArPWl0ZW0gQjxhY3RpdmUt ZGlzaz4gICAgOlNlY29uZGFyeSdzIGd1ZXN0IHdyaXRlIHdpbGwgYmUgYnVmZmVyZWQgaW4gdGhp cyBkaXNrLAo+PiArYW5kIGl0J3MgdXNlZCBieSBzZWNvbmRhcnkuCj4+ICsKPj4gKz1pdGVtIEI8 aGlkZGVuLWRpc2s+ICAgIDpQcmltYXJ5J3MgbW9kaWZpZWQgY29udGVudHMgd2lsbCBiZSBidWZm ZXJlZCBpbiB0aGlzCj4+ICtkaXNrLCBhbmQgaXQncyB1c2VkIGJ5IHNlY29uZGFyeS4KPiAKPiBX aGF0IHdvdWxkIGEgdHlwaWNhbCBjb25maWd1cmF0aW9uIGxvb2sgbGlrZSA/ICBJIGRvbid0IHVu ZGVyc3RhbmQgdGhlCj4gcmVsYXRpb25zaGlwIGJldHdlZW4gYWN0aXZlLWRpc2sgYW5kIGhpZGRl bi1kaXNrLCBldGMuCgpRRU1VIGhhcyBhIGZlYXR1cmU6IGJhY2tpbmcgZmlsZQpGb3IgZXhhbXBs ZTogQSdzIGJhY2tpbmcgZmlsZSBpcyBCCjEuIElmIHdlIHJlYWQgZnJvbSBBLCBidXQgdGhlIHNl Y3RvciBpcyBub3QgYWxsb2NhdGVkIGluIEEuIFdlIHdpbCByZXR1cm4gYSB6ZXJvCiAgIHNlY3Rv ciB0byB0aGUgZ3Vlc3QuIElmIEEgaGFzIGEgYmFja2luZyBmaWxlLCB3ZSB3aWxsIHJlYWQgdGhl IHNlY3RvciBmcm9tIEIKICAgaW5zdGVhZCBvZiByZXR1cm5pbmcgYSB6ZXJvIHNlY3Rvci4KMi4g VGhlIGJhY2tpbmcgZmlsZSBkb2Vzbid0IGFmZmVjdCB0aGUgd3JpdGUgb3BlcmF0aW9uLgoKUUVN VSBoYXMgYW5vdGhlciBmZWF0dXJlOiBiYWNrdXAgYmxvY2sgam9iCkJhY2t1cCBqb2IgaGFzIHR3 byBmaWxlOiBvbmUgaXMgc291cmNlIGFuZCBhbm90aGVyIGlzIHRoZSB0YXJnZXQuIEl0IGhhcyBz b21lIHJ1bm5pbmcKbW9kZS4gRm9yIGJsb2NrIHJlcGxpY2F0aW9uLCB3ZSB1c2UgdGhlIG1vZGUg InN5bmM9bm9uZSIuIEluIHRoaXMgbW9kZSwgd2Ugd2lsbCByZWFkCnRoZSBkYXRhIGZyb20gdGhl IHNvdXJjZSBkaXNrIGJlZm9yZSB3ZSBtb2RpZnkgaXQsIGFuZCB3cml0ZSBpdCB0byB0aGUgdGFy Z2V0IGRpc2suCldlIGtlZXAgYSBiaXRtYXAgdG8gcmVtZWJlciB3aGljaCBzZWN0b3IgaXMgYmFj a3VwZWQgZnJvbSB0aGUgc291cmNlIGRpc2sgdG8gdGhlCnRhcmdldCBkaXNrLiBJZiB0aGUgdGFy Z2V0IGRpc2sgaXMgYW4gZW1wdHkgZGlzaywgYW5kIGVtcHR5IGRpc2sncyBiYWNraW5nIGZpbGUg aXMKdGhlIHNvdXJjZSBkaXNrLCB3ZSBjYW4gcmVhZCBmcm9tIHRoZSB0YXJnZXQgZGlzayB0byBn ZXQgdGhlIHNvdXJjZSBkaXNrJ3Mgb3JpZ2lubmFsIGRhdGEuCgoKSG93IGRvZXMgYmxvY2sgcmVw bGljYXRpb24gd29yazoKQS4gcHJpbWFyeSBxZW11OgoxLiB1c2UgdGhlIGJsb2NrIGRyaXZlciBx dW9ydW06IGl0IHdpbGwgcmVhZCBmcm9tIGFsbCBjaGlsZHJlbiBhbmQgd3JpdGUgdG8gYWxsIGNo aWxkcmVuLgogICBjaGlsZCAwOiByZWFsIGRpc2sKICAgY2hpbGQgMTogbmJkIGNsaWVudAogICBy ZWFkaW5nIGZyb20gY2hpbGQgMSB3aWxsIGZhaWwsIGJ1dCB3ZSB1c2UgdGhlIGZpZm8gbW9kZS4g SW4gdGhpcyBtb2RlLCB3ZSByZWFkIGZyb20KICAgY2hpbGQgMCB3aWxsIHN1Y2Nlc3MgYW5kIHdl IGRvbid0IHJlYWQgZnJvbSBjaGlsZCAwCiAgIHdyaXRlIHRvIGNoaWxkIDE6IGJlY2F1c2UgY2hp bGQgMSBpcyBuYmQgY2xpZW50LCBpdCB3aWxsIGZvcndhcmQgdGhlIHdyaXRlIHJlcXVlc3QgdG8K ICAgbmJkIHNlcnZlcgoKQi4gc2Vjb25kYXJ5IHFlbXU6CldlIGhhdmUgMyBkaXNrczogYWN0aXZl IGRpc2soY2FsbGVkIGl0IEEpLCBoaWRkZW4gZGlzayhjYWxsZWQgaXQgSCksIGFuZCBzZWNvbmRh cnkgZGlzawoocmVhbCBkaXNrLCBjYWxsZWQgaXQgUykuCkEncyBiYWNraW5nIGZpbGUgaXMgSCwg YW5kIEgncyBiYWNraW5nIGZpbGUgaXMgUy4KV2UgYWxzbyBzdGFydCBhIGJhY2t1cCBqb2I6IHRo ZSBzb3VyY2UgZGlzayBpcyBTLCBhbmQgdGhlIHRhcmdldCBkaXNrIGlzIEguCndlIHJ1biBuYmQg c2VydmVyIGluIHNlY29uZGFyeSBxZW11LiBBbmQgdGhlIG5iZCBzZXJ2ZXIgd2lsbCB3cml0ZSB0 byBTLgoKQmVmb3JlIHJlc3VtaW5nIGJvdGggcHJpbWFyeSB2bSBhbmQgc2Vjb25kYXJ5IHZtOiB0 aGUgc3RhdGUgaXM6CjEuIHByaW1hcnkgZGlzayBhbmQgc2Vjb25kYXJ5IGRpc2sgYXJlIGluIHRo ZSBjb25zaXN0ZW50IHN0YXRlKGNvbnRhaW4gdGhlIHNhbWUgZGF0YSkKMi4gYWN0aXZlIGRpc2sg YW5kIGhpZGRlbiBkaXNrIGFyZSB0aGUgZW1wdHkgZGlzawpXaGVuIHRoZSBndWVzdCBpcyBydW5u aW5nOgoxLiBOQkQgc2VydmVyIHJlY2VpdmVzIHRoZSBwcmltYXJ5IHdyaXRlIG9wZXJhdGlvbiBh bmQgd3JpdGVzIHRoZSBkYXRhIHRvIFMKMi4gQmVmb3JlIHdlIHdyaXRlIGRhdGEgdG8gUywgdGhl IGJhY2t1cCBqb2Igd2lsbCByZWFkIHRoZSBvcmlnaW5hbCBkYXRhIGFuZCBiYWNrdXAgaXQKICAg dG8gSAozLiBUaGUgc2Vjb25kYXJ5IHZtIHdpbGwgd3JpdGUgZGF0YSB0byBBLgo0LiBJZiBzZWNv bmRhcnkgdm0gd2lsbCByZWFkIGRhdGEgZnJvbSBBOgogICBJLiBJZiB0aGUgc2VjdG9yIGlzIGFs bG9jYXRlZCBpbiBBLCByZWFkIGl0IGZyb20gQS4KICBJSS4gT3RoZXJ3aXNlLCB0aGUgc2Vjb25k YXJ5IHZtIGRvZXNuJ3QgbW9kaWZ5IHRoaXMgc2VjdG9yIGFmdGVyIHRoZSBsYXRlc3QgaXMgcmVz dW1lZC4KIElJSS4gSW4gdGhpcyBjYXNlLCB3ZSByZWFkIGl0IGZyb20gSC4gV2UgY2FuIHJlYWQg UydzIG9yaWdpbmFsIGRhdGEgZnJvbSBIKFNlZSB0aGUgZXhwbGFuYXRpb24KICAgICAgSW4gYmFj a3VwIGpvYikuCgpJZiB3ZSBoYXZlIG1vcmUgdGhhbiAxIHJlYWwgZGlzaywgd2UgY2FuIHVzZSBl eHBvcnRuYW1lIHRvIHRhZyBlYWNoIGRpc2suIEVhY2ggcGFpciBvZiBwcmltYXJ5IGRpc2sgYW5k CnNlY29uZGFyeSBkaXNrIHNob3VsZCBoYXZlIHRoZSBzYW1lIGV4cG9ydCBuYW1lLgoKPiAKPj4g K2NvbG8taG9zdAo+PiArLS0tLS0tLS0tCj4+ICsKPj4gK0Rlc2NyaXB0aW9uOiAgICAgICAgICAg U2Vjb25kYXJ5IGhvc3QncyBhZGRyZXNzCj4+ICtNYW5kYXRvcnk6ICAgICAgICAgICAgIFllcyB3 aGVuIENPTE8gZW5hYmxlZAo+IAo+IElzIGl0IHBlcm1pdHRlZCB0byBzcGVjaWZ5IGEgaG9zdCBE TlMgbmFtZSA/CgpJSVJDLCBJIHRoaW5rIGl0IGlzIE9LLgoKPiAKPj4gKyAgICBpZiAobGlieGxf ZGVmYm9vbF92YWwoZGlzay0+Y29sb19lbmFibGUpKSB7Cj4+ICsgICAgICAgIHRtcCA9IHhzX3Jl YWQoY3R4LT54c2gsIFhCVF9OVUxMLAo+PiArICAgICAgICAgICAgICAgICAgICAgIEdDU1BSSU5U RigiJXMvY29sby1wb3J0IiwgYmVfcGF0aCksICZsZW4pOwo+PiArICAgICAgICBpZiAoIXRtcCkg ewo+PiArICAgICAgICAgICAgTE9HKEVSUk9SLCAiTWlzc2luZyB4ZW5zdG9yZSBub2RlICVzL2Nv bG8tcG9ydCIsIGJlX3BhdGgpOwo+PiArICAgICAgICAgICAgZ290byBjbGVhbnVwOwo+PiArICAg ICAgICB9Cj4+ICsgICAgICAgIGRpc2stPmNvbG9fcG9ydCA9IHRtcDsKPiAKPiBUaGlzIGlzIHF1 aXRlIHJlcGV0aXRpdmUgY29kZS4KClllcy4gV2lsbCBpbnRyb2R1Y2UgYSBuZXcgZnVuY3Rpb24g dG8gYXZvaWQgaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4KCj4gCj4gCj4+IGRpZmYgLS1naXQgYS90 b29scy9saWJ4bC9saWJ4bF9jcmVhdGUuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCj4+ IGluZGV4IDM2MTBhMzkuLmJmZjA4YjAgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs X2NyZWF0ZS5jCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2NyZWF0ZS5jCj4+IEBAIC0xODAw LDEyICsxODAwLDI5IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9jcmVhdGVfY2IobGlieGxfX2VnYyAq ZWdjLAo+IC4uLgo+PiBAQCAtMjU2LDYgKzI4MCwzNiBAQCBzdGF0aWMgaW50IGRpc2tfdHJ5X2Jh Y2tlbmQoZGlza190cnlfYmFja2VuZF9hcmdzICphLAo+PiAgICAgIExPRyhERUJVRywgIkRpc2sg dmRldj0lcywgYmFja2VuZCAlcyBub3QgY29tcGF0aWJsZSB3aXRoIHNjcmlwdD0uLi4iLAo+PiAg ICAgICAgICBhLT5kaXNrLT52ZGV2LCBsaWJ4bF9kaXNrX2JhY2tlbmRfdG9fc3RyaW5nKGJhY2tl bmQpKTsKPj4gICAgICByZXR1cm4gMDsKPj4gKwo+PiArIGJhZF9jb2xvOgo+PiArICAgIExPRyhE RUJVRywgIkRpc2sgdmRldj0lcywgYmFja2VuZCAlcyBub3QgY29tcGF0aWJsZSB3aXRoIGNvbG8i LAo+PiArICAgICAgICBhLT5kaXNrLT52ZGV2LCBsaWJ4bF9kaXNrX2JhY2tlbmRfdG9fc3RyaW5n KGJhY2tlbmQpKTsKPj4gKyAgICByZXR1cm4gMDsKPiAKPiBUaGlzIGlzIGNvcnJlY3QgaGVyZSwg SSB0aGluay4KPiAKPj4gKyBiYWRfY29sb19ob3N0Ogo+PiArICAgIExPRyhERUJVRywgIkRpc2sg dmRldj0lcywgYmFja2VuZCAlcyBuZWVkcyBjb2xvLWhvc3Q9Li4uIGZvciBjb2xvIiwKPj4gKyAg ICAgICAgYS0+ZGlzay0+dmRldiwgbGlieGxfZGlza19iYWNrZW5kX3RvX3N0cmluZyhiYWNrZW5k KSk7Cj4+ICsgICAgcmV0dXJuIDA7Cj4gCj4gSSB0aGluayB0aGVzZSBvcHRpb25zIHNob3VsZCBi ZSBjaGVja2VkIGxhdGVyLiAgZGlza190cnlfYmFja2VuZCBpc24ndAo+IHRoZSBwbGFjZSBmb3Ig Z2VuZXJhbCBwYXJhbWV0ZXIgY2hlY2tpbmc7IGl0IGlzIHNlYXJjaGluZyBmb3Igd2hpY2gKPiBi YWNrZW5kIHRvIHRyeS4KCkhtbSwgZG8geW91IG1lYW4gd2UgY2hlY2sgaXQgd2hlbiB3ZSBuZWVk IHRvIHVzZSBDT0xPPwoKPiAKPj4gIGludCBsaWJ4bF9fZGV2aWNlX2Rpc2tfc2V0X2JhY2tlbmQo bGlieGxfX2djICpnYywgbGlieGxfZGV2aWNlX2Rpc2sgKmRpc2spIHsKPj4gZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMgYi90b29scy9saWJ4bC9saWJ4bF9kbS5jCj4+IGluZGV4 IDRhY2EzOGUuLmJhMTcyNTEgMTAwNjQ0Cj4+IC0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMK Pj4gKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG0uYwo+PiBAQCAtNzUxLDYgKzc1MSwxMzkgQEAg c3RhdGljIGludCBsaWJ4bF9fZG1fcnVuYXNfaGVscGVyKGxpYnhsX19nYyAqZ2MsIGNvbnN0IGNo YXIgKnVzZXJuYW1lKQo+IC4uLgo+PiArc3RhdGljIGNoYXIgKnFlbXVfZGlza19zY3NpX2RyaXZl X3N0cmluZyhsaWJ4bF9fZ2MgKmdjLCBjb25zdCBjaGFyICpwZGV2X3BhdGgsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bml0LCBjb25zdCBjaGFyICpm b3JtYXQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxpYnhsX2RldmljZV9kaXNrICpkaXNrLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgY29sb19tb2RlKQo+PiArewo+PiArICAgIGNoYXIgKmRyaXZlID0g TlVMTDsKPj4gKyAgICBjb25zdCBjaGFyICpleHBvcnRuYW1lID0gZGlzay0+Y29sb19leHBvcnQ7 Cj4+ICsgICAgY29uc3QgY2hhciAqYWN0aXZlX2Rpc2sgPSBkaXNrLT5hY3RpdmVfZGlzazsKPj4g KyAgICBjb25zdCBjaGFyICpoaWRkZW5fZGlzayA9IGRpc2stPmhpZGRlbl9kaXNrOwo+PiArCj4+ ICsgICAgc3dpdGNoIChjb2xvX21vZGUpIHsKPj4gKyAgICBjYXNlIExJQlhMX19DT0xPX05PTkU6 Cj4+ICsgICAgICAgIGRyaXZlID0gbGlieGxfX3NwcmludGYKPj4gKyAgICAgICAgICAgIChnYywg ImZpbGU9JXMsaWY9c2NzaSxidXM9MCx1bml0PSVkLGZvcm1hdD0lcyxjYWNoZT13cml0ZWJhY2si LAo+PiArICAgICAgICAgICAgIHBkZXZfcGF0aCwgdW5pdCwgZm9ybWF0KTsKPiAKPiBJIHRoaW5r IHRoaXMgd291bGQgYmUgYSBsb3QgY2xlYXJlciBpZiB0aGUgcmVmYWN0b3Jpbmcgd2FzIHNwbGl0 IGludG8KPiBhIHNlcGVyYXRlIHBhdGNoLgoKT0suCgo+IAo+PiAgICAgICAgICAgICAgICAgIGlm IChzdHJuY21wKGRpc2tzW2ldLnZkZXYsICJzZCIsIDIpID09IDApIHsKPj4gLSAgICAgICAgICAg ICAgICAgICAgZHJpdmUgPSBsaWJ4bF9fc3ByaW50Zgo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgKGdjLCAiZmlsZT0lcyxpZj1zY3NpLGJ1cz0wLHVuaXQ9JWQsZm9ybWF0PSVzLHJlYWRvbmx5 PSVzLGNhY2hlPXdyaXRlYmFjayIsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgcGRldl9w YXRoLCBkaXNrLCBmb3JtYXQsIGRpc2tzW2ldLnJlYWR3cml0ZSA/ICJvZmYiIDogIm9uIik7Cj4+ ICsgICAgICAgICAgICAgICAgICAgIGlmIChjb2xvX21vZGUgPT0gTElCWExfX0NPTE9fU0VDT05E QVJZKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICogLWRyaXZlIGlmPW5vbmUsZHJpdmVyPWZvcm1hdCxmaWxlPXBkZXZfcGF0aCxc Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZD1leHBvcnRuYW1lCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgKi8KPiAKPiBJIHRoaW5rIHRoaXMgY29tbWVudCBhZGRzIG5vdGhp bmcgdG8gdGhlIGNvZGUgYW5kIGNvdWxkIGJlIHByb2ZpdGFibHkKPiBvbWl0dGVkLgoKT0suCgo+ IAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgZHJpdmUgPSBsaWJ4bF9fc3ByaW50Zgo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYywgImlmPW5vbmUsZHJpdmVyPSVzLGZpbGU9 JXMsaWQ9JXMiLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHBkZXZf cGF0aCwgZGlza3NbaV0uY29sb19leHBvcnQpOwo+IAo+IEkgZG9uJ3QgdW5kZXJzdGFuZCBob3cg dGhpcyB3b3JrcyBoZXJlLiAgQ09MT19TRUNPTkRBUlkgc2VlbXMgdG8KPiBzdXBwcmVzcyB0aGUg cmVzdCBvZiB0aGUgZGlzayBzcGVjaWZpY2F0aW9uLgoKQ09MT19TRUNPTkRBWSB3aWxsIHVzZSB0 d28gZGlza3M6IG9uZSBpcyBmb3IgUywgYW5kIG9uZSBpcyBmb3IgQS4KSCBpcyBzZXBlY2lmaWVk IGluIEEuIFRoaXMgbGluZSBpcyBmb3IgUywgYW5kIHRoZSBjb2RlcyBmb3IgQSBpcwppbiB0aGUg ZnVuY3Rpb24gcWVtdV9kaXNrX3Njc2lfZHJpdmVfc3RyaW5nKCkuCgo+IAo+IEFsc28sIHRoaXMg c2FtZSBsb2dpYyBzZWVtcyB0byBhcHBlYXIgbWFueSB0aW1lcy4gIE1heWJlIGl0IGNvdWxkIGJl Cj4gY2VudHJhbGlzZWQuICBQZXJoYXBzIEkgd291bGQgYmUgYWJsZSB0byBhZHZpc2UgbW9yZSBj bGVhcmx5IGlmIEkKPiB1bmRlcnN0b29kIGhvdyB0aGlzIHdhcyBwdXQgdG9nZXRoZXIuCj4gCj4+ IGRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwgYi90b29scy9saWJ4bC9s aWJ4bF90eXBlcy5pZGwKPj4gaW5kZXggOWIwYTUzNy4uYTIwNzhkMSAxMDA2NDQKPj4gLS0tIGEv dG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCj4+ICsrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5 cGVzLmlkbAo+PiBAQCAtNTc1LDYgKzU3NSwxMyBAQCBsaWJ4bF9kZXZpY2VfZGlzayA9IFN0cnVj dCgiZGV2aWNlX2Rpc2siLCBbCj4+ICAgICAgKCJpc19jZHJvbSIsIGludGVnZXIpLAo+PiAgICAg ICgiZGlyZWN0X2lvX3NhZmUiLCBib29sKSwKPj4gICAgICAoImRpc2NhcmRfZW5hYmxlIiwgbGli eGxfZGVmYm9vbCksCj4+ICsgICAgKCJjb2xvX2VuYWJsZSIsIGxpYnhsX2RlZmJvb2wpLAo+PiAr ICAgICgiY29sb19yZXN0b3JlX2VuYWJsZSIsIGxpYnhsX2RlZmJvb2wpLAo+PiArICAgICgiY29s b19ob3N0Iiwgc3RyaW5nKSwKPj4gKyAgICAoImNvbG9fcG9ydCIsIHN0cmluZyksCj4+ICsgICAg KCJjb2xvX2V4cG9ydCIsIHN0cmluZyksCj4+ICsgICAgKCJhY3RpdmVfZGlzayIsIHN0cmluZyks Cj4+ICsgICAgKCJoaWRkZW5fZGlzayIsIHN0cmluZykKPiAKPiBJbiBnZW5lcmFsLCBtYW55IHRo ZXNlIHNob3VsZCBwcm9iYWJseSBub3QgYmUgc3RyaW5ncy4gIENlcnRhaW5seSB0aGUKPiBwb3J0 IHNob3VsZCBiZSBhbiBpbnRlZ2VyLiAgSSBkb24ndCBxdWl0ZSB1bmRlcnN0YW5kIHRoZSBzZW1h bnRpY3Mgb2YKPiB0aGUgb3RoZXJzLgoKWWVzLCB0aGUgcG9ydCBzaG91bGQgYmUgYW4gaW50ZWdl ci4gV2lsbCBmaXggaXQgaW4gdGhlIG5leHQgdmVyc2lvbi4KClRoYW5rcwpXZW4gQ29uZ3lhbmcK Cj4gCj4gSWFuLgo+IAo+IAo+IC4KPiAKCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==