Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp264905img; Mon, 18 Mar 2019 02:36:21 -0700 (PDT) X-Google-Smtp-Source: APXvYqzg6srHfoBwg48i0x3td3VUfCCAwRRb1un51OAOmlUZwxoHRDtSmzIXUg3C2FAo7BKHFHqD X-Received: by 2002:a62:5e46:: with SMTP id s67mr18185345pfb.126.1552901781819; Mon, 18 Mar 2019 02:36:21 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552901781; cv=none; d=google.com; s=arc-20160816; b=MV7U92EdB/yuZCuvlbqqYL+WjK7xPmUWo4QQ9yavHIVo6CPfeK9KYGYug41dkAGi/t EnlNOkVvRs+bK0ZnlC47PE9pT9kebhQbIczied/xisfnK+CEZd4NDqe2ea4mtHq9wa1x phev2egCucKJMaQvSxg3+Cz2w1gM4PneqlyKuybFKgyGAYmwQ9YzbaAO6ehJi3TbqnVp aaxxkJantDLmf/vLhCWtInLykYUlcqJ1dAem0Gmzg7gvXGUatIPLYmrmZ4JjaGEzLqWN 5+tJdfPdTGMajXQrXRMALJiVHtdUcXwMD0JYA77r4kQM8xC2iV3Y/YtJ2WQM7P8Xmn24 XOQQ== 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=ptwxEo0Z5+QHHMSgaXZET7bq/uN1WA+n1cncfO/jtg0=; b=VsFDpV56JeriPhzTX3qSBnOhlZklxvYFTd+wmhbOIYzcNNI8YTAwDZ1qUBQfNzYSUG WwJR/U17sJZaJ4OZRepd255ZZjw3fu2Vcch5qooTZ/wkQpQ+cmpbChTONg6TItqD9V1z qyCq5dq7Hq2UvsYgHcybA0f+v19CqtacqD4uQ+9Ra4E2F8zeaWngojsw1DQtOsRJ0VeE 3ovDR7JkzqOBgw0Y3+IMm52p8VaG+SmIbE0lWaEUhCcPmLfcZxiW7+ePAWXstuU8PfdG ZHwoA8EFLOptHEzx94wiyDnjyv2SvVKi0xmEQ3AWl2z9wZ3OFE1dpEZ91gdMg5KEoQH/ E0Dg== 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 c16si9050175plo.412.2019.03.18.02.36.06; Mon, 18 Mar 2019 02:36:21 -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 S1728870AbfCRJd3 (ORCPT + 99 others); Mon, 18 Mar 2019 05:33:29 -0400 Received: from relay.sw.ru ([185.231.240.75]:41592 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727964AbfCRJd1 (ORCPT ); Mon, 18 Mar 2019 05:33:27 -0400 Received: from [172.16.25.169] by relay.sw.ru with esmtp (Exim 4.91) (envelope-from ) id 1h5odw-00056m-6P; Mon, 18 Mar 2019 12:33:16 +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" , "hillf.zj@alibaba-inc.com" References: <20190314084120.GF7473@dhcp22.suse.cz> <226a92b9-94c5-b859-c54b-3aacad3089cc@virtuozzo.com> <0b86dbca-cbc9-3b43-e3b9-8876bcc24f22@suse.cz> From: Kirill Tkhai Message-ID: <56862fc0-3e4b-8d1e-ae15-0df32bf5e4c0@virtuozzo.com> Date: Mon, 18 Mar 2019 12:33:15 +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 SGksIFBhbmthaiwNCg0KT24gMTguMDMuMjAxOSAxMjowOSwgUGFua2FqIFN1cnlhd2Fuc2hp IHdyb3RlOg0KPiANCj4gSGVsbG8NCj4gDQo+IHNocmlua19wYWdlX2xpc3QoKSByZXR1cm5z ICwgbnVtYmVyIG9mIHBhZ2VzIHJlY2xhaW1lZCwgd2hlbiBwYWdlcyBpcyB1bmV2aWN0YWJs ZSBpdCByZXR1cm5zIFZNX0JVR19PTl9QQUdFKFBhZ2VMUlUocGFnZSkgfHwgUGFnZVVuZXZp Y2F0YmxlKHBhZ2UpLHBhZ2UpOw0KDQp0aGUgZ2VuZXJhbCBpZGVhIGlzIHNocmlua19wYWdl X2xpc3QoKSBjYW4ndCBpdGVyYXRlIFBhZ2VVbmV2aWN0YWJsZSgpIHBhZ2VzLg0KUGFnZVVu ZXZpY3RhYmxlKCkgcGFnZXMgYXJlIG5ldmVyIGJlaW5nIGFkZGVkIHRvIGxpc3RzLCB3aGlj aCBzaHJpbmtfcGFnZV9saXN0KCkNCnVzZXMgZm9yIGl0ZXJhdGlvbi4gQWxzbywgYSBwYWdl IGNhbid0IGJlIG1hcmtlZCBhcyBQYWdlVW5ldmljdGFibGUoKSwgd2hlbg0KaXQncyBhdHRh Y2hlZCB0byBhIHNocmlua2FibGUgbGlzdC4NCg0KU28sIHRoZSBwcm9ibGVtIHNob3VsZCBi ZSBzb21ld2hlcmUgb3V0c2lkZSBzaHJpbmtfcGFnZV9saXN0KCkuDQoNCkkgd29uJ3Qgc3Vn Z2VzdCB5b3Ugc29tZXRoaW5nIGFib3V0IENNQSwgc2luY2UgSSBoYXZlbid0IGRpdmVkIGlu IHRoYXQgY29kZS4NCg0KPiBXZSBjYW4gYWRkIHRoZSB1bmV2aWN0YWJsZSBwYWdlcyBpbiBy ZWNsYWltIGxpc3QgaW4gc2hyaW5rX3BhZ2VfbGlzdCgpLCByZXR1cm4gdG90YWwgbnVtYmVy IG9mIHJlY2xhaW0gcGFnZXMgaW5jbHVkaW5nIHVuZXZpY3RhYmxlIHBhZ2VzLCBsZXQgdGhl IGNhbGxlciBoYW5kbGUgdW5ldmljdGFibGUgcGFnZXMuDQo+IA0KPiBJIHRoaW5rIHRoZSBw cm9ibGVtIGlzIHNocmlua19wYWdlX2xpc3QgaXMgYXdrYXJkLiBJZiBwYWdlIGlzIHVuZXZp Y3RhYmxlIGl0IGdvdG8gYWN0aXZhdGVfbG9ja2VkLT5rZWVwX2xvY2tlZC0+a2VlcCBsYWJs ZXMsIGtlZXAgbGFibGUgbGlzdF9hZGQgdGhlIHVuZXZpY3RhYmxlIHBhZ2VzIGFuZCB0aHJv dyB0aGUgVk1fQlVHIGluc3RlYWQgb2YgcGFzc2luZyBpdCB0byBjYWxsZXIgd2hpbGUgaXQg cmVsaWVzIG9uIGNhbGxlciBmb3Igbm9uLXJlY2xhaW1lZC1ub24tdW5ldmljdGFibGUgIHBh Z2UncyBwdXRiYWNrLg0KPiBJIHRoaW5rIHdlIGNhbiBtYWtlIGl0IGNvbnNpc3RlbnQgc28g dGhhdCBzaHJpbmtfcGFnZV9saXN0IGNvdWxkIHJldHVybiBub24tcmVjbGFpbWVkIHBhZ2Vz IHZpYSBwYWdlX2xpc3QgYW5kIGNhbGxlciBjYW4gaGFuZGxlIGl0LiBBcyBhbiBhZHZhbmNl LCBpdCBjb3VsZCB0cnkgdG8gbWlncmF0ZSBtbG9ja2VkIHBhZ2VzIHdpdGhvdXQgcmV0cmlh bC4NCj4gDQo+IA0KPiBCZWxvdyBpcyB0aGUgaXNzdWUgb2YgQ01BX0FMTE9DIG9mIGxhcmdl IHNpemUgYnVmZmVyIDogKEtlcm5lbCB2ZXJzaW9uIC0gNC4xNC42NSAoT24gQW5kcm9pZCBw aWUgW0FSTV0pKS4NCj4gDQo+IFugoCAyNC43MTg3OTJdIHBhZ2UgZHVtcGVkIGJlY2F1c2U6 IFZNX0JVR19PTl9QQUdFKFBhZ2VMUlUocGFnZSkgfHwgUGFnZVVuZXZpY3RhYmxlKHBhZ2Up KQ0KPiBboKAgMjQuNzI2OTQ5XSBwYWdlLT5tZW1fY2dyb3VwOmJkMDA4YzAwDQo+IFugoCAy NC43MzA2OTNdIC0tLS0tLS0tLS0tLVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQ0KPiBboKAg MjQuNzM1MzA0XSBrZXJuZWwgQlVHIGF0IG1tL3Ztc2Nhbi5jOjEzNTAhDQo+IFugoCAyNC43 Mzk0NzhdIEludGVybmFsIGVycm9yOiBPb3BzIC0gQlVHOiAwIFsjMV0gUFJFRU1QVCBTTVAg QVJNDQo+IA0KPiANCj4gQmVsb3cgaXMgdGhlIHBhdGNoIHdoaWNoIHNvbHZlZCB0aGlzIGlz c3VlIDoNCj4gDQo+IGRpZmYgLS1naXQgYS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jDQo+ IGluZGV4IGJlNTZlMmUuLjEyYWMzNTMgMTAwNjQ0DQo+IC0tLSBhL21tL3Ztc2Nhbi5jDQo+ ICsrKyBiL21tL3Ztc2Nhbi5jDQo+IEBAIC05OTgsNyArOTk4LDcgQEAgc3RhdGljIHVuc2ln bmVkIGxvbmcgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xpc3Qs DQo+IKCgoKCgoKCgoKCgoKCgoCBzYy0+bnJfc2Nhbm5lZCsrOw0KPiCgDQo+IKCgoKCgoKCg oKCgoKCgoCBpZiAodW5saWtlbHkoIXBhZ2VfZXZpY3RhYmxlKHBhZ2UpKSkNCj4gLaCgoKCg oKCgoKCgoKCgoKCgoKCgoKAgZ290byBhY3RpdmF0ZV9sb2NrZWQ7DQo+ICugoKCgoKCgoKCg oKCgoKCgoKCgoKAgZ290byBjdWxsX21sb2NrZWQ7DQo+IKANCj4goKCgoKCgoKCgoKCgoKCg IGlmICghc2MtPm1heV91bm1hcCAmJiBwYWdlX21hcHBlZChwYWdlKSkNCj4goKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgZ290byBrZWVwX2xvY2tlZDsNCj4gQEAgLTEzMzEsNyArMTMzMSwx MiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0 X2hlYWQgKnBhZ2VfbGlzdCwNCj4goKCgoKCgoKCgoKCgoKCgIH0gZWxzZQ0KPiCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoCBsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmZnJlZV9wYWdlcyk7DQo+ IKCgoKCgoKCgoKCgoKCgoCBjb250aW51ZTsNCj4gLQ0KPiArY3VsbF9tbG9ja2VkOg0KPiAr oKCgoKCgoKCgoKCgoKCgIGlmIChQYWdlU3dhcENhY2hlKHBhZ2UpKQ0KPiAroKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgdHJ5X3RvX2ZyZWVfc3dhcChwYWdlKTsNCj4gK6CgoKCgoKCgoKCg oKCgoCB1bmxvY2tfcGFnZShwYWdlKTsNCj4gK6CgoKCgoKCgoKCgoKCgoCBsaXN0X2FkZCgm cGFnZS0+bHJ1LCAmcmV0X3BhZ2VzKTsNCj4gK6CgoKCgoKCgoKCgoKCgoCBjb250aW51ZTsN Cj4goGFjdGl2YXRlX2xvY2tlZDoNCj4goKCgoKCgoKCgoKCgoKCgIC8qIE5vdCBhIGNhbmRp ZGF0ZSBmb3Igc3dhcHBpbmcsIHNvIHJlY2xhaW0gc3dhcCBzcGFjZS4gKi8NCj4goKCgoKCg oKCgoKCgoKCgIGlmIChQYWdlU3dhcENhY2hlKHBhZ2UpICYmIChtZW1fY2dyb3VwX3N3YXBf ZnVsbChwYWdlKSB8fA0KPiANCj4gDQo+IA0KPiANCj4gSXQgZml4ZXMgdGhlIGJlbG93IGlz c3VlLg0KPiANCj4gMS4gTGFyZ2Ugc2l6ZSBidWZmZXIgYWxsb2NhdGlvbiB1c2luZyBjbWFf YWxsb2Mgc3VjY2Vzc2Z1bCB3aXRoIHVuZXZpY3RhYmxlIHBhZ2VzLg0KPiANCj4gY21hX2Fs bG9jIG9mIGN1cnJlbnQga2VybmVsIHdpbGwgZmFpbCBkdWUgdG8gdW5ldmljdGFibGUgcGFn ZQ0KPiANCj4gUGxlYXNlIGxldCBtZSBrbm93IGlmIGFueXRoaW5nIGkgYW0gbWlzc2luZy4N Cj4gDQo+IFJlZ2FyZHMsDQo+IFBhbmthag0KPiAgIA0KPiBGcm9tOiBWbGFzdGltaWwgQmFi a2EgPHZiYWJrYUBzdXNlLmN6Pg0KPiBTZW50OiAxOCBNYXJjaCAyMDE5IDE0OjEyOjUwDQo+ IFRvOiBQYW5rYWogU3VyeWF3YW5zaGk7IEtpcmlsbCBUa2hhaTsgTWljaGFsIEhvY2tvOyBh bmVlc2gua3VtYXJAbGludXguaWJtLmNvbQ0KPiBDYzogbGludXgta2VybmVsQHZnZXIua2Vy bmVsLm9yZzsgbWluY2hhbkBrZXJuZWwub3JnOyBsaW51eC1tbUBrdmFjay5vcmc7IGtoYW5k dWFsQGxpbnV4LnZuZXQuaWJtLmNvbTsgaGlsbGYuempAYWxpYmFiYS1pbmMuY29tDQo+IFN1 YmplY3Q6IFJlOiBbRXh0ZXJuYWxdIFJlOiB2bXNjYW46IFJlY2xhaW0gdW5ldmljdGFibGUg cGFnZXMNCj4goCANCj4gDQo+IE9uIDMvMTUvMTkgMTE6MTEgQU0sIFBhbmthaiBTdXJ5YXdh bnNoaSB3cm90ZToNCj4+DQo+PiBbIGNjIEFuZWVzaCBrdW1hciwgQW5zaHVtYW4sIEhpbGxm LCBWbGFzdGltaWxdDQo+IA0KPiBDYW4geW91IHNlbmQgYSBwcm9wZXIgcGF0Y2ggd2l0aCBj aGFuZ2Vsb2cgZXhwbGFpbmluZyB0aGUgY2hhbmdlPyBJDQo+IGRvbid0IGtub3cgdGhlIGNv bnRleHQgb2YgdGhpcyB0aHJlYWQuDQo+IA0KPj4gRnJvbTogUGFua2FqIFN1cnlhd2Fuc2hp DQo+PiBTZW50OiAxNSBNYXJjaCAyMDE5IDExOjM1OjA1DQo+PiBUbzogS2lyaWxsIFRraGFp OyBNaWNoYWwgSG9ja28NCj4+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBt aW5jaGFuQGtlcm5lbC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZw0KPj4gU3ViamVjdDogUmU6 IFJlOiBbRXh0ZXJuYWxdIFJlOiB2bXNjYW46IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMN Cj4+DQo+Pg0KPj4NCj4+IFsgY2MgbGludXgtbW0gXQ0KPj4NCj4+DQo+PiBGcm9tOiBQYW5r YWogU3VyeWF3YW5zaGkNCj4+IFNlbnQ6IDE0IE1hcmNoIDIwMTkgMTk6MTQ6NDANCj4+IFRv OiBLaXJpbGwgVGtoYWk7IE1pY2hhbCBIb2Nrbw0KPj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmc7IG1pbmNoYW5Aa2VybmVsLm9yZw0KPj4gU3ViamVjdDogUmU6IFJlOiBb RXh0ZXJuYWxdIFJlOiB2bXNjYW46IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMNCj4+DQo+ Pg0KPj4NCj4+IEhlbGxvICwNCj4+DQo+PiBQbGVhc2UgaWdub3JlIHRoZSBjdXJseSBicmFj ZXMsIHRoZXkgYXJlIGp1c3QgZm9yIGRlYnVnZ2luZy4NCj4+DQo+PiBCZWxvdyBpcyB0aGUg dXBkYXRlZCBwYXRjaC4NCj4+DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIv bW0vdm1zY2FuLmMNCj4+IGluZGV4IGJlNTZlMmUuLjEyYWMzNTMgMTAwNjQ0DQo+PiAtLS0g YS9tbS92bXNjYW4uYw0KPj4gKysrIGIvbW0vdm1zY2FuLmMNCj4+IEBAIC05OTgsNyArOTk4 LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlz dF9oZWFkICpwYWdlX2xpc3QsDQo+PiCgoKCgoKCgoKCgoKCgoKCgIHNjLT5ucl9zY2FubmVk Kys7DQo+Pg0KPj4goKCgoKCgoKCgoKCgoKCgoCBpZiAodW5saWtlbHkoIXBhZ2VfZXZpY3Rh YmxlKHBhZ2UpKSkNCj4+IC2goKCgoKCgoKCgoKCgoKCgoKCgoKCgIGdvdG8gYWN0aXZhdGVf bG9ja2VkOw0KPj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCgoCBnb3RvIGN1bGxfbWxvY2tlZDsN Cj4+DQo+PiCgoKCgoKCgoKCgoKCgoKCgIGlmICghc2MtPm1heV91bm1hcCAmJiBwYWdlX21h cHBlZChwYWdlKSkNCj4+IKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBnb3RvIGtlZXBfbG9j a2VkOw0KPj4gQEAgLTEzMzEsNyArMTMzMSwxMiBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBz aHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VfbGlzdCwNCj4+IKCgoKCg oKCgoKCgoKCgoKAgfSBlbHNlDQo+PiCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgbGlzdF9h ZGQoJnBhZ2UtPmxydSwgJmZyZWVfcGFnZXMpOw0KPj4goKCgoKCgoKCgoKCgoKCgoCBjb250 aW51ZTsNCj4+IC0NCj4+ICtjdWxsX21sb2NrZWQ6DQo+PiAroKCgoKCgoKCgoKCgoKCgIGlm IChQYWdlU3dhcENhY2hlKHBhZ2UpKQ0KPj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHRy eV90b19mcmVlX3N3YXAocGFnZSk7DQo+PiAroKCgoKCgoKCgoKCgoKCgIHVubG9ja19wYWdl KHBhZ2UpOw0KPj4gK6CgoKCgoKCgoKCgoKCgoCBsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmcmV0 X3BhZ2VzKTsNCj4+ICugoKCgoKCgoKCgoKCgoKAgY29udGludWU7DQo+PiCgIGFjdGl2YXRl X2xvY2tlZDoNCj4+IKCgoKCgoKCgoKCgoKCgoKAgLyogTm90IGEgY2FuZGlkYXRlIGZvciBz d2FwcGluZywgc28gcmVjbGFpbSBzd2FwIHNwYWNlLiAqLw0KPj4goKCgoKCgoKCgoKCgoKCg oCBpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSAmJiAobWVtX2Nncm91cF9zd2FwX2Z1bGwocGFn ZSkgfHwNCj4+DQo+Pg0KPj4NCj4+IFJlZ2FyZHMsDQo+PiBQYW5rYWoNCj4+DQo+Pg0KPj4g RnJvbTogS2lyaWxsIFRraGFpIDxrdGtoYWlAdmlydHVvenpvLmNvbT4NCj4+IFNlbnQ6IDE0 IE1hcmNoIDIwMTkgMTQ6NTU6MzQNCj4+IFRvOiBQYW5rYWogU3VyeWF3YW5zaGk7IE1pY2hh bCBIb2Nrbw0KPj4gQ2M6IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IG1pbmNoYW5A a2VybmVsLm9yZw0KPj4gU3ViamVjdDogUmU6IFJlOiBbRXh0ZXJuYWxdIFJlOiB2bXNjYW46 IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMNCj4+DQo+Pg0KPj4gT24gMTQuMDMuMjAxOSAx MTo1MiwgUGFua2FqIFN1cnlhd2Fuc2hpIHdyb3RlOg0KPj4+DQo+Pj4gSSBhbSB1c2luZyBr ZXJuZWwgdmVyc2lvbiA0LjE0LjY1IChvbiBBbmRyb2lkIHBpZSBbQVJNXSkuDQo+Pj4NCj4+ PiBObyBhZGRpdGlvbmFsIHBhdGNoZXMgYXBwbGllZCBvbiB0b3Agb2YgdmFuaWxsYS4oQ29y ZSBNTSkuDQo+Pj4NCj4+PiBJZqAgSSBjaGFuZ2UgaW4gdGhlIHZtc2Nhbi5jIGFzIGJlbG93 IHBhdGNoLCBpdCB3aWxsIHdvcmsuDQo+Pg0KPj4gU29ycnksIGJ1dCA0LjE0LjY1IGRvZXMg bm90IGhhdmUgYnJhY2VzIGFyb3VuZCB0cnlsb2NrX3BhZ2UoKSwNCj4+IGxpa2UgaW4geW91 ciBwYXRjaCBiZWxvdy4NCj4+DQo+PiBTZWWgoKCgICBodHRwczovL2dpdC5rZXJuZWwub3Jn L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9zdGFibGUvbGludXguZ2l0L3RyZWUvbW0vdm1z Y2FuLmM/aD12NC4xNC42NQ0KPj4NCj4+IFsuLi5dDQo+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEv bW0vdm1zY2FuLmMgYi9tbS92bXNjYW4uYw0KPj4+PiBpbmRleCBiZTU2ZTJlLi4yZTUxZWRj IDEwMDY0NA0KPj4+PiAtLS0gYS9tbS92bXNjYW4uYw0KPj4+PiArKysgYi9tbS92bXNjYW4u Yw0KPj4+PiBAQCAtOTkwLDE1ICs5OTAsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hy aW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xpc3QsDQo+Pj4+IKCgoKCg oKCgoKCgoKCgoKCgIHBhZ2UgPSBscnVfdG9fcGFnZShwYWdlX2xpc3QpOw0KPj4+PiCgoKCg oKCgoKCgoKCgoKCgoCBsaXN0X2RlbCgmcGFnZS0+bHJ1KTsNCj4+Pj4NCj4+Pj4goKCgoKCg oKCgoKCgoKCgoCBpZiAoIXRyeWxvY2tfcGFnZShwYWdlKSkgew0KPj4+PiCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgIGdvdG8ga2VlcDsNCj4+Pj4goKCgoKCgoKCgoKCgoKCgoCB9DQo+ Pg0KPj4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiBlSW5mb2NoaXBzIEJ1c2luZXNzIERpc2NsYWltZXI6IFRoaXMgZS1tYWlsIG1lc3NhZ2Ug YW5kIGFsbCBhdHRhY2htZW50cyB0cmFuc21pdHRlZCB3aXRoIGl0IGFyZSBpbnRlbmRlZCAg c29sZWx5IGZvciB0aGUgdXNlIG9mIHRoZSBhZGRyZXNzZWUgYW5kIG1heSBjb250YWluIGxl Z2FsbHkgcHJpdmlsZWdlZCBhbmQgY29uZmlkZW50aWFsIGluZm9ybWF0aW9uLiBJZiB0aGUg cmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVuZGVkIHJlY2lwaWVudCwg b3IgYW4gZW1wbG95ZWUgb3IgYWdlbnQgcmVzcG9uc2libGUgZm9yIGRlbGl2ZXJpbmcgdGhp cyBtZXNzYWdlIHRvIHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHlvdSAgYXJlIGhlcmVieSBu b3RpZmllZCB0aGF0IGFueSBkaXNzZW1pbmF0aW9uLCBkaXN0cmlidXRpb24sIGNvcHlpbmcs IG9yIG90aGVyIHVzZSBvZiB0aGlzIG1lc3NhZ2Ugb3IgaXRzIGF0dGFjaG1lbnRzIGlzIHN0 cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBoYXZlIHJlY2VpdmVkIHRoaXMgbWVzc2FnZSBp biBlcnJvciwgcGxlYXNlIG5vdGlmeSB0aGUgc2VuZGVyIGltbWVkaWF0ZWx5IGJ5IHJlcGx5 aW5nIHRvIHRoaXMgbWVzc2FnZSBhbmQgcGxlYXNlICBkZWxldGUgaXQgZnJvbSB5b3VyIGNv bXB1dGVyLiBBbnkgdmlld3MgZXhwcmVzc2VkIGluIHRoaXMgbWVzc2FnZSBhcmUgdGhvc2Ug b2YgdGhlIGluZGl2aWR1YWwgc2VuZGVyIHVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLiBDb21w YW55IGhhcyB0YWtlbiBlbm91Z2ggcHJlY2F1dGlvbnMgdG8gcHJldmVudCB0aGUgc3ByZWFk IG9mIHZpcnVzZXMuIEhvd2V2ZXIgdGhlIGNvbXBhbnkgYWNjZXB0cyBubyBsaWFiaWxpdHkg Zm9yIGFueSBkYW1hZ2UgY2F1c2VkICBieSBhbnkgdmlydXMgdHJhbnNtaXR0ZWQgYnkgdGhp cyBlbWFpbC4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKg0KPj4NCj4gDQo+ICAgICANCj4gDQo=