From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:33034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1go56m-0002tf-U9 for qemu-devel@nongnu.org; Mon, 28 Jan 2019 06:29:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1go56j-0004Cn-Uy for qemu-devel@nongnu.org; Mon, 28 Jan 2019 06:29:43 -0500 From: Vladimir Sementsov-Ogievskiy Date: Mon, 28 Jan 2019 11:29:23 +0000 Message-ID: <643f318f-392d-1370-f952-b2a01e7d9bb7@virtuozzo.com> References: <20181229122027.42245-1-vsementsov@virtuozzo.com> <20181229122027.42245-12-vsementsov@virtuozzo.com> <1ea09d99-04ff-711e-9137-cdae33ca8681@redhat.com> In-Reply-To: <1ea09d99-04ff-711e-9137-cdae33ca8681@redhat.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <022A082B85C12948BD513774702DC2FA@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v5 11/11] block/backup: use backup-top instead of write notifiers List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Max Reitz , "qemu-block@nongnu.org" , "qemu-devel@nongnu.org" Cc: "fam@euphon.net" , "stefanha@redhat.com" , "jcody@redhat.com" , "kwolf@redhat.com" , Denis Lunev , "eblake@redhat.com" , "jsnow@redhat.com" MTguMDEuMjAxOSAxNzo1NiwgTWF4IFJlaXR6IHdyb3RlOg0KPiBPbiAyOS4xMi4xOCAxMzoyMCwg VmxhZGltaXIgU2VtZW50c292LU9naWV2c2tpeSB3cm90ZToNCj4+IERyb3Agd3JpdGUgbm90aWZp ZXJzIGFuZCB1c2UgZmlsdGVyIG5vZGUgaW5zdGVhZC4gQ2hhbmdlczoNCj4+DQo+PiAxLiBjb3B5 LWJlZm9yZS13cml0ZXMgbm93IGhhbmRsZWQgYnkgZmlsdGVyIG5vZGUsIHNvLCBkcm9wIGFsbA0K Pj4gICAgIGlzX3dyaXRlX25vdGlmaWVyIGFyZ3VtZW50cy4NCj4+DQo+PiAyLiB3ZSBkb24ndCBo YXZlIGludGVyc2VjdGluZyByZXF1ZXN0cywgc28gdGhlaXIgaGFuZGxpbmcgaXMgZHJvcHBlZC4N Cj4+IEluc3RlYWQsIHN5bmNocm9uaXphdGlvbiB3b3JrcyBhcyBmb2xsb3dzOg0KPj4gd2hlbiBi YWNrdXAgb3IgYmFja3VwLXRvcCBzdGFydHMgY29weWluZyBvZiBzb21lIGFyZWEgaXQgZmlyc3Rs eQ0KPj4gY2xlYXJzIGNvcHktYml0bWFwIGJpdHMsIGFuZCBub2JvZHkgdG91Y2hlcyBhcmVhcywg bm90IG1hcmtlZCB3aXRoDQo+PiBkaXJ0eSBiaXRzIGluIGNvcHktYml0bWFwLCBzbyB0aGVyZSBp cyBubyBpbnRlcnNlY3Rpb24uIEFsc28sIGJhY2t1cA0KPj4gam9iIGNvcHkgb3BlcmF0aW9ucyBh cmUgc3Vycm91bmRlZCBieSBiZHJ2IHJlZ2lvbiBsb2NrLCB3aGljaCBpcw0KPj4gYWN0dWFsbHkg c2VyaWFsaXppbmcgcmVxdWVzdCwgdG8gbm90IGludGVyZmVyIHdpdGggZ3Vlc3Qgd3JpdGVzIGFu ZA0KPj4gbm90IHJlYWQgY2hhbmdlZCBkYXRhIGZyb20gc291cmNlIChiZWZvcmUgcmVhZGluZyB3 ZSBjbGVhcg0KPj4gY29ycmVzcG9uZGluZyBiaXQgaW4gY29weS1iaXRtYXAsIHNvLCB0aGlzIGFy ZWEgaXMgbm90IG1vcmUgaGFuZGxlZCBieQ0KPj4gYmFja3VwLXRvcCkuDQo+Pg0KPj4gMy4gVG8g c3luYyB3aXRoIGluLWZsaWdodCByZXF1ZXN0cyB3ZSBub3cganVzdCBkcmFpbiBob29rIG5vZGUs IHdlDQo+PiBkb24ndCBuZWVkIHJ3LWxvY2suDQo+Pg0KPj4gNC4gQWZ0ZXIgdGhlIHdob2xlIGJh Y2t1cCBsb29wICh0b3AsIGZ1bGwsIGluY3JlbWVudGFsIG1vZGVzKSwgd2UgbmVlZA0KPj4gdG8g Y2hlY2sgZm9yIG5vdCBjb3BpZWQgY2x1c3RlcnMsIHdoaWNoIHdlcmUgdW5kZXIgYmFja3VwLXRv cCBvcGVyYXRpb24NCj4+IGFuZCB3ZSBza2lwcGVkIHRoZW0sIGJ1dCBiYWNrdXAtdG9wIG9wZXJh dGlvbiBmYWlsZWQsIGVycm9yIHJldHVybmVkIHRvDQo+PiB0aGUgZ3Vlc3QgYW5kIGRpcnR5IGJp dHMgc2V0IGJhY2suDQo+Pg0KPj4gNS4gRG9uJ3QgY3JlYXRlIGFkZGl0aW9uYWwgYmxrLCB1c2Ug YmFja3VwLXRvcCBjaGlsZHJlbiBmb3IgY29weQ0KPj4gb3BlcmF0aW9ucy4NCj4+DQo+PiBTaWdu ZWQtb2ZmLWJ5OiBWbGFkaW1pciBTZW1lbnRzb3YtT2dpZXZza2l5IDx2c2VtZW50c292QHZpcnR1 b3p6by5jb20+DQo+PiAtLS0NCj4+ICAgYmxvY2svYmFja3VwLmMgfCAyODUgKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPj4gICAxIGZpbGUgY2hhbmdl ZCwgMTQ5IGluc2VydGlvbnMoKyksIDEzNiBkZWxldGlvbnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0 IGEvYmxvY2svYmFja3VwLmMgYi9ibG9jay9iYWNrdXAuYw0KPj4gaW5kZXggODhjMDI0MmI0ZS4u ZTMzMjkwOWZiNyAxMDA2NDQNCj4+IC0tLSBhL2Jsb2NrL2JhY2t1cC5jDQo+PiArKysgYi9ibG9j ay9iYWNrdXAuYw0KPiANCj4gWy4uLl0NCj4gDQo+PiBAQCAtMzAwLDIxICsyMzEsMjMgQEAgc3Rh dGljIHZvaWQgYmFja3VwX2Fib3J0KEpvYiAqam9iKQ0KPj4gICBzdGF0aWMgdm9pZCBiYWNrdXBf Y2xlYW4oSm9iICpqb2IpDQo+PiAgIHsNCj4+ICAgICAgIEJhY2t1cEJsb2NrSm9iICpzID0gY29u dGFpbmVyX29mKGpvYiwgQmFja3VwQmxvY2tKb2IsIGNvbW1vbi5qb2IpOw0KPj4gLSAgICBhc3Nl cnQocy0+dGFyZ2V0KTsNCj4+IC0gICAgYmxrX3VucmVmKHMtPnRhcmdldCk7DQo+PiArDQo+PiAr ICAgIC8qIFdlIG11c3QgY2xlYW4gaXQgdG8gbm90IGNyYXNoIGluIGJhY2t1cF9kcmFpbi4gKi8N Cj4+ICAgICAgIHMtPnRhcmdldCA9IE5VTEw7DQo+IA0KPiBXaHkgbm90IHNldCBzLT5zb3VyY2Ug dG8gTlVMTCBhbG9uZyB3aXRoIGl0PyAgSXQgbWFrZXMgc2Vuc2UgaWYgeW91J3JlDQo+IGdvaW5n IHRvIGRyb3AgdGhlIGJhY2t1cC10b3Agbm9kZSBiZWNhdXNlIGJvdGggb2YgdGhlc2UgYXJlIGl0 cyBjaGlsZHJlbi4NCg0KYWdyZWUuDQoNCj4gDQo+PiAgIA0KPj4gICAgICAgaWYgKHMtPmNvcHlf Yml0bWFwKSB7DQo+PiAgICAgICAgICAgaGJpdG1hcF9mcmVlKHMtPmNvcHlfYml0bWFwKTsNCj4+ ICAgICAgICAgICBzLT5jb3B5X2JpdG1hcCA9IE5VTEw7DQo+PiAgICAgICB9DQo+PiArDQo+PiAr ICAgIGJkcnZfYmFja3VwX3RvcF9kcm9wKHMtPmJhY2t1cF90b3ApOw0KPj4gICB9DQo+IA0KPiBb Li4uXQ0KPiANCj4+IEBAIC0zODYsMjEgKzMxOSw0NSBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9m biBiYWNrdXBfcnVuX2luY3JlbWVudGFsKEJhY2t1cEJsb2NrSm9iICpqb2IpDQo+PiAgICAgICBi b29sIGVycm9yX2lzX3JlYWQ7DQo+PiAgICAgICBpbnQ2NF90IG9mZnNldDsNCj4+ICAgICAgIEhC aXRtYXBJdGVyIGhiaTsNCj4+ICsgICAgdm9pZCAqbG9jayA9IE5VTEw7DQo+PiAgIA0KPj4gICAg ICAgaGJpdG1hcF9pdGVyX2luaXQoJmhiaSwgam9iLT5jb3B5X2JpdG1hcCwgMCk7DQo+PiAtICAg IHdoaWxlICgob2Zmc2V0ID0gaGJpdG1hcF9pdGVyX25leHQoJmhiaSkpICE9IC0xKSB7DQo+PiAr ICAgIHdoaWxlIChoYml0bWFwX2NvdW50KGpvYi0+Y29weV9iaXRtYXApKSB7DQo+PiArICAgICAg ICBvZmZzZXQgPSBoYml0bWFwX2l0ZXJfbmV4dCgmaGJpKTsNCj4+ICsgICAgICAgIGlmIChvZmZz ZXQgPT0gLTEpIHsNCj4+ICsgICAgICAgICAgICAvKg0KPj4gKyAgICAgICAgICAgICAqIHdlIG1h eSBoYXZlIHNraXBwZWQgc29tZSBjbHVzdGVycywgd2hpY2ggd2VyZSBoYW5kbGVkIGJ5DQo+PiAr ICAgICAgICAgICAgICogYmFja3VwLXRvcCwgYnV0IGZhaWxlZCBhbmQgZmluaXNoZWQgYnkgcmV0 dXJuaW5nIGVycm9yIHRvDQo+PiArICAgICAgICAgICAgICogdGhlIGd1ZXN0IGFuZCBzZXQgZGly dHkgYml0IGJhY2suDQo+PiArICAgICAgICAgICAgICovDQo+PiArICAgICAgICAgICAgaGJpdG1h cF9pdGVyX2luaXQoJmhiaSwgam9iLT5jb3B5X2JpdG1hcCwgMCk7DQo+PiArICAgICAgICAgICAg b2Zmc2V0ID0gaGJpdG1hcF9pdGVyX25leHQoJmhiaSk7DQo+PiArICAgICAgICAgICAgYXNzZXJ0 KG9mZnNldCk7DQo+IA0KPiBJIHRoaW5rIHlvdSB3YW50IHRvIGFzc2VydCAib2Zmc2V0ID49IDAi Lg0KPiANCj4+ICsgICAgICAgIH0NCj4+ICsNCj4+ICsgICAgICAgIGxvY2sgPSBiZHJ2X2NvX3Ry eV9sb2NrKGpvYi0+c291cmNlLCBvZmZzZXQsIGpvYi0+Y2x1c3Rlcl9zaXplKTsNCj4+ICsgICAg ICAgIC8qDQo+PiArICAgICAgICAgKiBEaXJ0eSBiaXQgaXMgc2V0LCB3aGljaCBtZWFucyB0aGF0 IHRoZXJlIGFyZSBubyBpbi1mbGlnaHQNCj4+ICsgICAgICAgICAqIHdyaXRlIHJlcXVlc3RzIG9u IHRoaXMgYXJlYS4gV2UgbXVzdCBzdWNjZWVkLg0KPj4gKyAgICAgICAgICovDQo+PiArICAgICAg ICBhc3NlcnQobG9jayk7DQo+IA0KPiBJJ20gbm90IHN1cmUgdGhhdCBpcyB0cnVlIHJpZ2h0IG5v dywgYnV0IG1vcmUgb24gdGhhdCBiZWxvdyBpbiBiYWNrdXBfcnVuKCkuDQo+IA0KPj4gKw0KPj4g ICAgICAgICAgIGRvIHsNCj4+ICAgICAgICAgICAgICAgaWYgKHlpZWxkX2FuZF9jaGVjayhqb2Ip KSB7DQo+PiArICAgICAgICAgICAgICAgIGJkcnZfY29fdW5sb2NrKGxvY2spOw0KPj4gICAgICAg ICAgICAgICAgICAgcmV0dXJuIDA7DQo+PiAgICAgICAgICAgICAgIH0NCj4+IC0gICAgICAgICAg ICByZXQgPSBiYWNrdXBfZG9fY293KGpvYiwgb2Zmc2V0LA0KPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgam9iLT5jbHVzdGVyX3NpemUsICZlcnJvcl9pc19yZWFkLCBmYWxzZSk7 DQo+PiArICAgICAgICAgICAgcmV0ID0gYmFja3VwX2RvX2Nvdyhqb2IsIG9mZnNldCwgam9iLT5j bHVzdGVyX3NpemUsICZlcnJvcl9pc19yZWFkKTsNCj4+ICAgICAgICAgICAgICAgaWYgKHJldCA8 IDAgJiYgYmFja3VwX2Vycm9yX2FjdGlvbihqb2IsIGVycm9yX2lzX3JlYWQsIC1yZXQpID09DQo+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJMT0NLX0VSUk9SX0FDVElPTl9SRVBPUlQp DQo+PiAgICAgICAgICAgICAgIHsNCj4+ICsgICAgICAgICAgICAgICAgYmRydl9jb191bmxvY2so bG9jayk7DQo+PiAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gICAgICAgICAgICAg ICB9DQo+PiAgICAgICAgICAgfSB3aGlsZSAocmV0IDwgMCk7DQo+PiArDQo+PiArICAgICAgICBi ZHJ2X2NvX3VubG9jayhsb2NrKTsNCj4+ICsgICAgICAgIGxvY2sgPSBOVUxMOw0KPiANCj4gVGhp cyBzdGF0ZW1lbnQgc2VlbXMgdW5uZWNlc3NhcnkgaGVyZS4NCj4gDQo+PiAgICAgICB9DQo+PiAg IA0KPj4gICAgICAgcmV0dXJuIDA7DQo+IA0KPiBbLi4uXQ0KPiANCj4+IEBAIC00NDcsMjYgKzQw MiwzOSBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBiYWNrdXBfcnVuKEpvYiAqam9iLCBFcnJv ciAqKmVycnApDQo+PiAgICAgICAgICAgaGJpdG1hcF9zZXQocy0+Y29weV9iaXRtYXAsIDAsIHMt Pmxlbik7DQo+PiAgICAgICB9DQo+PiAgIA0KPj4gLSAgICBzLT5iZWZvcmVfd3JpdGUubm90aWZ5 ID0gYmFja3VwX2JlZm9yZV93cml0ZV9ub3RpZnk7DQo+PiAtICAgIGJkcnZfYWRkX2JlZm9yZV93 cml0ZV9ub3RpZmllcihicywgJnMtPmJlZm9yZV93cml0ZSk7DQo+PiAtDQo+PiAgICAgICBpZiAo cy0+c3luY19tb2RlID09IE1JUlJPUl9TWU5DX01PREVfTk9ORSkgew0KPj4gICAgICAgICAgIC8q IEFsbCBiaXRzIGFyZSBzZXQgaW4gY29weV9iaXRtYXAgdG8gYWxsb3cgYW55IGNsdXN0ZXIgdG8g YmUgY29waWVkLg0KPj4gICAgICAgICAgICAqIFRoaXMgZG9lcyBub3QgYWN0dWFsbHkgcmVxdWly ZSB0aGVtIHRvIGJlIGNvcGllZC4gKi8NCj4+ICAgICAgICAgICB3aGlsZSAoIWpvYl9pc19jYW5j ZWxsZWQoam9iKSkgew0KPj4gLSAgICAgICAgICAgIC8qIFlpZWxkIHVudGlsIHRoZSBqb2IgaXMg Y2FuY2VsbGVkLiAgV2UganVzdCBsZXQgb3VyIGJlZm9yZV93cml0ZQ0KPj4gLSAgICAgICAgICAg ICAqIG5vdGlmeSBjYWxsYmFjayBzZXJ2aWNlIENvVyByZXF1ZXN0cy4gKi8NCj4+ICsgICAgICAg ICAgICAvKg0KPj4gKyAgICAgICAgICAgICAqIFlpZWxkIHVudGlsIHRoZSBqb2IgaXMgY2FuY2Vs bGVkLiAgV2UganVzdCBsZXQgb3VyIGJhY2t1cC10b3ANCj4+ICsgICAgICAgICAgICAgKiBmaWxl dGVyIGRyaXZlciBzZXJ2aWNlIENiVyByZXF1ZXN0cy4NCj4gDQo+ICpmaWx0ZXINCj4gDQo+PiAr ICAgICAgICAgICAgICovDQo+PiAgICAgICAgICAgICAgIGpvYl95aWVsZChqb2IpOw0KPj4gICAg ICAgICAgIH0NCj4+ICAgICAgIH0gZWxzZSBpZiAocy0+c3luY19tb2RlID09IE1JUlJPUl9TWU5D X01PREVfSU5DUkVNRU5UQUwpIHsNCj4+ICAgICAgICAgICByZXQgPSBiYWNrdXBfcnVuX2luY3Jl bWVudGFsKHMpOw0KPj4gICAgICAgfSBlbHNlIHsNCj4gDQo+IFsuLi5dDQo+IA0KPj4gQEAgLTUw NSw4ICs0NzQsMjAgQEAgc3RhdGljIGludCBjb3JvdXRpbmVfZm4gYmFja3VwX3J1bihKb2IgKmpv YiwgRXJyb3IgKiplcnJwKQ0KPj4gICAgICAgICAgICAgICBpZiAoYWxsb2NlZCA8IDApIHsNCj4+ ICAgICAgICAgICAgICAgICAgIHJldCA9IGFsbG9jZWQ7DQo+PiAgICAgICAgICAgICAgIH0gZWxz ZSB7DQo+PiArICAgICAgICAgICAgICAgIGlmICghaGJpdG1hcF9nZXQocy0+Y29weV9iaXRtYXAs IG9mZnNldCkpIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgIHRyYWNlX2JhY2t1cF9kb19jb3df c2tpcChqb2IsIG9mZnNldCk7DQo+PiArICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyog YWxyZWFkeSBjb3BpZWQgKi8NCj4+ICsgICAgICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAg ICAgICBpZiAoIWxvY2spIHsNCj4+ICsgICAgICAgICAgICAgICAgICAgIGxvY2sgPSBiZHJ2X2Nv X3RyeV9sb2NrKHMtPnNvdXJjZSwgb2Zmc2V0LCBzLT5jbHVzdGVyX3NpemUpOw0KPj4gKyAgICAg ICAgICAgICAgICAgICAgLyoNCj4+ICsgICAgICAgICAgICAgICAgICAgICAqIERpcnR5IGJpdCBp cyBzZXQsIHdoaWNoIG1lYW5zIHRoYXQgdGhlcmUgYXJlIG5vIGluLWZsaWdodA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICogd3JpdGUgcmVxdWVzdHMgb24gdGhpcyBhcmVhLiBXZSBtdXN0IHN1 Y2NlZWQuDQo+PiArICAgICAgICAgICAgICAgICAgICAgKi8NCj4+ICsgICAgICAgICAgICAgICAg ICAgIGFzc2VydChsb2NrKTsNCj4gDQo+IFdoYXQgaWYgSSBoYXZlIGEgZGlmZmVyZW50IHBhcmVu dCBub2RlIGZvciB0aGUgc291cmNlIHRoYXQgaXNzdWVzDQo+IGNvbmN1cnJlbnQgd3JpdGVzPyAg VGhpcyB1c2VkIHRvIHdvcmsgZmluZSBiZWNhdXNlIHRoZSBiZWZvcmVfd3JpdGUNCj4gbm90aWZp ZXIgd291bGQgc3RpbGwgd29yay4gIEFmdGVyIHRoaXMgcGF0Y2gsIHRoYXQgd291bGQgYmUgYnJv a2VuDQo+IGJlY2F1c2UgdGhvc2Ugd3JpdGVzIHdvdWxkIG5vdCBjYXVzZSBhIENiVy4NCg0KQnV0 IGhhdyBjb3VsZCB5b3UgaGF2ZSB0aGlzIGRpZmZlcmVudCBwYXJlbnQgbm9kZT8gQWZ0ZXIgYXBw ZW5kaW5nIGZpbHRlciwNCnRoZXJlIHNob3VsZCBub3QgYmUgc3VjaCBub2Rlcy4gQW5kIEkgdGhp bmssIGR1cmluZyBiYWNrdXAgaXQgc2hvdWxkIGJlDQpmb3JiaWRkZW4gdG8gYXBwZW5kIG5ldyBw YXJlbnRzIHRvIHNvdXJjZSwgaWdub3JpbmcgZmlsdGVyLCBhcyBpdCBkZWZpbml0ZWx5DQpicmVh a3Mgd2hhdCBmaWx0ZXIgZG9lcy4gQW5kIGl0IGFwcGxpZXMgdG8gb3RoZXIgYmxvY2stam9iIHdp dGggdGhlaXIgZmlsdGVycy4NCklmIHdlIGFwcGVuZGVkIGEgZmlsdGVyLCB3ZSBkb24ndCB3YW50 IHNvbWVvbmUgb3RoZXIgdG8gd3JpdGUgb21pdCBvdXIgZmlsdGVyLg0KDQo+IA0KPiBUaGF0J3Mg bm90IHNvIGJhZCBiZWNhdXNlIHdlIGp1c3QgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCBhbGwgd3Jp dGVzIGdvDQo+IHRocm91Z2ggdGhlIGJhY2t1cC10b3Agbm9kZS4gIFRoYXQgd291bGQgbWFrZSB0 aGlzIGFzc2VydGlvbiB2YWxpZA0KPiBhZ2FpbiwgdG9vLiAgQnV0IHRoYXQgbWVhbnMgd2UgY2Fu bm90IHNoYXJlIFBFUk1fV1JJVEU7IHNlZSBbMV0uDQoNCkJ1dCB3ZSBkb24ndCBzaGFyZSBQRVJN X1dSSVRFIG9uIHNvdXJjZSBpbiBiYWNrdXBfdG9wLCBvbmx5IG9uIHRhcmdldC4NCg0KPiANCj4+ ICsgICAgICAgICAgICAgICAgfQ0KPj4gICAgICAgICAgICAgICAgICAgcmV0ID0gYmFja3VwX2Rv X2NvdyhzLCBvZmZzZXQsIHMtPmNsdXN0ZXJfc2l6ZSwNCj4+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZXJyb3JfaXNfcmVhZCwgZmFsc2UpOw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZlcnJvcl9pc19yZWFkKTsNCj4+ICAgICAgICAgICAg ICAgfQ0KPj4gICAgICAgICAgICAgICBpZiAocmV0IDwgMCkgew0KPj4gICAgICAgICAgICAgICAg ICAgLyogRGVwZW5kaW5nIG9uIGVycm9yIGFjdGlvbiwgZmFpbCBub3cgb3IgcmV0cnkgY2x1c3Rl ciAqLw0KPj4gQEAgLTUxNiwxNyArNDk3LDM0IEBAIHN0YXRpYyBpbnQgY29yb3V0aW5lX2ZuIGJh Y2t1cF9ydW4oSm9iICpqb2IsIEVycm9yICoqZXJycCkNCj4+ICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsNCj4+ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+PiAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0IC09IHMtPmNsdXN0ZXJfc2l6ZTsNCj4+ICsgICAgICAgICAgICAgICAg ICAgIHJldHJ5ID0gdHJ1ZTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4+ ICAgICAgICAgICAgICAgICAgIH0NCj4+ICAgICAgICAgICAgICAgfQ0KPj4gICAgICAgICAgIH0N Cj4+ICsgICAgICAgIGlmIChsb2NrKSB7DQo+PiArICAgICAgICAgICAgYmRydl9jb191bmxvY2so bG9jayk7DQo+PiArICAgICAgICAgICAgbG9jayA9IE5VTEw7DQo+PiArICAgICAgICB9DQo+PiAr ICAgICAgICBpZiAocmV0ID09IDAgJiYgIWpvYl9pc19jYW5jZWxsZWQoam9iKSAmJg0KPj4gKyAg ICAgICAgICAgIGhiaXRtYXBfY291bnQocy0+Y29weV9iaXRtYXApKQ0KPj4gKyAgICAgICAgew0K Pj4gKyAgICAgICAgICAgIC8qDQo+PiArICAgICAgICAgICAgICogd2UgbWF5IGhhdmUgc2tpcHBl ZCBzb21lIGNsdXN0ZXJzLCB3aGljaCB3ZXJlIGhhbmRsZWQgYnkNCj4+ICsgICAgICAgICAgICAg KiBiYWNrdXAtdG9wLCBidXQgZmFpbGVkIGFuZCBmaW5pc2hlZCBieSByZXR1cm5pbmcgZXJyb3Ig dG8NCj4+ICsgICAgICAgICAgICAgKiB0aGUgZ3Vlc3QgYW5kIHNldCBkaXJ0eSBiaXQgYmFjay4N Cj4gDQo+IFNvIGl0J3MgYSBtYXR0ZXIgb2YgYSByYWNlPw0KPiANCj4+ICsgICAgICAgICAgICAg Ki8NCj4+ICsgICAgICAgICAgICBnb3RvIGl0ZXJhdGlvbjsNCj4+ICsgICAgICAgIH0NCj4gDQo+ IFdoeSBub3Qgd3JhcCBldmVyeXRoaW5nIGluIGEgZG8ge30gd2hpbGUgKHJldCA9PSAwICYmICFq b2JfaXMuLi4pDQo+IGluc3RlYWQ/ICBCZWNhdXNlIGl0IHdvdWxkIG1lYW4gcmVpbmRlbnRpbmcg ZXZlcnl0aGluZz8NCg0KRG9uJ3QgcmVtZW1iZXIsIGJ1dCBhc3N1bWUgdGhhdCB5ZXMuIEFuZCB0 aGlzIGNvZGUgaXMgYW55d2F5ICJUbyBiZSByZWZhY3RvcmVkIiwNCkkgd2FudCBhbGwgRlVMTC9U T1AvSU5DUkVNRU5UQUwgZ28gdGhyb3VnaCB0aGUgc2FtZSAobW9zdGx5KSBjb2RlIHBhdGguDQoN Cj4gDQo+PiAgICAgICB9DQo+PiAgIA0KPj4gLSAgICBub3RpZmllcl93aXRoX3JldHVybl9yZW1v dmUoJnMtPmJlZm9yZV93cml0ZSk7DQo+PiArICAgIC8qIHdhaXQgcGVuZGluZyBDQlcgb3BlcmF0 aW9ucyBpbiBiYWNrdXAtdG9wICovDQo+PiArICAgIGJkcnZfZHJhaW4ocy0+YmFja3VwX3RvcCk7 DQo+PiAgIA0KPj4gLSAgICAvKiB3YWl0IHVudGlsIHBlbmRpbmcgYmFja3VwX2RvX2NvdygpIGNh bGxzIGhhdmUgY29tcGxldGVkICovDQo+PiAtICAgIHFlbXVfY29fcndsb2NrX3dybG9jaygmcy0+ Zmx1c2hfcndsb2NrKTsNCj4+IC0gICAgcWVtdV9jb19yd2xvY2tfdW5sb2NrKCZzLT5mbHVzaF9y d2xvY2spOw0KPj4gKyAgICBiYWNrdXBfdG9wX3Byb2dyZXNzID0gYmRydl9iYWNrdXBfdG9wX3By b2dyZXNzKHMtPmJhY2t1cF90b3ApOw0KPj4gKyAgICBqb2JfcHJvZ3Jlc3NfdXBkYXRlKGpvYiwg cmV0ICsgYmFja3VwX3RvcF9wcm9ncmVzcyAtDQo+IA0KPiBXaHkgdGhlICJyZXQiPw0KDQpvb3Bz LCBpdCBsb29rcyBsaWtlIGEgY29weS1wYXN0ZSBidWcgKCJyZXQiIGlzIHJlYXNvbmFibGUgaW4g YmFja3VwX2RvX2NvdygpKQ0KDQo+IA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmJh Y2t1cF90b3BfcHJvZ3Jlc3MpOw0KPj4gKyAgICBzLT5iYWNrdXBfdG9wX3Byb2dyZXNzID0gYmFj a3VwX3RvcF9wcm9ncmVzczsNCj4gDQo+IFNvIHRoZSBiYWNrdXAtdG9wIHByb2dyZXNzIGlzIGln bm9yZWQgZHVyaW5nIGJhc2ljYWxseSBhbGwgb2YgdGhlIGJsb2NrDQo+IGpvYiB1bnRpbCBpdCBz dWRkZW5seSBqdW1wcyB0byAxMDAgJSBjb21wbGV0aW9uPyAgVGhhdCBkb2Vzbid0IHNvdW5kIGlk ZWFsLg0KPiANCj4gT3IgZGlkIHlvdSBtZWFuIHRvIHB1dCB0aGlzIGludG8gdGhlIGZvciAoKSBs b29wIG9mIE1PREVfVE9QL01PREVfRlVMTD8NCj4gICAoQW5kIHRoZSB3aGlsZSgpIGxvb3Agb2Yg TU9ERV9OT05FKQ0KDQoNCkl0IGlzIGRvbmUgaW4gYmFja3VwX2RvX2NvdygpLCBzbyBGVUxMIGFu ZCBUT1AgYXJlIGNvdmVyZWQuDQoNCkJ1dCB5b3UgYXJlIHJpZ2h0IHRoYXQgTU9ERV9OT05FIHNl ZW1zIHRvIGhhdmUgYSBwcm9ibGVtIGFib3V0IGl0Li4gQW5kIGp1c3QgdXBkYXRpbmcgaXQNCmlu IGEgd2hpbGUgbG9vcCB3b3VsZCBub3Qgd29yaywgYXMgSSBkb3VidCB0aGF0IGpvYl95aWVsZCB3 aWxsIHJldHVybiB1bnRpbCBqb2IgZmluaXNoDQpvciB1c2VyIGludGVyYWN0aW9uIGxpa2UgcGF1 c2UvY29udGludWUvY2FuY2VsLi4NCg0KU28gbm93LCBpdCBsb29rcyBiZXR0ZXIgdG8gY2FsbCBq b2JfcHJvZ3Jlc3NfdXBkYXRlKCkgZnJvbSBiYWNrdXBfdG9wIGRpcmVjdGx5LCBhbmQgZHJvcA0K dGhpcyBoYWNrLg0KDQo+IA0KPj4gICANCj4+ICAgICAgIHJldHVybiByZXQ7DQo+PiAgIH0NCj4+ IEBAIC01NjMsNiArNTYxLDkgQEAgQmxvY2tKb2IgKmJhY2t1cF9qb2JfY3JlYXRlKGNvbnN0IGNo YXIgKmpvYl9pZCwgQmxvY2tEcml2ZXJTdGF0ZSAqYnMsDQo+PiAgICAgICBpbnQgcmV0Ow0KPj4g ICAgICAgaW50NjRfdCBjbHVzdGVyX3NpemU7DQo+PiAgICAgICBIQml0bWFwICpjb3B5X2JpdG1h cCA9IE5VTEw7DQo+PiArICAgIEJsb2NrRHJpdmVyU3RhdGUgKmJhY2t1cF90b3AgPSBOVUxMOw0K Pj4gKyAgICB1aW50NjRfdCBhbGxfZXhjZXB0X3Jlc2l6ZSA9IEJMS19QRVJNX0NPTlNJU1RFTlRf UkVBRCB8IEJMS19QRVJNX1dSSVRFIHwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCTEtfUEVSTV9XUklURV9VTkNIQU5HRUQgfCBCTEtfUEVSTV9HUkFQSF9NT0Q7DQo+IA0K PiBCTEtfUEVSTV9BTEwgJiB+QkxLX1BFUk1fUkVTSVpFPw0KPiANCj4gWzFdIEJ1dCB3ZSBwcm9i YWJseSBkbyBub3Qgd2FudCB0byBzaGFyZSBlaXRoZXIgUEVSTV9XUklURSBvcg0KPiBQRVJNX1dS SVRFX1VOQ0hBTkdFRCBiZWNhdXNlIGR1cmluZyB0aGUgZHVyYXRpb24gb2YgdGhlIGJhY2t1cCwN Cj4gZXZlcnl0aGluZyBzaG91bGQgZ28gdGhyb3VnaCB0aGUgYmFja3VwLXRvcCBmaWx0ZXIgKG5v dCBzdXJlIGFib3V0DQo+IFBFUk1fV1JJVEVfVU5DSEFOR0VEIHJpZ2h0IG5vdykuICBPciBpcyB0 aGF0IHNvbWV0aGluZyB0aGF0IHRoZSBmaWx0ZXINCj4gbm9kZSBzaG91bGQgZW5mb3JjZSBpbiBi YWNrdXBfdG9wX2NoaWxkX3Blcm0oKT8NCg0KSXQncyBub3Qgc2hhcmVkIHBlcm0gb2YgYmFja3Vw X3RvcCwgaXQncyBhIHNoYXJlZCBwZXJtIG9mIGJsb2NrLWpvYiBjb21tb24uYmxrLCB3aGljaCBp cw0KdXNlZCBvbmx5IHRvICJqb2ItPmxlbiBpcyBmaXhlZCwgc28gd2UgY2FuJ3QgYWxsb3cgcmVz aXplIiwgc28gdGhpcyBwYXJ0IGlzIG5vdCBjaGFuZ2VkLg0KDQpTbyB5ZXMsIHRoZSBwcm9ibGVt IHlvdSBtZWFuIGJ5IFsxXSBpcyBhYm91dCBiYWNrdXBfdG9wX2NoaWxkX3Blcm0oKSB3aGVyZSB3 ZSBzaGFyZSBQRVJNX1dSSVRFLg0KQW5kIGl0IGlzIGRlc2NyaWJlZCBieSBjb21tZW50LCB3ZSBt dXN0IHNoYXJlIHRoaXMgd3JpdGUgcGVybSwgb3RoZXJ3aXNlIHdlIGJyZWFrIGd1ZXN0IHdyaXRl cy4NCldlIHNoYXJlIFBFUk1fV1JJVEUgaW4gYmFja3VwX3RvcCB0byBmb3JjZSBpdHMgdGFyZ2V0 IGNoaWxkIHNoYXJlIFBFUk1fV1JJVEUgb24gaXRzIGJhY2tpbmcsDQphcyBiYWNraW5nIG9mIHRh cmdldCBpcyBzb3VyY2UuDQoNCkJ1dCBhZ2Fpbiwgd2Ugc2hhcmUgUEVSTV9XUklURSBvbmx5IG9u IHRhcmdldCwgYW5kIGl0IGlzIHNoYXJlZCBpbiBjdXJyZW50IGNvZGUgdG9vLg0KDQo+IA0KPj4g ICANCj4+ICAgICAgIGFzc2VydChicyk7DQo+PiAgICAgICBhc3NlcnQodGFyZ2V0KTsNCj4+IEBA IC02NTUsMjUgKzY1NiwzMSBAQCBCbG9ja0pvYiAqYmFja3VwX2pvYl9jcmVhdGUoY29uc3QgY2hh ciAqam9iX2lkLCBCbG9ja0RyaXZlclN0YXRlICpicywNCj4+ICAgDQo+PiAgICAgICBjb3B5X2Jp dG1hcCA9IGhiaXRtYXBfYWxsb2MobGVuLCBjdHozMihjbHVzdGVyX3NpemUpKTsNCj4+ICAgDQo+ PiAtICAgIC8qIGpvYi0+bGVuIGlzIGZpeGVkLCBzbyB3ZSBjYW4ndCBhbGxvdyByZXNpemUgKi8N Cj4+IC0gICAgam9iID0gYmxvY2tfam9iX2NyZWF0ZShqb2JfaWQsICZiYWNrdXBfam9iX2RyaXZl ciwgdHhuLCBicywNCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBCTEtfUEVSTV9DT05T SVNURU5UX1JFQUQsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgQkxLX1BFUk1fQ09O U0lTVEVOVF9SRUFEIHwgQkxLX1BFUk1fV1JJVEUgfA0KPj4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIEJMS19QRVJNX1dSSVRFX1VOQ0hBTkdFRCB8IEJMS19QRVJNX0dSQVBIX01PRCwNCj4+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZCwgY3JlYXRpb25fZmxhZ3MsIGNiLCBv cGFxdWUsIGVycnApOw0KPj4gLSAgICBpZiAoIWpvYikgew0KPj4gKyAgICAvKg0KPj4gKyAgICAg KiBiZHJ2X2dldF9kZXZpY2VfbmFtZSB3aWxsIG5vdCBoZWxwIHRvIGZpbmQgZGV2aWNlIG5hbWUg c3RhcnRpbmcgZnJvbQ0KPj4gKyAgICAgKiBAYnMgYWZ0ZXIgYmFja3VwLXRvcCBhcHBlbmQsDQo+ IA0KPiBXaHkgbm90PyAgU2luY2UgYmFja3VwLXRvcCBpcyBhcHBlbmRlZCwgc2hvdWxkbid0IGFs bCBwYXJlbnRzIG9mIEBicyBiZQ0KPiBwYXJlbnRzIG9mIEBiYWNrdXBfdG9wIHRoZW4/ICAoTWFr aW5nIGJkcnZfZ2V0X3BhcmVudF9uYW1lKCkgcmV0dXJuIHRoZQ0KPiBzYW1lIHJlc3VsdCkNCg0K YmRydl9nZXRfZGV2aWNlX25hbWUgZ29lcyBmaW5hbGx5IHRocm91Z2ggcm9sZS0+Z2V0X25hbWUs IGFuZCBvbmx5IHJvb3Qgcm9sZSBoYXMNCnRoaXMgaGFuZGxlci4gQWZ0ZXIgYXBwZW5kIHdlJ2xs IGhhdmUgYmFja2luZyByb2xlIGluc3RlYWQgb2Ygcm9vdC4NCg0KPiANCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc28gbGV0J3MgY2FsY3VsYXRlIGpvYl9pZCBiZWZv cmUuIERvDQo+PiArICAgICAqIGl0IGluIHRoZSBzYW1lIHdheSBsaWtlIGJsb2NrX2pvYl9jcmVh dGUNCj4+ICsgICAgICovDQo+PiArICAgIGlmIChqb2JfaWQgPT0gTlVMTCAmJiAhKGNyZWF0aW9u X2ZsYWdzICYgSk9CX0lOVEVSTkFMKSkgew0KPj4gKyAgICAgICAgam9iX2lkID0gYmRydl9nZXRf ZGV2aWNlX25hbWUoYnMpOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGJhY2t1cF90b3AgPSBi ZHJ2X2JhY2t1cF90b3BfYXBwZW5kKGJzLCB0YXJnZXQsIGNvcHlfYml0bWFwLCBlcnJwKTsNCj4+ ICsgICAgaWYgKCFiYWNrdXBfdG9wKSB7DQo+PiAgICAgICAgICAgZ290byBlcnJvcjsNCj4+ICAg ICAgIH0NCj4+ICAgDQo+PiAtICAgIC8qIFRoZSB0YXJnZXQgbXVzdCBtYXRjaCB0aGUgc291cmNl IGluIHNpemUsIHNvIG5vIHJlc2l6ZSBoZXJlIGVpdGhlciAqLw0KPj4gLSAgICBqb2ItPnRhcmdl dCA9IGJsa19uZXcoQkxLX1BFUk1fV1JJVEUsDQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAg ICBCTEtfUEVSTV9DT05TSVNURU5UX1JFQUQgfCBCTEtfUEVSTV9XUklURSB8DQo+PiAtICAgICAg ICAgICAgICAgICAgICAgICAgICBCTEtfUEVSTV9XUklURV9VTkNIQU5HRUQgfCBCTEtfUEVSTV9H UkFQSF9NT0QpOw0KPj4gLSAgICByZXQgPSBibGtfaW5zZXJ0X2JzKGpvYi0+dGFyZ2V0LCB0YXJn ZXQsIGVycnApOw0KPj4gLSAgICBpZiAocmV0IDwgMCkgew0KPj4gKyAgICAvKiBqb2ItPmxlbiBp cyBmaXhlZCwgc28gd2UgY2FuJ3QgYWxsb3cgcmVzaXplICovDQo+PiArICAgIGpvYiA9IGJsb2Nr X2pvYl9jcmVhdGUoam9iX2lkLCAmYmFja3VwX2pvYl9kcml2ZXIsIHR4biwgYnMsIDAsDQo+IA0K PiBJcyB0aGVyZSBhIHJlYXNvbiB5b3UgZHJvcHBlZCBQRVJNX0NPTlNJU1RFTlRfUkVBRCBoZXJl Pw0KDQpCZWNhdXNlLCB3ZSBkb24ndCB1c2UgdGhpcyBibGsgZm9yIHJlYWQgbm93LCB3ZSByZWFk IHRocm91Z2ggYmFja3VwX3RvcCBjaGlsZC4NCg0KPiANCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICBhbGxfZXhjZXB0X3Jlc2l6ZSwgc3BlZWQsIGNyZWF0aW9uX2ZsYWdzLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNiLCBvcGFxdWUsIGVycnApOw0KPj4gKyAgICBpZiAo IWpvYikgew0KPj4gICAgICAgICAgIGdvdG8gZXJyb3I7DQo+PiAgICAgICB9DQo+PiAgIA0KPj4g KyAgICBqb2ItPnNvdXJjZSA9IGJhY2t1cF90b3AtPmJhY2tpbmc7DQo+PiArICAgIGpvYi0+dGFy Z2V0ID0gKChCRFJWQmFja3VwVG9wU3RhdGUgKiliYWNrdXBfdG9wLT5vcGFxdWUpLT50YXJnZXQ7 DQo+IA0KPiBUaGlzIGxvb2tzIHJlYWxseSB1Z2x5LiAgSSB0aGluayBhcyBsb25nIGFzIHRoZSBi bG9jayBqb2IgcGVyZm9ybXMNCj4gd3JpdGVzIGl0c2VsZiwgaXQgc2hvdWxkIHVzZSBpdHMgb3du IEJsb2NrQmFja2VuZC4NCg0KVGhleSBhcmUgbm90IEJsb2NrQmFja2VuZHMsIHRoZXkgYXJlIEJk cnZDaGlsZHJlbi4gSXQgd2FzIEtldmluJ3MgaWRlYSB0byByZXVzZSBmaWx0ZXIncw0KY2hpbGRy ZW4gaW4gYmFja3VwIGpvYjoNCg0KaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9x ZW11LWRldmVsLzIwMTgtMTAvbXNnMDEwMTcuaHRtbA0KDQpIbW0sIGFuZCB0aGlzIGlzIGFsc28g d2h5IEkgbmVlZCBQRVJNX1dSSVRFIGluIGJhY2t1cF90b3AsIHRvIHdyaXRlIHRvIHRhcmdldC4N Cg0KPiANCj4gQWx0ZXJuYXRpdmVseSwgSSB0aGluayBpdCB3b3VsZCBtYWtlIHNlbnNlIGZvciB0 aGUgYmFja3VwLXRvcCBmaWx0ZXIgdG8NCj4gb2ZmZXIgZnVuY3Rpb25zIHRoYXQgdGhpcyBqb2Ig Y2FuIHVzZSB0byBpc3N1ZSB3cml0ZXMgdG8gdGhlIHRhcmdldC4NCj4gVGhlbiB0aGUgYmFja3Vw IGpvYiB3b3VsZCBubyBsb25nZXIgbmVlZCBkaXJlY3QgYWNjZXNzIHRvIHRoZSB0YXJnZXQgYXMN Cj4gYSBCZHJ2Q2hpbGQuDQo+IA0KPj4gKw0KPj4gICAgICAgam9iLT5vbl9zb3VyY2VfZXJyb3Ig PSBvbl9zb3VyY2VfZXJyb3I7DQo+PiAgICAgICBqb2ItPm9uX3RhcmdldF9lcnJvciA9IG9uX3Rh cmdldF9lcnJvcjsNCj4+ICAgICAgIGpvYi0+c3luY19tb2RlID0gc3luY19tb2RlOw0KDQoNCg0K LS0gDQpCZXN0IHJlZ2FyZHMsDQpWbGFkaW1pcg0K