From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1FD60C10F00 for ; Mon, 18 Mar 2019 09:48:07 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C42642087C for ; Mon, 18 Mar 2019 09:48:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C42642087C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=virtuozzo.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 62E066B0007; Mon, 18 Mar 2019 05:48:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5DE0B6B0008; Mon, 18 Mar 2019 05:48:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4A5B46B000A; Mon, 18 Mar 2019 05:48:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from mail-lj1-f199.google.com (mail-lj1-f199.google.com [209.85.208.199]) by kanga.kvack.org (Postfix) with ESMTP id CAA826B0007 for ; Mon, 18 Mar 2019 05:48:05 -0400 (EDT) Received: by mail-lj1-f199.google.com with SMTP id t9so4309344lji.0 for ; Mon, 18 Mar 2019 02:48:05 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:subject:to:cc :references:from:message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=TmjRbe+tdTRXhssIzJcj3kiflTaBfAovCE6Q8aQYrPg=; b=sbdPUtT5SlWaoQj+ZlYBApjU+hLttkQ2aWdgkKbpmxJt/u2IGGxC4+UUcLrvClhVK1 dfxZvAAGLTfLeUzP6CJgNpOM4w4Ej5gZWqqLUp+wIOp/VhKowNZpnhI0mPVvIirh9uf4 Aoi+y/7rRrt6CEiaeL6w/cjVRhe2rO/yxjJs336ZvGgGvgEz4ClQkRDLVS8alzl8qZzT xK1+vQP/fH4iU2miGAinDonvm4hTbuJ+FSk/xxNYUwhPOpnLWEgA8joUxAlnRNXRDyX7 JE7J6mmAvOcdy3LIfWCKJ7V4vqCz5DMAQu/K8M8VTyfWWVc8qcUeaKh6duL3dKoZNID5 PtDw== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of ktkhai@virtuozzo.com designates 185.231.240.75 as permitted sender) smtp.mailfrom=ktkhai@virtuozzo.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com X-Gm-Message-State: APjAAAXPruzUi8gQfZXil880Thfrgf9Ox7iagF3GDq5BfPeZmw7PnSyB XXuHQL+IRbFhn0NAxJGNatvlTPkqTO1q96HDyWOcj7YqVcZZKkuDGNcTkjDJydxd1h5b3TTmO58 HoTER7BACKPx8pZMuwSA/0I3iBPTQMbFG4xLBAWj9cM9Dofug8qABthZc2OxaUVjAMA== X-Received: by 2002:a2e:9786:: with SMTP id y6mr9051553lji.79.1552902485259; Mon, 18 Mar 2019 02:48:05 -0700 (PDT) X-Google-Smtp-Source: APXvYqzhzhMmQpkYi4sZ9a5Nijb48PrnWY9DqR0Bt43/84Lr793sckFBLSpZsvXi5y8bqmR36MkR X-Received: by 2002:a2e:9786:: with SMTP id y6mr9051503lji.79.1552902484269; Mon, 18 Mar 2019 02:48:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552902484; cv=none; d=google.com; s=arc-20160816; b=lodUDjv2YNUDRUTNF0jHwY5+CS58rY43w9mtSKpa7sBYjVOHJCOA4ceGjNJQBcsAm1 VM31Ya35xxfmkWKMpyjSRrupsVOrwRlWmDpW2qTC1YrIrwesdmlcnKulqu+8aejJS/f4 89RXyafHcHLxEAt0hVeTDHlW9gJs4gipxrQEAeOJaXsoMtEIl34EEAzBB7xd6/RK/dkN 9lvEKu8eYYWFsopdXJkVRQ52gKSqQRVxXKOhX3l/IO4DmIUuunu/XOY/cDyfYiMI9czm o4zeLJYp3T8hFxZgz5DqHhg4S0JELo03gs9/w5+agjhQ4QdD4EaOIw36i13byGvrD50I Y3Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:content-language:in-reply-to:mime-version :user-agent:date:message-id:from:references:cc:to:subject; bh=TmjRbe+tdTRXhssIzJcj3kiflTaBfAovCE6Q8aQYrPg=; b=VJmoQqsruOtxVxBePtcrFQKXqU0RwWRjOJQgMSAvZaoU9Q7dXZ2y+/OYm5HS8FL3m7 79+hVKQSOS7OuZoMDHRcHZLTB9A9vjeEiP0Wc2HBBfjFgiKBMdMAnek9qAmzscAdXFN9 9shduRvlKCYPQuQCD4zHXBtFU4po03u3PaRYCGaPW5BXv42tSRfr8uGgXx3tuGmA2EvQ CB5g7NiNT6NV8Gp5jXcxPuuxQm/Ki4Z52+XQ+NqEHbTw4wIApXu1SX72ZqTaBxSFpDbk EWlb6OS0K4L22u/E3a8102COtYTPMzHQJaqVdnIo42rzcnFVoARkhDZRo87tAsXGa1+m E6XA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ktkhai@virtuozzo.com designates 185.231.240.75 as permitted sender) smtp.mailfrom=ktkhai@virtuozzo.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: from relay.sw.ru (relay.sw.ru. [185.231.240.75]) by mx.google.com with ESMTPS id v10si6694610lfg.84.2019.03.18.02.48.04 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 18 Mar 2019 02:48:04 -0700 (PDT) Received-SPF: pass (google.com: domain of ktkhai@virtuozzo.com designates 185.231.240.75 as permitted sender) client-ip=185.231.240.75; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ktkhai@virtuozzo.com designates 185.231.240.75 as permitted sender) smtp.mailfrom=ktkhai@virtuozzo.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=virtuozzo.com Received: from [172.16.25.169] by relay.sw.ru with esmtp (Exim 4.91) (envelope-from ) id 1h5os9-0005DB-Qa; Mon, 18 Mar 2019 12:47:57 +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> <56862fc0-3e4b-8d1e-ae15-0df32bf5e4c0@virtuozzo.com> From: Kirill Tkhai Message-ID: <4c05dda3-9fdf-e357-75ed-6ee3f25c9e52@virtuozzo.com> Date: Mon, 18 Mar 2019 12:47:56 +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 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: T24gMTguMDMuMjAxOSAxMjo0MywgUGFua2FqIFN1cnlhd2Fuc2hpIHdyb3RlOg0KPiBIaSBL aXJpbGwgVGtoYWksDQo+DQoNClBsZWFzZSwgZG8gbm90IHRvcCBwb3N0aW5nOiBodHRwczov L2tlcm5lbG5ld2JpZXMub3JnL21haWxpbmdsaXN0Z3VpZGVsaW5lcw0KDQo+IFBsZWFzZSBz ZWUgbW0vdm1zY2FuLmMgaW4gd2hpY2ggaXQgZmlyc3QgYWRkZWQgdG8gbGlzdCBhbmQgdGhh biB0aHJvdyB0aGUgZXJyb3IgOg0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiBrZWVwOg0KPiAgICAgICAgICAgICAgICAgbGlzdF9hZGQoJnBh Z2UtPmxydSwgJnJldF9wYWdlcyk7DQo+ICAgICAgICAgICAgICAgICBWTV9CVUdfT05fUEFH RShQYWdlTFJVKHBhZ2UpIHx8IFBhZ2VVbmV2aWN0YWJsZShwYWdlKSwgcGFnZSk7DQo+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gQmVm b3JlIHRocm93aW5nIGVycm9yLCBwYWdlcyBhcmUgYWRkZWQgdG8gbGlzdCwgdGhpcyBpcyB1 bmRlciBpdGVyYXRpb24gb2Ygc2hyaW5rX3BhZ2VfbGlzdCgpLg0KDQpJIHNheSBhYm91dCBh Ym91dCB0aGUgbGlzdCwgd2hpY2ggaXMgcGFzc2VkIHRvIHNocmlua19wYWdlX2xpc3QoKSBh cyBmaXJzdCBhcmd1bWVudC4NCg0Kc2hyaW5rX2luYWN0aXZlX2xpc3QoKQ0Kew0KCWlzb2xh dGVfbHJ1X3BhZ2VzKCZwYWdlX2xpc3QpOyAvLyA8LS0geW91IGNhbid0IG9idGFpbiB1bmV2 aWN0YWJsZSBwYWdlcyBoZXJlLg0KCXNocmlua19wYWdlX2xpc3QoJnBhZ2VfbGlzdCk7DQp9 DQogDQo+IEZyb206IEtpcmlsbCBUa2hhaSA8a3RraGFpQHZpcnR1b3p6by5jb20+DQo+IFNl bnQ6IDE4IE1hcmNoIDIwMTkgMTU6MDM6MTUNCj4gVG86IFBhbmthaiBTdXJ5YXdhbnNoaTsg Vmxhc3RpbWlsIEJhYmthOyBNaWNoYWwgSG9ja287IGFuZWVzaC5rdW1hckBsaW51eC5pYm0u Y29tDQo+IENjOiBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBtaW5jaGFuQGtlcm5l bC5vcmc7IGxpbnV4LW1tQGt2YWNrLm9yZzsga2hhbmR1YWxAbGludXgudm5ldC5pYm0uY29t OyBoaWxsZi56akBhbGliYWJhLWluYy5jb20NCj4gU3ViamVjdDogUmU6IFtFeHRlcm5hbF0g UmU6IHZtc2NhbjogUmVjbGFpbSB1bmV2aWN0YWJsZSBwYWdlcw0KPiCgIA0KPiANCj4gSGks IFBhbmthaiwNCj4gDQo+IE9uIDE4LjAzLjIwMTkgMTI6MDksIFBhbmthaiBTdXJ5YXdhbnNo aSB3cm90ZToNCj4+DQo+PiBIZWxsbw0KPj4NCj4+IHNocmlua19wYWdlX2xpc3QoKSByZXR1 cm5zICwgbnVtYmVyIG9mIHBhZ2VzIHJlY2xhaW1lZCwgd2hlbiBwYWdlcyBpcyB1bmV2aWN0 YWJsZSBpdCByZXR1cm5zIFZNX0JVR19PTl9QQUdFKFBhZ2VMUlUocGFnZSkgfHwgUGFnZVVu ZXZpY2F0YmxlKHBhZ2UpLHBhZ2UpOw0KPiANCj4gdGhlIGdlbmVyYWwgaWRlYSBpcyBzaHJp bmtfcGFnZV9saXN0KCkgY2FuJ3QgaXRlcmF0ZSBQYWdlVW5ldmljdGFibGUoKSBwYWdlcy4N Cj4gUGFnZVVuZXZpY3RhYmxlKCkgcGFnZXMgYXJlIG5ldmVyIGJlaW5nIGFkZGVkIHRvIGxp c3RzLCB3aGljaCBzaHJpbmtfcGFnZV9saXN0KCkNCj4gdXNlcyBmb3IgaXRlcmF0aW9uLiBB bHNvLCBhIHBhZ2UgY2FuJ3QgYmUgbWFya2VkIGFzIFBhZ2VVbmV2aWN0YWJsZSgpLCB3aGVu DQo+IGl0J3MgYXR0YWNoZWQgdG8gYSBzaHJpbmthYmxlIGxpc3QuDQo+IA0KPiBTbywgdGhl IHByb2JsZW0gc2hvdWxkIGJlIHNvbWV3aGVyZSBvdXRzaWRlIHNocmlua19wYWdlX2xpc3Qo KS4NCj4gDQo+IEkgd29uJ3Qgc3VnZ2VzdCB5b3Ugc29tZXRoaW5nIGFib3V0IENNQSwgc2lu Y2UgSSBoYXZlbid0IGRpdmVkIGluIHRoYXQgY29kZS4NCj4gDQo+PiBXZSBjYW4gYWRkIHRo ZSB1bmV2aWN0YWJsZSBwYWdlcyBpbiByZWNsYWltIGxpc3QgaW4gc2hyaW5rX3BhZ2VfbGlz dCgpLCByZXR1cm4gdG90YWwgbnVtYmVyIG9mIHJlY2xhaW0gcGFnZXMgaW5jbHVkaW5nIHVu ZXZpY3RhYmxlIHBhZ2VzLCBsZXQgdGhlIGNhbGxlciBoYW5kbGUgdW5ldmljdGFibGUgcGFn ZXMuDQo+Pg0KPj4gSSB0aGluayB0aGUgcHJvYmxlbSBpcyBzaHJpbmtfcGFnZV9saXN0IGlz IGF3a2FyZC4gSWYgcGFnZSBpcyB1bmV2aWN0YWJsZSBpdCBnb3RvIGFjdGl2YXRlX2xvY2tl ZC0+a2VlcF9sb2NrZWQtPmtlZXAgbGFibGVzLCBrZWVwIGxhYmxlIGxpc3RfYWRkIHRoZSB1 bmV2aWN0YWJsZSBwYWdlcyBhbmQgdGhyb3cgdGhlIFZNX0JVRyBpbnN0ZWFkIG9mIHBhc3Np bmcgaXQgdG8gY2FsbGVyIHdoaWxlIGl0IHJlbGllcyBvbiBjYWxsZXIgZm9yIG5vbi1yZWNs YWltZWQtbm9uLXVuZXZpY3RhYmxloCAgcGFnZSdzIHB1dGJhY2suDQo+PiBJIHRoaW5rIHdl IGNhbiBtYWtlIGl0IGNvbnNpc3RlbnQgc28gdGhhdCBzaHJpbmtfcGFnZV9saXN0IGNvdWxk IHJldHVybiBub24tcmVjbGFpbWVkIHBhZ2VzIHZpYSBwYWdlX2xpc3QgYW5kIGNhbGxlciBj YW4gaGFuZGxlIGl0LiBBcyBhbiBhZHZhbmNlLCBpdCBjb3VsZCB0cnkgdG8gbWlncmF0ZSBt bG9ja2VkIHBhZ2VzIHdpdGhvdXQgcmV0cmlhbC4NCj4+DQo+Pg0KPj4gQmVsb3cgaXMgdGhl IGlzc3VlIG9mIENNQV9BTExPQyBvZiBsYXJnZSBzaXplIGJ1ZmZlciA6IChLZXJuZWwgdmVy c2lvbiAtIDQuMTQuNjUgKE9uIEFuZHJvaWQgcGllIFtBUk1dKSkuDQo+Pg0KPj4gW6CgIDI0 LjcxODc5Ml0gcGFnZSBkdW1wZWQgYmVjYXVzZTogVk1fQlVHX09OX1BBR0UoUGFnZUxSVShw YWdlKSB8fCBQYWdlVW5ldmljdGFibGUocGFnZSkpDQo+PiBboKAgMjQuNzI2OTQ5XSBwYWdl LT5tZW1fY2dyb3VwOmJkMDA4YzAwDQo+PiBboKAgMjQuNzMwNjkzXSAtLS0tLS0tLS0tLS1b IGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0NCj4+IFugoCAyNC43MzUzMDRdIGtlcm5lbCBCVUcg YXQgbW0vdm1zY2FuLmM6MTM1MCENCj4+IFugoCAyNC43Mzk0NzhdIEludGVybmFsIGVycm9y OiBPb3BzIC0gQlVHOiAwIFsjMV0gUFJFRU1QVCBTTVAgQVJNDQo+Pg0KPj4NCj4+IEJlbG93 IGlzIHRoZSBwYXRjaCB3aGljaCBzb2x2ZWQgdGhpcyBpc3N1ZSA6DQo+Pg0KPj4gZGlmZiAt LWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMNCj4+IGluZGV4IGJlNTZlMmUuLjEy YWMzNTMgMTAwNjQ0DQo+PiAtLS0gYS9tbS92bXNjYW4uYw0KPj4gKysrIGIvbW0vdm1zY2Fu LmMNCj4+IEBAIC05OTgsNyArOTk4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hyaW5r X3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xpc3QsDQo+PiCgoKCgoKCgoKCg oKCgoKAgc2MtPm5yX3NjYW5uZWQrKzsNCj4+IKANCj4+IKCgoKCgoKCgoKCgoKCgoCBpZiAo dW5saWtlbHkoIXBhZ2VfZXZpY3RhYmxlKHBhZ2UpKSkNCj4+IC2goKCgoKCgoKCgoKCgoKCg oKCgoKCgIGdvdG8gYWN0aXZhdGVfbG9ja2VkOw0KPj4gK6CgoKCgoKCgoKCgoKCgoKCgoKCg oCBnb3RvIGN1bGxfbWxvY2tlZDsNCj4+IKANCj4+IKCgoKCgoKCgoKCgoKCgoCBpZiAoIXNj LT5tYXlfdW5tYXAgJiYgcGFnZV9tYXBwZWQocGFnZSkpDQo+PiCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoCBnb3RvIGtlZXBfbG9ja2VkOw0KPj4gQEAgLTEzMzEsNyArMTMzMSwxMiBAQCBz dGF0aWMgdW5zaWduZWQgbG9uZyBzaHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQg KnBhZ2VfbGlzdCwNCj4+IKCgoKCgoKCgoKCgoKCgoCB9IGVsc2UNCj4+IKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgIGxpc3RfYWRkKCZwYWdlLT5scnUsICZmcmVlX3BhZ2VzKTsNCj4+IKCg oKCgoKCgoKCgoKCgoCBjb250aW51ZTsNCj4+IC0NCj4+ICtjdWxsX21sb2NrZWQ6DQo+PiAr oKCgoKCgoKCgoKCgoKCgIGlmIChQYWdlU3dhcENhY2hlKHBhZ2UpKQ0KPj4gK6CgoKCgoKCg oKCgoKCgoKCgoKCgoKCgIHRyeV90b19mcmVlX3N3YXAocGFnZSk7DQo+PiAroKCgoKCgoKCg oKCgoKCgIHVubG9ja19wYWdlKHBhZ2UpOw0KPj4gK6CgoKCgoKCgoKCgoKCgoCBsaXN0X2Fk ZCgmcGFnZS0+bHJ1LCAmcmV0X3BhZ2VzKTsNCj4+ICugoKCgoKCgoKCgoKCgoKAgY29udGlu dWU7DQo+PiCgYWN0aXZhdGVfbG9ja2VkOg0KPj4goKCgoKCgoKCgoKCgoKCgIC8qIE5vdCBh IGNhbmRpZGF0ZSBmb3Igc3dhcHBpbmcsIHNvIHJlY2xhaW0gc3dhcCBzcGFjZS4gKi8NCj4+ IKCgoKCgoKCgoKCgoKCgoCBpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSAmJiAobWVtX2Nncm91 cF9zd2FwX2Z1bGwocGFnZSkgfHwNCj4+DQo+Pg0KPj4NCj4+DQo+PiBJdCBmaXhlcyB0aGUg YmVsb3cgaXNzdWUuDQo+Pg0KPj4gMS4gTGFyZ2Ugc2l6ZSBidWZmZXIgYWxsb2NhdGlvbiB1 c2luZyBjbWFfYWxsb2Mgc3VjY2Vzc2Z1bCB3aXRoIHVuZXZpY3RhYmxlIHBhZ2VzLg0KPj4N Cj4+IGNtYV9hbGxvYyBvZiBjdXJyZW50IGtlcm5lbCB3aWxsIGZhaWwgZHVlIHRvIHVuZXZp Y3RhYmxlIHBhZ2UNCj4+DQo+PiBQbGVhc2UgbGV0IG1lIGtub3cgaWYgYW55dGhpbmcgaSBh bSBtaXNzaW5nLg0KPj4NCj4+IFJlZ2FyZHMsDQo+PiBQYW5rYWoNCj4+IKCgIA0KPj4gRnJv bTogVmxhc3RpbWlsIEJhYmthIDx2YmFia2FAc3VzZS5jej4NCj4+IFNlbnQ6IDE4IE1hcmNo IDIwMTkgMTQ6MTI6NTANCj4+IFRvOiBQYW5rYWogU3VyeWF3YW5zaGk7IEtpcmlsbCBUa2hh aTsgTWljaGFsIEhvY2tvOyBhbmVlc2gua3VtYXJAbGludXguaWJtLmNvbQ0KPj4gQ2M6IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IG1pbmNoYW5Aa2VybmVsLm9yZzsgbGludXgt bW1Aa3ZhY2sub3JnOyBraGFuZHVhbEBsaW51eC52bmV0LmlibS5jb207IGhpbGxmLnpqQGFs aWJhYmEtaW5jLmNvbQ0KPj4gU3ViamVjdDogUmU6IFtFeHRlcm5hbF0gUmU6IHZtc2Nhbjog UmVjbGFpbSB1bmV2aWN0YWJsZSBwYWdlcw0KPj4goCANCj4+DQo+PiBPbiAzLzE1LzE5IDEx OjExIEFNLCBQYW5rYWogU3VyeWF3YW5zaGkgd3JvdGU6DQo+Pj4NCj4+PiBbIGNjIEFuZWVz aCBrdW1hciwgQW5zaHVtYW4sIEhpbGxmLCBWbGFzdGltaWxdDQo+Pg0KPj4gQ2FuIHlvdSBz ZW5kIGEgcHJvcGVyIHBhdGNoIHdpdGggY2hhbmdlbG9nIGV4cGxhaW5pbmcgdGhlIGNoYW5n ZT8gSQ0KPj4gZG9uJ3Qga25vdyB0aGUgY29udGV4dCBvZiB0aGlzIHRocmVhZC4NCj4+DQo+ Pj4gRnJvbTogUGFua2FqIFN1cnlhd2Fuc2hpDQo+Pj4gU2VudDogMTUgTWFyY2ggMjAxOSAx MTozNTowNQ0KPj4+IFRvOiBLaXJpbGwgVGtoYWk7IE1pY2hhbCBIb2Nrbw0KPj4+IENjOiBs aW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBtaW5jaGFuQGtlcm5lbC5vcmc7IGxpbnV4 LW1tQGt2YWNrLm9yZw0KPj4+IFN1YmplY3Q6IFJlOiBSZTogW0V4dGVybmFsXSBSZTogdm1z Y2FuOiBSZWNsYWltIHVuZXZpY3RhYmxlIHBhZ2VzDQo+Pj4NCj4+Pg0KPj4+DQo+Pj4gWyBj YyBsaW51eC1tbSBdDQo+Pj4NCj4+Pg0KPj4+IEZyb206IFBhbmthaiBTdXJ5YXdhbnNoaQ0K Pj4+IFNlbnQ6IDE0IE1hcmNoIDIwMTkgMTk6MTQ6NDANCj4+PiBUbzogS2lyaWxsIFRraGFp OyBNaWNoYWwgSG9ja28NCj4+PiBDYzogbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZzsg bWluY2hhbkBrZXJuZWwub3JnDQo+Pj4gU3ViamVjdDogUmU6IFJlOiBbRXh0ZXJuYWxdIFJl OiB2bXNjYW46IFJlY2xhaW0gdW5ldmljdGFibGUgcGFnZXMNCj4+Pg0KPj4+DQo+Pj4NCj4+ PiBIZWxsbyAsDQo+Pj4NCj4+PiBQbGVhc2UgaWdub3JlIHRoZSBjdXJseSBicmFjZXMsIHRo ZXkgYXJlIGp1c3QgZm9yIGRlYnVnZ2luZy4NCj4+Pg0KPj4+IEJlbG93IGlzIHRoZSB1cGRh dGVkIHBhdGNoLg0KPj4+DQo+Pj4NCj4+PiBkaWZmIC0tZ2l0IGEvbW0vdm1zY2FuLmMgYi9t bS92bXNjYW4uYw0KPj4+IGluZGV4IGJlNTZlMmUuLjEyYWMzNTMgMTAwNjQ0DQo+Pj4gLS0t IGEvbW0vdm1zY2FuLmMNCj4+PiArKysgYi9tbS92bXNjYW4uYw0KPj4+IEBAIC05OTgsNyAr OTk4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3Qg bGlzdF9oZWFkICpwYWdlX2xpc3QsDQo+Pj4goKCgoKCgoKCgoKCgoKCgoCBzYy0+bnJfc2Nh bm5lZCsrOw0KPj4+DQo+Pj4goKCgoKCgoKCgoKCgoKCgoCBpZiAodW5saWtlbHkoIXBhZ2Vf ZXZpY3RhYmxlKHBhZ2UpKSkNCj4+PiAtoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBnb3RvIGFj dGl2YXRlX2xvY2tlZDsNCj4+PiAroKCgoKCgoKCgoKCgoKCgoKCgoKCgIGdvdG8gY3VsbF9t bG9ja2VkOw0KPj4+DQo+Pj4goKCgoKCgoKCgoKCgoKCgoCBpZiAoIXNjLT5tYXlfdW5tYXAg JiYgcGFnZV9tYXBwZWQocGFnZSkpDQo+Pj4goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIGdv dG8ga2VlcF9sb2NrZWQ7DQo+Pj4gQEAgLTEzMzEsNyArMTMzMSwxMiBAQCBzdGF0aWMgdW5z aWduZWQgbG9uZyBzaHJpbmtfcGFnZV9saXN0KHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VfbGlz dCwNCj4+PiCgoKCgoKCgoKCgoKCgoKCgIH0gZWxzZQ0KPj4+IKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoCBsaXN0X2FkZCgmcGFnZS0+bHJ1LCAmZnJlZV9wYWdlcyk7DQo+Pj4goKCgoKCg oKCgoKCgoKCgoCBjb250aW51ZTsNCj4+PiAtDQo+Pj4gK2N1bGxfbWxvY2tlZDoNCj4+PiAr oKCgoKCgoKCgoKCgoKCgIGlmIChQYWdlU3dhcENhY2hlKHBhZ2UpKQ0KPj4+ICugoKCgoKCg oKCgoKCgoKCgoKCgoKCgoCB0cnlfdG9fZnJlZV9zd2FwKHBhZ2UpOw0KPj4+ICugoKCgoKCg oKCgoKCgoKAgdW5sb2NrX3BhZ2UocGFnZSk7DQo+Pj4gK6CgoKCgoKCgoKCgoKCgoCBsaXN0 X2FkZCgmcGFnZS0+bHJ1LCAmcmV0X3BhZ2VzKTsNCj4+PiAroKCgoKCgoKCgoKCgoKCgIGNv bnRpbnVlOw0KPj4+IKAgYWN0aXZhdGVfbG9ja2VkOg0KPj4+IKCgoKCgoKCgoKCgoKCgoKAg LyogTm90IGEgY2FuZGlkYXRlIGZvciBzd2FwcGluZywgc28gcmVjbGFpbSBzd2FwIHNwYWNl LiAqLw0KPj4+IKCgoKCgoKCgoKCgoKCgoKAgaWYgKFBhZ2VTd2FwQ2FjaGUocGFnZSkgJiYg KG1lbV9jZ3JvdXBfc3dhcF9mdWxsKHBhZ2UpIHx8DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4gUmVn YXJkcywNCj4+PiBQYW5rYWoNCj4+Pg0KPj4+DQo+Pj4gRnJvbTogS2lyaWxsIFRraGFpIDxr dGtoYWlAdmlydHVvenpvLmNvbT4NCj4+PiBTZW50OiAxNCBNYXJjaCAyMDE5IDE0OjU1OjM0 DQo+Pj4gVG86IFBhbmthaiBTdXJ5YXdhbnNoaTsgTWljaGFsIEhvY2tvDQo+Pj4gQ2M6IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IG1pbmNoYW5Aa2VybmVsLm9yZw0KPj4+IFN1 YmplY3Q6IFJlOiBSZTogW0V4dGVybmFsXSBSZTogdm1zY2FuOiBSZWNsYWltIHVuZXZpY3Rh YmxlIHBhZ2VzDQo+Pj4NCj4+Pg0KPj4+IE9uIDE0LjAzLjIwMTkgMTE6NTIsIFBhbmthaiBT dXJ5YXdhbnNoaSB3cm90ZToNCj4+Pj4NCj4+Pj4gSSBhbSB1c2luZyBrZXJuZWwgdmVyc2lv biA0LjE0LjY1IChvbiBBbmRyb2lkIHBpZSBbQVJNXSkuDQo+Pj4+DQo+Pj4+IE5vIGFkZGl0 aW9uYWwgcGF0Y2hlcyBhcHBsaWVkIG9uIHRvcCBvZiB2YW5pbGxhLihDb3JlIE1NKS4NCj4+ Pj4NCj4+Pj4gSWagIEkgY2hhbmdlIGluIHRoZSB2bXNjYW4uYyBhcyBiZWxvdyBwYXRjaCwg aXQgd2lsbCB3b3JrLg0KPj4+DQo+Pj4gU29ycnksIGJ1dCA0LjE0LjY1IGRvZXMgbm90IGhh dmUgYnJhY2VzIGFyb3VuZCB0cnlsb2NrX3BhZ2UoKSwNCj4+PiBsaWtlIGluIHlvdXIgcGF0 Y2ggYmVsb3cuDQo+Pj4NCj4+PiBTZWWgoKCgoCAgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9w dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3RhYmxlL2xpbnV4LmdpdC90cmVlL21tL3Ztc2Nh bi5jP2g9djQuMTQuNjUNCj4+Pg0KPj4+IFsuLi5dDQo+Pj4NCj4+Pj4+IGRpZmYgLS1naXQg YS9tbS92bXNjYW4uYyBiL21tL3Ztc2Nhbi5jDQo+Pj4+PiBpbmRleCBiZTU2ZTJlLi4yZTUx ZWRjIDEwMDY0NA0KPj4+Pj4gLS0tIGEvbW0vdm1zY2FuLmMNCj4+Pj4+ICsrKyBiL21tL3Zt c2Nhbi5jDQo+Pj4+PiBAQCAtOTkwLDE1ICs5OTAsMTcgQEAgc3RhdGljIHVuc2lnbmVkIGxv bmcgc2hyaW5rX3BhZ2VfbGlzdChzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlX2xpc3QsDQo+Pj4+ PiCgoKCgoKCgoKCgoKCgoKCgoCBwYWdlID0gbHJ1X3RvX3BhZ2UocGFnZV9saXN0KTsNCj4+ Pj4+IKCgoKCgoKCgoKCgoKCgoKCgIGxpc3RfZGVsKCZwYWdlLT5scnUpOw0KPj4+Pj4NCj4+ Pj4+IKCgoKCgoKCgoKCgoKCgoKAgaWYgKCF0cnlsb2NrX3BhZ2UocGFnZSkpIHsNCj4+Pj4+ IKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgZ290byBrZWVwOw0KPj4+Pj4goKCgoKCgoKCg oKCgoKCgoCB9DQo+Pj4NCj4+PiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqIGVJbmZvY2hpcHMgQnVzaW5lc3MgRGlzY2xhaW1lcjogVGhpcyBl LW1haWwgbWVzc2FnZSBhbmQgYWxsIGF0dGFjaG1lbnRzIHRyYW5zbWl0dGVkIHdpdGggaXQg YXJlICBpbnRlbmRlZKAgc29sZWx5IGZvciB0aGUgdXNlIG9mIHRoZSBhZGRyZXNzZWUgYW5k IG1heSBjb250YWluIGxlZ2FsbHkgcHJpdmlsZWdlZCBhbmQgY29uZmlkZW50aWFsIGluZm9y bWF0aW9uLiBJZiB0aGUgcmVhZGVyIG9mIHRoaXMgbWVzc2FnZSBpcyBub3QgdGhlIGludGVu ZGVkIHJlY2lwaWVudCwgb3IgYW4gZW1wbG95ZWUgb3IgYWdlbnQgcmVzcG9uc2libGUgZm9y IGRlbGl2ZXJpbmcgdGhpcyBtZXNzYWdlIHRvIHRoZSBpbnRlbmRlZCByZWNpcGllbnQsICB5 b3WgIGFyZSBoZXJlYnkgbm90aWZpZWQgdGhhdCBhbnkgZGlzc2VtaW5hdGlvbiwgZGlzdHJp YnV0aW9uLCBjb3B5aW5nLCBvciBvdGhlciB1c2Ugb2YgdGhpcyBtZXNzYWdlIG9yIGl0cyBh dHRhY2htZW50cyBpcyBzdHJpY3RseSBwcm9oaWJpdGVkLiBJZiB5b3UgaGF2ZSByZWNlaXZl ZCB0aGlzIG1lc3NhZ2UgaW4gZXJyb3IsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRlciBpbW1l ZGlhdGVseSBieSByZXBseWluZyB0byB0aGlzIG1lc3NhZ2UgYW5kICBwbGVhc2WgIGRlbGV0 ZSBpdCBmcm9tIHlvdXIgY29tcHV0ZXIuIEFueSB2aWV3cyBleHByZXNzZWQgaW4gdGhpcyBt ZXNzYWdlIGFyZSB0aG9zZSBvZiB0aGUgaW5kaXZpZHVhbCBzZW5kZXIgdW5sZXNzIG90aGVy d2lzZSBzdGF0ZWQuIENvbXBhbnkgaGFzIHRha2VuIGVub3VnaCBwcmVjYXV0aW9ucyB0byBw cmV2ZW50IHRoZSBzcHJlYWQgb2YgdmlydXNlcy4gSG93ZXZlciB0aGUgY29tcGFueSBhY2Nl cHRzIG5vIGxpYWJpbGl0eSBmb3IgYW55IGRhbWFnZSAgY2F1c2VkoCBieSBhbnkgdmlydXMg dHJhbnNtaXR0ZWQgYnkgdGhpcyBlbWFpbC4gKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKg0KPj4+DQo+Pg0KPj4goKCgoCANCj4+DQo+ICAgICAN Cj4gDQo=