Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp331881img; Mon, 18 Mar 2019 04:17:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqwlul2IgRsSQtHU9DHF3CNJVFKLe/Ro/1IJMB9LFOryYG09jJ8CbKCHPAntGA/YuT7qz4kd X-Received: by 2002:a63:d54f:: with SMTP id v15mr17050915pgi.318.1552907844893; Mon, 18 Mar 2019 04:17:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552907844; cv=none; d=google.com; s=arc-20160816; b=oouP8wMD28YBbDZNmC7N4nEEK8vH5BqK8aQKcC8BUnM2evvPwZ+0fW7U1vcBxn1zxp HPaThmdPe9gZt9y9/fTFZCFwez2oG1cl3oQvEnFjnRObPxZMoPlOuw84jVA9iOXv04Wr s61XF3y+axtpOHyUFqc5GY8n6yx70TBAoPjGt9FpK53ca21wYQ38+De58BPDZ37TpgjI 6/mtO4XEe5xSd7y/Q9ipQcFKQpn+O3ql/VpkGabVdWQjqMksJkAleAxorNjvg4bLqwGW fP8XSiRAI6IMpTeZuC4y2kVeLicaZcqpEho7g5jBdPGniGfOJBMtS9XMz+MiertdYwyy TdoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=Pyy4MeAxvCqRmotuXuyBve8IYTQcNilmHD3S9P/oFKc=; b=O3BoPnCg2vJl7oxSGsHB0O1Xs23+Ryroj4mam9rJ2N0yCTJkIalFO/d0Is9tyYTZxL WrNLhW2jJLUQh80UkC69JyRzXrWVt0Nz3WHlgonBWjZWKXPdKNqsc4Wkrshes5xCX7LC UcfdElLtO65aIX6naFMo3Tc8EFenHiCZFPha3v3UEU13E+xSrE8ufcBpXNLnNkWo4ftR RQW1bhvr+XAnIvUX6X54tb5JmEj6EYikjbXFQ31mCyoDFrbuaGCFiqpaHczCXxC+IkjN lUs4qHolFv2w7FcoW+lwJLWIUoHUpsbu2X297k2ZSjHkwn9xC6JyieT3UoRQDzrWb4Ou /SJw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j1si9184142pfe.189.2019.03.18.04.17.08; Mon, 18 Mar 2019 04:17:24 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727365AbfCRKiN (ORCPT + 99 others); Mon, 18 Mar 2019 06:38:13 -0400 Received: from relay.sw.ru ([185.231.240.75]:45236 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726922AbfCRKiM (ORCPT ); Mon, 18 Mar 2019 06:38:12 -0400 Received: from [172.16.25.169] by relay.sw.ru with esmtp (Exim 4.91) (envelope-from ) id 1h5pec-0005vs-Ll; Mon, 18 Mar 2019 13:38:02 +0300 Subject: Re: [External] Re: vmscan: Reclaim unevictable pages To: Pankaj Suryawanshi , Vlastimil Babka , Michal Hocko , "aneesh.kumar@linux.ibm.com" Cc: "linux-kernel@vger.kernel.org" , "minchan@kernel.org" , "linux-mm@kvack.org" , "khandual@linux.vnet.ibm.com" References: <20190314084120.GF7473@dhcp22.suse.cz> <226a92b9-94c5-b859-c54b-3aacad3089cc@virtuozzo.com> <0b86dbca-cbc9-3b43-e3b9-8876bcc24f22@suse.cz> <56862fc0-3e4b-8d1e-ae15-0df32bf5e4c0@virtuozzo.com> <4c05dda3-9fdf-e357-75ed-6ee3f25c9e52@virtuozzo.com> From: Kirill Tkhai Message-ID: <09b6ee71-0007-7f1d-ac80-7e05421e4ec6@virtuozzo.com> Date: Mon, 18 Mar 2019 13:38:01 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTguMDMuMjAxOSAxMjo1OSwgUGFua2FqIFN1cnlhd2Fuc2hpIHdyb3RlOg0KPiAgIA0K PiBGcm9tOiBLaXJpbGwgVGtoYWkgPGt0a2hhaUB2aXJ0dW96em8uY29tPg0KPiBTZW50OiAx OCBNYXJjaCAyMDE5IDE1OjE3OjU2DQo+IFRvOiBQYW5rYWogU3VyeWF3YW5zaGk7IFZsYXN0 aW1pbCBCYWJrYTsgTWljaGFsIEhvY2tvOyBhbmVlc2gua3VtYXJAbGludXguaWJtLmNvbQ0K PiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbWluY2hhbkBrZXJuZWwub3Jn OyBsaW51eC1tbUBrdmFjay5vcmc7IGtoYW5kdWFsQGxpbnV4LnZuZXQuaWJtLmNvbTsgaGls bGYuempAYWxpYmFiYS1pbmMuY29tDQo+IFN1YmplY3Q6IFJlOiBbRXh0ZXJuYWxdIFJlOiB2 bXNjYW46IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMNCg0KQWxzbywgcGxlYXNlLCBhdm9p ZCBpcnJpdGF0aW5nIHF1b3RpbmcgbGlrZSBiZWxvdyBeXl4uIFRoZXkganVzdCBkaXN0cmFj dCBhdHRlbnRpb24uDQogDQo+IE9uIDE4LjAzLjIwMTkgMTI6NDMsIFBhbmthaiBTdXJ5YXdh bnNoaSB3cm90ZToNCj4+IEhpIEtpcmlsbCBUa2hhaSwNCj4+DQo+IA0KPiBQbGVhc2UsIGRv IG5vdCB0b3AgcG9zdGluZzogIGh0dHBzOi8va2VybmVsbmV3Ymllcy5vcmcvbWFpbGluZ2xp c3RndWlkZWxpbmVzDQo+IA0KPiBPa2F5Lg0KPiANCj4gbWFpbGluZ2xpc3RndWlkZWxpbmVz IC0gTGludXggS2VybmVsIE5ld2JpZXMNCj4ga2VybmVsbmV3Ymllcy5vcmcNCj4gU2V0IG9m IEZBUXMgZm9yIGtlcm5lbG5ld2JpZXMgbWFpbGluZyBsaXN0LiBJZiB5b3UgYXJlIG5ldyB0 byB0aGlzIGxpc3QgcGxlYXNlIHJlYWQgdGhpcyBwYWdlIGJlZm9yZSB5b3UgZ28gb24geW91 ciBxdWVzdCBmb3Igc3F1ZWV6aW5nIGFsbCB0aGUga25vd2xlZGdlIGZyb20gZmVsbG93IG1l bWJlcnMuDQoNCkFuZCB0aGlzIHNwZXcgXl5eLg0KDQo+PiBQbGVhc2Ugc2VlIG1tL3Ztc2Nh bi5jIGluIHdoaWNoIGl0IGZpcnN0IGFkZGVkIHRvIGxpc3QgYW5kIHRoYW4gdGhyb3cgdGhl IGVycm9yIDoNCj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+PiBrZWVwOg0KPj4goKCgoKCgoKCgoKCgoKCgoCBsaXN0X2FkZCgmcGFnZS0+bHJ1 LCAmcmV0X3BhZ2VzKTsNCj4+IKCgoKCgoKCgoKCgoKCgoKAgVk1fQlVHX09OX1BBR0UoUGFn ZUxSVShwYWdlKSB8fCBQYWdlVW5ldmljdGFibGUocGFnZSksIHBhZ2UpOw0KPj4gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+Pg0KPj4gQmVmb3Jl IHRocm93aW5nIGVycm9yLCBwYWdlcyBhcmUgYWRkZWQgdG8gbGlzdCwgdGhpcyBpcyB1bmRl ciBpdGVyYXRpb24gb2Ygc2hyaW5rX3BhZ2VfbGlzdCgpLg0KPiANCj4gSSBzYXkgYWJvdXQg YWJvdXQgdGhlIGxpc3QsIHdoaWNoIGlzIHBhc3NlZCB0byBzaHJpbmtfcGFnZV9saXN0KCkg YXMgZmlyc3QgYXJndW1lbnQuDQo+IERpZCB5b3UgbWVhbiBjYW5kaWRhdGUgbGlzdCB3aGlj aCBpcyBwYXNzZWQgdG8gc2hyaW5rX3BhZ2VfbGlzdCgpLg0KPiANCj4gc2hyaW5rX2luYWN0 aXZlX2xpc3QoKQ0KPiB7DQo+IKCgoKCgoKAgaXNvbGF0ZV9scnVfcGFnZXMoJnBhZ2VfbGlz dCk7IC8vIDwtLSB5b3UgY2FuJ3Qgb2J0YWluIHVuZXZpY3RhYmxlIHBhZ2VzIGhlcmUuDQo+ IKCgoKCgoKAgc2hyaW5rX3BhZ2VfbGlzdCgmcGFnZV9saXN0KTsNCj4gfQ0KPiANCj4gYmVs b3cgaXMgdGhlIG92ZXJ2aWV3IG9mIGZsb3cgb2YgY2FsbHMgZm9yIHlvdXIgaW5mb3JtYXRp b24uDQo+IA0KPiBjbWFfYWxsb2MoKSAtPg0KPiBhbGxvY19jb250aWdfcmFuZ2UoKSAtPg0K PiBzdGFydF9pc29sYXRlX3BhZ2VfcmFuZ2UoKSAtPg0KPiBfX2FsbG9jX2NvbnRpZ19taWdy YXRlX3JhbmdlKCkgLT4NCj4gaXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2UoKSAtPg0KPiBy ZWNsYWltX2NsZWFuX3BhZ2VzX2Zyb21fbGlzdCgpIC0+DQo+IHNocmlua19wYWdlX2xpc3Qo KQ0KDQpIbSwgaXNvbGF0ZV9taWdyYXRlcGFnZXNfcmFuZ2UoKSBjYW4gdGFrZSB1bmV2aWN0 YWJsZSBwYWdlcywNCmJ1dCB0aGVuIHdpdGggeW91ciBwYXRjaCB3ZSBqdXN0IHNraXAgdGhl bSBpbiBzaHJpbmtfcGFnZV9saXN0KCkuDQpXaXRob3V0IHlvdXIgcGF0Y2ggd2UgYnVtcCBp bnRvIGJ1ZyBvbi4NCg0KVGhlc2UgYm90aCBsb29rIGluY29ycmVjdCBmb3IgbWUuIExldCdz IHdhaXQgc29tZW9uZSB3aG8gZmFtaWxpYXINCndpdGggdGhpcyBsb2dpYy4NCiCgDQo+PiBG cm9tOiBLaXJpbGwgVGtoYWkgPGt0a2hhaUB2aXJ0dW96em8uY29tPg0KPj4gU2VudDogMTgg TWFyY2ggMjAxOSAxNTowMzoxNQ0KPj4gVG86IFBhbmthaiBTdXJ5YXdhbnNoaTsgVmxhc3Rp bWlsIEJhYmthOyBNaWNoYWwgSG9ja287IGFuZWVzaC5rdW1hckBsaW51eC5pYm0uY29tDQo+ PiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsgbWluY2hhbkBrZXJuZWwub3Jn OyBsaW51eC1tbUBrdmFjay5vcmc7IGtoYW5kdWFsQGxpbnV4LnZuZXQuaWJtLmNvbTsgaGls bGYuempAYWxpYmFiYS1pbmMuY29tDQo+PiBTdWJqZWN0OiBSZTogW0V4dGVybmFsXSBSZTog dm1zY2FuOiBSZWNsYWltIHVuZXZpY3RhYmxlIHBhZ2VzDQo+PiCgIA0KPj4NCj4+IEhpLCBQ YW5rYWosDQo+Pg0KPj4gT24gMTguMDMuMjAxOSAxMjowOSwgUGFua2FqIFN1cnlhd2Fuc2hp IHdyb3RlOg0KPj4+DQo+Pj4gSGVsbG8NCj4+Pg0KPj4+IHNocmlua19wYWdlX2xpc3QoKSBy ZXR1cm5zICwgbnVtYmVyIG9mIHBhZ2VzIHJlY2xhaW1lZCwgd2hlbiBwYWdlcyBpcyB1bmV2 aWN0YWJsZSBpdCByZXR1cm5zIFZNX0JVR19PTl9QQUdFKFBhZ2VMUlUocGFnZSkgfHwgUGFn ZVVuZXZpY2F0YmxlKHBhZ2UpLHBhZ2UpOw0KPj4NCj4+IHRoZSBnZW5lcmFsIGlkZWEgaXMg c2hyaW5rX3BhZ2VfbGlzdCgpIGNhbid0IGl0ZXJhdGUgUGFnZVVuZXZpY3RhYmxlKCkgcGFn ZXMuDQo+PiBQYWdlVW5ldmljdGFibGUoKSBwYWdlcyBhcmUgbmV2ZXIgYmVpbmcgYWRkZWQg dG8gbGlzdHMsIHdoaWNoIHNocmlua19wYWdlX2xpc3QoKQ0KPj4gdXNlcyBmb3IgaXRlcmF0 aW9uLiBBbHNvLCBhIHBhZ2UgY2FuJ3QgYmUgbWFya2VkIGFzIFBhZ2VVbmV2aWN0YWJsZSgp LCB3aGVuDQo+PiBpdCdzIGF0dGFjaGVkIHRvIGEgc2hyaW5rYWJsZSBsaXN0Lg0KPj4NCj4+ IFNvLCB0aGUgcHJvYmxlbSBzaG91bGQgYmUgc29tZXdoZXJlIG91dHNpZGUgc2hyaW5rX3Bh Z2VfbGlzdCgpLg0KPj4NCj4+IEkgd29uJ3Qgc3VnZ2VzdCB5b3Ugc29tZXRoaW5nIGFib3V0 IENNQSwgc2luY2UgSSBoYXZlbid0IGRpdmVkIGluIHRoYXQgY29kZS4NCj4+DQo+Pj4gV2Ug Y2FuIGFkZCB0aGUgdW5ldmljdGFibGUgcGFnZXMgaW4gcmVjbGFpbSBsaXN0IGluIHNocmlu a19wYWdlX2xpc3QoKSwgcmV0dXJuIHRvdGFsIG51bWJlciBvZiByZWNsYWltIHBhZ2VzIGlu Y2x1ZGluZyB1bmV2aWN0YWJsZSBwYWdlcywgbGV0IHRoZSBjYWxsZXIgaGFuZGxlIHVuZXZp Y3RhYmxlIHBhZ2VzLg0KPj4+DQo+Pj4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyBzaHJpbmtf cGFnZV9saXN0IGlzIGF3a2FyZC4gSWYgcGFnZSBpcyB1bmV2aWN0YWJsZSBpdCBnb3RvIGFj dGl2YXRlX2xvY2tlZC0+a2VlcF9sb2NrZWQtPmtlZXAgbGFibGVzLCBrZWVwIGxhYmxlIGxp c3RfYWRkIHRoZSB1bmV2aWN0YWJsZSBwYWdlcyBhbmQgdGhyb3cgdGhlIFZNX0JVRyBpbnN0 ZWFkIG9mIHBhc3NpbmcgaXQgdG8gY2FsbGVyIHdoaWxlIGl0IHJlbGllcyBvbiBjYWxsZXIg Zm9yIG5vbi1yZWNsYWltZWQtbm9uLXVuZXZpY3RhYmxloKAgIHBhZ2UncyBwdXRiYWNrLg0K Pj4+IEkgdGhpbmsgd2UgY2FuIG1ha2UgaXQgY29uc2lzdGVudCBzbyB0aGF0IHNocmlua19w YWdlX2xpc3QgY291bGQgcmV0dXJuIG5vbi1yZWNsYWltZWQgcGFnZXMgdmlhIHBhZ2VfbGlz dCBhbmQgY2FsbGVyIGNhbiBoYW5kbGUgaXQuIEFzIGFuIGFkdmFuY2UsIGl0IGNvdWxkIHRy eSB0byBtaWdyYXRlIG1sb2NrZWQgcGFnZXMgd2l0aG91dCByZXRyaWFsLg0KPj4+DQo+Pj4N Cj4+PiBCZWxvdyBpcyB0aGUgaXNzdWUgb2YgQ01BX0FMTE9DIG9mIGxhcmdlIHNpemUgYnVm ZmVyIDogKEtlcm5lbCB2ZXJzaW9uIC0gNC4xNC42NSAoT24gQW5kcm9pZCBwaWUgW0FSTV0p KS4NCj4+Pg0KPj4+IFugoCAyNC43MTg3OTJdIHBhZ2UgZHVtcGVkIGJlY2F1c2U6IFZNX0JV R19PTl9QQUdFKFBhZ2VMUlUocGFnZSkgfHwgUGFnZVVuZXZpY3RhYmxlKHBhZ2UpKQ0KPj4+ IFugoCAyNC43MjY5NDldIHBhZ2UtPm1lbV9jZ3JvdXA6YmQwMDhjMDANCj4+PiBboKAgMjQu NzMwNjkzXSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0NCj4+PiBboKAg MjQuNzM1MzA0XSBrZXJuZWwgQlVHIGF0IG1tL3Ztc2Nhbi5jOjEzNTAhDQo+Pj4gW6CgIDI0 LjczOTQ3OF0gSW50ZXJuYWwgZXJyb3I6IE9vcHMgLSBCVUc6IDAgWyMxXSBQUkVFTVBUIFNN UCBBUk0NCj4+Pg0KPj4+DQo+Pj4gQmVsb3cgaXMgdGhlIHBhdGNoIHdoaWNoIHNvbHZlZCB0 aGlzIGlzc3VlIDoNCj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Zt c2Nhbi5jDQo+Pj4gaW5kZXggYmU1NmUyZS4uMTJhYzM1MyAxMDA2NDQNCj4+PiAtLS0gYS9t bS92bXNjYW4uYw0KPj4+ICsrKyBiL21tL3Ztc2Nhbi5jDQo+Pj4gQEAgLTk5OCw3ICs5OTgs NyBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0 X2hlYWQgKnBhZ2VfbGlzdCwNCj4+PiCgoKCgoKCgoKCgoKCgoKAgc2MtPm5yX3NjYW5uZWQr KzsNCj4+PiCgDQo+Pj4goKCgoKCgoKCgoKCgoKCgIGlmICh1bmxpa2VseSghcGFnZV9ldmlj dGFibGUocGFnZSkpKQ0KPj4+IC2goKCgoKCgoKCgoKCgoKCgoKCgoKCgIGdvdG8gYWN0aXZh dGVfbG9ja2VkOw0KPj4+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKAgZ290byBjdWxsX21sb2Nr ZWQ7DQo+Pj4goA0KPj4+IKCgoKCgoKCgoKCgoKCgoCBpZiAoIXNjLT5tYXlfdW5tYXAgJiYg cGFnZV9tYXBwZWQocGFnZSkpDQo+Pj4goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgZ290byBr ZWVwX2xvY2tlZDsNCj4+PiBAQCAtMTMzMSw3ICsxMzMxLDEyIEBAIHN0YXRpYyB1bnNpZ25l ZCBsb25nIHNocmlua19wYWdlX2xpc3Qoc3RydWN0IGxpc3RfaGVhZCAqcGFnZV9saXN0LA0K Pj4+IKCgoKCgoKCgoKCgoKCgoCB9IGVsc2UNCj4+PiCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oCBsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmZnJlZV9wYWdlcyk7DQo+Pj4goKCgoKCgoKCgoKCg oKCgIGNvbnRpbnVlOw0KPj4+IC0NCj4+PiArY3VsbF9tbG9ja2VkOg0KPj4+ICugoKCgoKCg oKCgoKCgoKAgaWYgKFBhZ2VTd2FwQ2FjaGUocGFnZSkpDQo+Pj4gK6CgoKCgoKCgoKCgoKCg oKCgoKCgoKCgIHRyeV90b19mcmVlX3N3YXAocGFnZSk7DQo+Pj4gK6CgoKCgoKCgoKCgoKCg oCB1bmxvY2tfcGFnZShwYWdlKTsNCj4+PiAroKCgoKCgoKCgoKCgoKCgIGxpc3RfYWRkKCZw YWdlLT5scnUsICZyZXRfcGFnZXMpOw0KPj4+ICugoKCgoKCgoKCgoKCgoKAgY29udGludWU7 DQo+Pj4goGFjdGl2YXRlX2xvY2tlZDoNCj4+PiCgoKCgoKCgoKCgoKCgoKAgLyogTm90IGEg Y2FuZGlkYXRlIGZvciBzd2FwcGluZywgc28gcmVjbGFpbSBzd2FwIHNwYWNlLiAqLw0KPj4+ IKCgoKCgoKCgoKCgoKCgoCBpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSAmJiAobWVtX2Nncm91 cF9zd2FwX2Z1bGwocGFnZSkgfHwNCj4+Pg0KPj4+DQo+Pj4NCj4+Pg0KPj4+IEl0IGZpeGVz IHRoZSBiZWxvdyBpc3N1ZS4NCj4+Pg0KPj4+IDEuIExhcmdlIHNpemUgYnVmZmVyIGFsbG9j YXRpb24gdXNpbmcgY21hX2FsbG9jIHN1Y2Nlc3NmdWwgd2l0aCB1bmV2aWN0YWJsZSBwYWdl cy4NCj4+Pg0KPj4+IGNtYV9hbGxvYyBvZiBjdXJyZW50IGtlcm5lbCB3aWxsIGZhaWwgZHVl IHRvIHVuZXZpY3RhYmxlIHBhZ2UNCj4+Pg0KPj4+IFBsZWFzZSBsZXQgbWUga25vdyBpZiBh bnl0aGluZyBpIGFtIG1pc3NpbmcuDQo+Pj4NCj4+PiBSZWdhcmRzLA0KPj4+IFBhbmthag0K Pj4+IKCgIA0KPj4+IEZyb206IFZsYXN0aW1pbCBCYWJrYSA8dmJhYmthQHN1c2UuY3o+DQo+ Pj4gU2VudDogMTggTWFyY2ggMjAxOSAxNDoxMjo1MA0KPj4+IFRvOiBQYW5rYWogU3VyeWF3 YW5zaGk7IEtpcmlsbCBUa2hhaTsgTWljaGFsIEhvY2tvOyBhbmVlc2gua3VtYXJAbGludXgu aWJtLmNvbQ0KPj4+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBtaW5jaGFu QGtlcm5lbC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZzsga2hhbmR1YWxAbGludXgudm5ldC5p Ym0uY29tOyBoaWxsZi56akBhbGliYWJhLWluYy5jb20NCj4+PiBTdWJqZWN0OiBSZTogW0V4 dGVybmFsXSBSZTogdm1zY2FuOiBSZWNsYWltIHVuZXZpY3RhYmxlIHBhZ2VzDQo+Pj4goCAN Cj4+Pg0KPj4+IE9uIDMvMTUvMTkgMTE6MTEgQU0sIFBhbmthaiBTdXJ5YXdhbnNoaSB3cm90 ZToNCj4+Pj4NCj4+Pj4gWyBjYyBBbmVlc2gga3VtYXIsIEFuc2h1bWFuLCBIaWxsZiwgVmxh c3RpbWlsXQ0KPj4+DQo+Pj4gQ2FuIHlvdSBzZW5kIGEgcHJvcGVyIHBhdGNoIHdpdGggY2hh bmdlbG9nIGV4cGxhaW5pbmcgdGhlIGNoYW5nZT8gSQ0KPj4+IGRvbid0IGtub3cgdGhlIGNv bnRleHQgb2YgdGhpcyB0aHJlYWQuDQo+Pj4NCj4+Pj4gRnJvbTogUGFua2FqIFN1cnlhd2Fu c2hpDQo+Pj4+IFNlbnQ6IDE1IE1hcmNoIDIwMTkgMTE6MzU6MDUNCj4+Pj4gVG86IEtpcmls bCBUa2hhaTsgTWljaGFsIEhvY2tvDQo+Pj4+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJu ZWwub3JnOyBtaW5jaGFuQGtlcm5lbC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZw0KPj4+PiBT dWJqZWN0OiBSZTogUmU6IFtFeHRlcm5hbF0gUmU6IHZtc2NhbjogUmVjbGFpbSB1bmV2aWN0 YWJsZSBwYWdlcw0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+PiBbIGNjIGxpbnV4LW1tIF0NCj4+ Pj4NCj4+Pj4NCj4+Pj4gRnJvbTogUGFua2FqIFN1cnlhd2Fuc2hpDQo+Pj4+IFNlbnQ6IDE0 IE1hcmNoIDIwMTkgMTk6MTQ6NDANCj4+Pj4gVG86IEtpcmlsbCBUa2hhaTsgTWljaGFsIEhv Y2tvDQo+Pj4+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBtaW5jaGFuQGtl cm5lbC5vcmcNCj4+Pj4gU3ViamVjdDogUmU6IFJlOiBbRXh0ZXJuYWxdIFJlOiB2bXNjYW46 IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMNCj4+Pj4NCj4+Pj4NCj4+Pj4NCj4+Pj4gSGVs bG8gLA0KPj4+Pg0KPj4+PiBQbGVhc2UgaWdub3JlIHRoZSBjdXJseSBicmFjZXMsIHRoZXkg YXJlIGp1c3QgZm9yIGRlYnVnZ2luZy4NCj4+Pj4NCj4+Pj4gQmVsb3cgaXMgdGhlIHVwZGF0 ZWQgcGF0Y2guDQo+Pj4+DQo+Pj4+DQo+Pj4+IGRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBi L21tL3Ztc2Nhbi5jDQo+Pj4+IGluZGV4IGJlNTZlMmUuLjEyYWMzNTMgMTAwNjQ0DQo+Pj4+ IC0tLSBhL21tL3Ztc2Nhbi5jDQo+Pj4+ICsrKyBiL21tL3Ztc2Nhbi5jDQo+Pj4+IEBAIC05 OTgsNyArOTk4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hyaW5rX3BhZ2VfbGlzdChz dHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xpc3QsDQo+Pj4+IKCgoKCgoKCgoKCgoKCgoKAgc2Mt Pm5yX3NjYW5uZWQrKzsNCj4+Pj4NCj4+Pj4goKCgoKCgoKCgoKCgoKCgoCBpZiAodW5saWtl bHkoIXBhZ2VfZXZpY3RhYmxlKHBhZ2UpKSkNCj4+Pj4gLaCgoKCgoKCgoKCgoKCgoKCgoKCg oKAgZ290byBhY3RpdmF0ZV9sb2NrZWQ7DQo+Pj4+ICugoKCgoKCgoKCgoKCgoKCgoKCgoKAg Z290byBjdWxsX21sb2NrZWQ7DQo+Pj4+DQo+Pj4+IKCgoKCgoKCgoKCgoKCgoKAgaWYgKCFz Yy0+bWF5X3VubWFwICYmIHBhZ2VfbWFwcGVkKHBhZ2UpKQ0KPj4+PiCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgZ290byBrZWVwX2xvY2tlZDsNCj4+Pj4gQEAgLTEzMzEsNyArMTMzMSwx MiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0 X2hlYWQgKnBhZ2VfbGlzdCwNCj4+Pj4goKCgoKCgoKCgoKCgoKCgoCB9IGVsc2UNCj4+Pj4g oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIGxpc3RfYWRkKCZwYWdlLT5scnUsICZmcmVlX3Bh Z2VzKTsNCj4+Pj4goKCgoKCgoKCgoKCgoKCgoCBjb250aW51ZTsNCj4+Pj4gLQ0KPj4+PiAr Y3VsbF9tbG9ja2VkOg0KPj4+PiAroKCgoKCgoKCgoKCgoKCgIGlmIChQYWdlU3dhcENhY2hl KHBhZ2UpKQ0KPj4+PiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgdHJ5X3RvX2ZyZWVfc3dh cChwYWdlKTsNCj4+Pj4gK6CgoKCgoKCgoKCgoKCgoCB1bmxvY2tfcGFnZShwYWdlKTsNCj4+ Pj4gK6CgoKCgoKCgoKCgoKCgoCBsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmcmV0X3BhZ2VzKTsN Cj4+Pj4gK6CgoKCgoKCgoKCgoKCgoCBjb250aW51ZTsNCj4+Pj4goCBhY3RpdmF0ZV9sb2Nr ZWQ6DQo+Pj4+IKCgoKCgoKCgoKCgoKCgoKAgLyogTm90IGEgY2FuZGlkYXRlIGZvciBzd2Fw cGluZywgc28gcmVjbGFpbSBzd2FwIHNwYWNlLiAqLw0KPj4+PiCgoKCgoKCgoKCgoKCgoKCg IGlmIChQYWdlU3dhcENhY2hlKHBhZ2UpICYmIChtZW1fY2dyb3VwX3N3YXBfZnVsbChwYWdl KSB8fA0KPj4+Pg0KPj4+Pg0KPj4+Pg0KPj4+PiBSZWdhcmRzLA0KPj4+PiBQYW5rYWoNCj4+ Pj4NCj4+Pj4NCj4+Pj4gRnJvbTogS2lyaWxsIFRraGFpIDxrdGtoYWlAdmlydHVvenpvLmNv bT4NCj4+Pj4gU2VudDogMTQgTWFyY2ggMjAxOSAxNDo1NTozNA0KPj4+PiBUbzogUGFua2Fq IFN1cnlhd2Fuc2hpOyBNaWNoYWwgSG9ja28NCj4+Pj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7IG1pbmNoYW5Aa2VybmVsLm9yZw0KPj4+PiBTdWJqZWN0OiBSZTogUmU6 IFtFeHRlcm5hbF0gUmU6IHZtc2NhbjogUmVjbGFpbSB1bmV2aWN0YWJsZSBwYWdlcw0KPj4+ Pg0KPj4+Pg0KPj4+PiBPbiAxNC4wMy4yMDE5IDExOjUyLCBQYW5rYWogU3VyeWF3YW5zaGkg d3JvdGU6DQo+Pj4+Pg0KPj4+Pj4gSSBhbSB1c2luZyBrZXJuZWwgdmVyc2lvbiA0LjE0LjY1 IChvbiBBbmRyb2lkIHBpZSBbQVJNXSkuDQo+Pj4+Pg0KPj4+Pj4gTm8gYWRkaXRpb25hbCBw YXRjaGVzIGFwcGxpZWQgb24gdG9wIG9mIHZhbmlsbGEuKENvcmUgTU0pLg0KPj4+Pj4NCj4+ Pj4+IElmoCBJIGNoYW5nZSBpbiB0aGUgdm1zY2FuLmMgYXMgYmVsb3cgcGF0Y2gsIGl0IHdp bGwgd29yay4NCj4+Pj4NCj4+Pj4gU29ycnksIGJ1dCA0LjE0LjY1IGRvZXMgbm90IGhhdmUg YnJhY2VzIGFyb3VuZCB0cnlsb2NrX3BhZ2UoKSwNCj4+Pj4gbGlrZSBpbiB5b3VyIHBhdGNo IGJlbG93Lg0KPj4+Pg0KPj4+PiBTZWWgoKCgoKAgIGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcv cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3N0YWJsZS9saW51eC5naXQvdHJlZS9tbS92bXNj YW4uYz9oPXY0LjE0LjY1DQo+Pj4+DQo+Pj4+IFsuLi5dDQo+Pj4+DQo+Pj4+Pj4gZGlmZiAt LWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMNCj4+Pj4+PiBpbmRleCBiZTU2ZTJl Li4yZTUxZWRjIDEwMDY0NA0KPj4+Pj4+IC0tLSBhL21tL3Ztc2Nhbi5jDQo+Pj4+Pj4gKysr IGIvbW0vdm1zY2FuLmMNCj4+Pj4+PiBAQCAtOTkwLDE1ICs5OTAsMTcgQEAgc3RhdGljIHVu c2lnbmVkIGxvbmcgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xp c3QsDQo+Pj4+Pj4goKCgoKCgoKCgoKCgoKCgoKAgcGFnZSA9IGxydV90b19wYWdlKHBhZ2Vf bGlzdCk7DQo+Pj4+Pj4goKCgoKCgoKCgoKCgoKCgoKAgbGlzdF9kZWwoJnBhZ2UtPmxydSk7 DQo+Pj4+Pj4NCj4+Pj4+PiCgoKCgoKCgoKCgoKCgoKCgIGlmICghdHJ5bG9ja19wYWdlKHBh Z2UpKSB7DQo+Pj4+Pj4goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBnb3RvIGtlZXA7DQo+ Pj4+Pj4goKCgoKCgoKCgoKCgoKCgoCB9DQo+Pj4+DQo+Pj4+ICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogZUluZm9jaGlwcyBCdXNpbmVzcyBE aXNjbGFpbWVyOiBUaGlzIGUtbWFpbCBtZXNzYWdlIGFuZCBhbGwgYXR0YWNobWVudHMgdHJh bnNtaXR0ZWQgd2l0aCBpdCBhcmWgICBpbnRlbmRlZKAgc29sZWx5IGZvciB0aGUgdXNlIG9m IHRoZSBhZGRyZXNzZWUgYW5kIG1heSBjb250YWluIGxlZ2FsbHkgcHJpdmlsZWdlZCBhbmQg Y29uZmlkZW50aWFsIGluZm9ybWF0aW9uLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2Fn ZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwgb3IgYW4gZW1wbG95ZWUgb3IgYWdl bnQgcmVzcG9uc2libGUgZm9yIGRlbGl2ZXJpbmcgdGhpcyBtZXNzYWdlIHRvIHRoZSBpbnRl bmRlZCByZWNpcGllbnQsoCAgeW91oCBhcmUgaGVyZWJ5IG5vdGlmaWVkIHRoYXQgYW55IGRp c3NlbWluYXRpb24sIGRpc3RyaWJ1dGlvbiwgY29weWluZywgb3Igb3RoZXIgdXNlIG9mIHRo aXMgbWVzc2FnZSBvciBpdHMgYXR0YWNobWVudHMgaXMgc3RyaWN0bHkgcHJvaGliaXRlZC4g SWYgeW91IGhhdmUgcmVjZWl2ZWQgdGhpcyBtZXNzYWdlIGluIGVycm9yLCBwbGVhc2Ugbm90 aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYnkgcmVwbHlpbmcgdG8gdGhpcyBtZXNzYWdl IGFuZKAgIHBsZWFzZaAgZGVsZXRlIGl0IGZyb20geW91ciBjb21wdXRlci4gQW55IHZpZXdz IGV4cHJlc3NlZCBpbiB0aGlzIG1lc3NhZ2UgYXJlIHRob3NlIG9mIHRoZSBpbmRpdmlkdWFs IHNlbmRlciB1bmxlc3Mgb3RoZXJ3aXNlIHN0YXRlZC4gQ29tcGFueSBoYXMgdGFrZW4gZW5v dWdoIHByZWNhdXRpb25zIHRvIHByZXZlbnQgdGhlIHNwcmVhZCBvZiB2aXJ1c2VzLiBIb3dl dmVyIHRoZSBjb21wYW55IGFjY2VwdHMgbm8gbGlhYmlsaXR5IGZvciBhbnkgZGFtYWdloCAg Y2F1c2VkoCBieSBhbnkgdmlydXMgdHJhbnNtaXR0ZWQgYnkgdGhpcyBlbWFpbC4gKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPj4+Pg0KPj4+ DQo+Pj4goKCgoCANCj4+Pg0KPj4goKCgoCANCj4+DQo+ICAgICANCj4gDQo=