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=-5.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS,UNPARSEABLE_RELAY,USER_AGENT_SANE_1 autolearn=no 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 2B857C433DF for ; Wed, 14 Oct 2020 16:57:44 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 5CA0521D7F for ; Wed, 14 Oct 2020 16:57:43 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5CA0521D7F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id D0BAD940008; Wed, 14 Oct 2020 12:57:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CBD51900002; Wed, 14 Oct 2020 12:57:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BD298940008; Wed, 14 Oct 2020 12:57:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0076.hostedemail.com [216.40.44.76]) by kanga.kvack.org (Postfix) with ESMTP id 9194A900002 for ; Wed, 14 Oct 2020 12:57:42 -0400 (EDT) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 377171EF1 for ; Wed, 14 Oct 2020 16:57:42 +0000 (UTC) X-FDA: 77371137564.18.horse29_4f14aec2720d Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin18.hostedemail.com (Postfix) with ESMTP id DEEEA101A5C23 for ; Wed, 14 Oct 2020 16:57:41 +0000 (UTC) X-HE-Tag: horse29_4f14aec2720d X-Filterd-Recvd-Size: 14581 Received: from out30-54.freemail.mail.aliyun.com (out30-54.freemail.mail.aliyun.com [115.124.30.54]) by imf13.hostedemail.com (Postfix) with ESMTP for ; Wed, 14 Oct 2020 16:57:39 +0000 (UTC) X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04357;MF=zhongjiang-ali@linux.alibaba.com;NM=1;PH=DS;RN=4;SR=0;TI=SMTPD_---0UC1YOVa_1602694651; Received: from L-X1DSLVDL-1420.local(mailfrom:zhongjiang-ali@linux.alibaba.com fp:SMTPD_---0UC1YOVa_1602694651) by smtp.aliyun-inc.com(127.0.0.1); Thu, 15 Oct 2020 00:57:32 +0800 Subject: Re: [PATCH] mm: Do not deactivate when the cgroup has plenty inactive page To: Michal Hocko Cc: hannes@cmpxchg.org, akpm@linux-foundation.org, linux-mm@kvack.org References: <1601034552-95831-1-git-send-email-zhongjiang-ali@linux.alibaba.com> <20200925120758.GF3389@dhcp22.suse.cz> <20200929160207.GK2277@dhcp22.suse.cz> <20201014144742.GH4440@dhcp22.suse.cz> From: zhong jiang Message-ID: <9212fc5a-35dd-1347-2b0e-ee73c58f1fd8@linux.alibaba.com> Date: Thu, 15 Oct 2020 00:57:31 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:82.0) Gecko/20100101 Thunderbird/82.0 MIME-Version: 1.0 In-Reply-To: <20201014144742.GH4440@dhcp22.suse.cz> Content-Type: multipart/mixed; boundary="------------3F391DE3F4654D150872E18A" Content-Language: en-US X-Bogosity: Ham, tests=bogofilter, spamicity=0.000001, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This is a multi-part message in MIME format. --------------3F391DE3F4654D150872E18A Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable On 2020/10/14 10:47 =E4=B8=8B=E5=8D=88, Michal Hocko wrote: > On Wed 14-10-20 22:21:58, zhong jiang wrote: >> On 2020/9/30 12:02 =E4=B8=8A=E5=8D=88, Michal Hocko wrote: >>> On Sun 27-09-20 10:39:22, zhong jiang wrote: >>>> On 2020/9/25 8:07 =E4=B8=8B=E5=8D=88, Michal Hocko wrote: >>>>> On Fri 25-09-20 19:49:12, zhongjiang-ali wrote: >>>>>> After appling the series patches(mm: fix page aging across multipl= e cgroups), >>>>>> cgroup memory reclaim strategy is based on reclaim root's inactive= :active >>>>>> ratio. if the target lruvec need to deactivate, its children cgrou= p also will >>>>>> deactivate. That will result in hot page to be reclaimed and other= cgroup's >>>>>> cold page will be left, which is not expected. >>>>>> >>>>>> The patch will not force deactivate when inactive_is_low is not tr= ue unless >>>>>> we has scanned the inactive list and memory is unable to reclaim. >>>>> Do you have any data to present? >>>> I write an testcase that cgroup B has a lot of hot pagecache and cgr= oup C >>>> is full of cold pagecache.=C2=A0 and >>>> >>>> their parent cgroup A will trigger the reclaim due of it's limit has= been >>>> breached. >>>> >>>> >>>> The testcase should assume that we should not reclaim the=C2=A0 hot = pagecache in >>>> cgroup B because C has >>>> >>>> plenty cold pagecache.=C2=A0=C2=A0 Unfortunately,=C2=A0 I can see cg= roup B hot pagecache >>>> has been decreased when >>>> >>>> cgroup A trigger the reclaim. >>> Thank you, this is more or less what've expected from your initial >>> description. An extended form would be preferable for the changelog t= o >>> make the setup more clear. But you still haven't quantified the effec= t. >>> It would be also good to describe what is the effect on the workload >>> described by 53138cea7f39 ("mm: vmscan: move file exhaustion detectio= n >>> to the node level"). A more extended description on the implementatio= n >>> would be nice as well. >> Hi,=C2=A0 Michal >> >> I'm sorry for lately reply due of a long vacation.=C2=A0 But that inde= ed breach >> the initial purpose. >> >> Do you think the patch make sense, or any benchmark can be recommended= to >> get some data. > To be honest I have really hard time to grasp what is the effect of thi= s > patch. Also memory reclaim tuning without any data doesn't really sound > convincing. Do you see any real workload that is benefiting from this > change or this is mostly a based on reading the code and a theoretical > concern? I write an testcase based on LTP to test the condition=C2=A0 and see acti= ve=20 page will be deactived but child cgroup still has a lot of cold memory, which is not unexpected. The testcase is attached. > Please understand that the existing balancing is quite complex and any > changes should be carfully analyzed and described. > --------------3F391DE3F4654D150872E18A Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="memcg_balance.c" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="memcg_balance.c" I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmlu Zy5oPgojaW5jbHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5jbHVkZSA8 c3lzL3R5cGVzLmg+CiNpbmNsdWRlIDxzeXMvc3lzaW5mby5oPgojaW5jbHVkZSA8c3lzL3dh aXQuaD4KCiNpbmNsdWRlICJ0c3RfdGVzdC5oIgoKI2RlZmluZSBIT1RfQ0FDSEUJKDEwMjQg KiAxMDI0ICogNTAwVUwpCiNkZWZpbmUgQ09MRF9DQUNIRQkoMTAyNCAqIDEwMjQgKiAxMDI0 ICogMlVMKQojZGVmaW5lIE1FTU9SWV9NQVgJKENPTERfQ0FDSEUgLyAyKQojZGVmaW5lIEhP VF9NQVgJCSgxMDI0ICogMTAyNCAqIDQwMFVMKQojZGVmaW5lIE1FTUNHX1JPT1QgCSIvc3lz L2ZzL2Nncm91cC9tZW1vcnkiCiNkZWZpbmUgTUVNQ0dfQ0hJTERfSE9UCQkibWVtY2dfdGVz dF8wIgojZGVmaW5lIE1FTUNHX0NISUxEX0NPTEQJIm1lbWNnX3Rlc3RfMSIKI2RlZmluZSB0 ZW1wZmlsZV9ob3QJIm1lbWNnX3Rlc3QuaG90IgojZGVmaW5lIHRlbXBmaWxlX2NvbGQJIm1l bWNnX3Rlc3QuY29sZCIKI2RlZmluZSBURVNUX1BBU1MJMAojZGVmaW5lIFRFU1RfRkFJTAkt MQoKc3RhdGljIGlubGluZSBpbnQgdmFsdWVzX2Nsb3NlKGxvbmcgYSwgbG9uZyBiLCBpbnQg ZXJyKQp7CiAgICByZXR1cm4gYWJzKGEgLSBiKSA8PSAoYSArIGIpIC8gMTAwICogZXJyOwp9 CgpzdGF0aWMgaW50IGNnX2NyZWF0ZShjaGFyICpwYXRoLCBjaGFyICpwYXJlbnQsIGNoYXIg Km1lbWNnKQp7CglzcHJpbnRmKHBhdGgsICIlcy8lcyIsIHBhcmVudCwgbWVtY2cpOwoKCXJl dHVybiBta2RpcihwYXRoLCAwNjQ0KTsKfQoKc3RhdGljIGludCBjZ193cml0ZShjaGFyICpt ZW1jZywgY2hhciAqY29udHJvbCwgY2hhciAqYnVmLCBzc2l6ZV90IGxlbikKewoJY2hhciBw YXRoW1BBVEhfTUFYXTsKCWludCBmZDsKCglzcHJpbnRmKHBhdGgsICIlcy8lcyIsIG1lbWNn LCBjb250cm9sKTsKCWZkID0gb3BlbihwYXRoLCBPX1dST05MWSk7CglpZiAoZmQgPCAwKQoJ CXJldHVybiBmZDsKCWxlbiA9IHdyaXRlKGZkLCBidWYsIGxlbik7CgljbG9zZShmZCk7CgoJ cmV0dXJuIGxlbjsKfQoKc3RhdGljIGludCBjZ19tb3ZlKGNoYXIgKmNncm91cCkKewoJY2hh ciBwaWRfbmFtZVsxMF0gPSB7MCx9OwoJY2hhciBidWZbUEFUSF9NQVhdOwoKCXN0cmNweShi dWYsIGNncm91cCk7CglzcHJpbnRmKHBpZF9uYW1lLCAiJWQiLCBnZXRwaWQoKSk7CgoJcmV0 dXJuIGNnX3dyaXRlKGRpcm5hbWUoYnVmKSwgImNncm91cC5wcm9jcyIsIHBpZF9uYW1lLCBz dHJsZW4ocGlkX25hbWUpKTsKfQoKc3RhdGljIGludCBjZ19kZXN0cm95KGNoYXIgKnBhcmVu dCwgY2hhciAqY2dyb3VwKQp7CgljaGFyIHBhdGhbUEFUSF9NQVhdOwoJaW50IHJldDsKCWlu dCBsb29wcyA9IDE7CgoJaWYgKCFjZ3JvdXApCgkJc3ByaW50ZihwYXRoLCAiJXMiLCBwYXJl bnQpOwoJZWxzZQoJCXNwcmludGYocGF0aCwgIiVzLyVzIiwgcGFyZW50LCBjZ3JvdXApOwpy ZXRyeToKCXJldCA9IHJtZGlyKHBhdGgpOwoJaWYgKHJldCAmJiBlcnJubyA9PSBFQlVTWSAm JiBsb29wcykgewoJCXJldCA9IGNnX21vdmUocGF0aCk7CgkJaWYgKHJldCA8IDApCgkJCWdv dG8gb3V0OwoJCWVsc2UgewoJCQlsb29wcy0tOwoJCQlnb3RvIHJldHJ5OwoJCX0KCX0gZWxz ZSBpZiAocmV0ICYmIGVycm5vID09IEVOT0VOVCkKCQlyZXQgPSAwOwpvdXQ6CglyZXR1cm4g cmV0Owp9CgpzdGF0aWMgaW50IG9wZW5fdGVtcF9maWxlKGNoYXIgKm5hbWUpCnsKICAgIHJl dHVybiBvcGVuKG5hbWUsIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX1RSVU5DLCBTX0lSV1hVKTsK fQoKc3RhdGljIHZvaWQgcmVtb3ZlX3RlbXBfZmlsZShjaGFyICpuYW1lKQp7CiAgICB1bmxp bmsobmFtZSk7Cn0KCnN0YXRpYyB2b2lkIGNsZWFudXAodm9pZCkKewoJY2hhciBwYXJlbnRb UEFUSF9NQVhdOwoKCWlmICghYWNjZXNzKHRlbXBmaWxlX2hvdCwgRl9PSykpCgkJcmVtb3Zl X3RlbXBfZmlsZSh0ZW1wZmlsZV9ob3QpOwoJaWYgKCFhY2Nlc3ModGVtcGZpbGVfY29sZCwg Rl9PSykpCgkJcmVtb3ZlX3RlbXBfZmlsZSh0ZW1wZmlsZV9jb2xkKTsKCglzcHJpbnRmKHBh cmVudCwgIiVzLyVzIiwgTUVNQ0dfUk9PVCwgIm1lbWNnX3Rlc3QiKTsKCWlmICghYWNjZXNz KHBhcmVudCwgRl9PSykpIHsKCQljZ19kZXN0cm95KHBhcmVudCwgTUVNQ0dfQ0hJTERfSE9U KTsKCQljZ19kZXN0cm95KHBhcmVudCwgTUVNQ0dfQ0hJTERfQ09MRCk7CgkJY2dfZGVzdHJv eShwYXJlbnQsIE5VTEwpOwoJfQp9CgpzdGF0aWMgaW50IGNnX3dyaXRlX21heChjaGFyICpt ZW1jZywgdW5zaWduZWQgbG9uZyBtYXgpCnsKCWNoYXIgYnVmWzEwMF07CgoJc3ByaW50Zihi dWYsICIlbGQiLCBtYXgpOwoJcmV0dXJuIGNnX3dyaXRlKG1lbWNnLCAibWVtb3J5LmxpbWl0 X2luX2J5dGVzIiwgYnVmLCAxMDApOwp9CgpzdGF0aWMgdm9pZCByZW1vdmVfdGVtcF9maWxl cyh2b2lkKQp7CglyZW1vdmVfdGVtcF9maWxlKHRlbXBmaWxlX2hvdCk7CglyZW1vdmVfdGVt cF9maWxlKHRlbXBmaWxlX2NvbGQpOwp9CgpzdGF0aWMgaW50IHJlYWRfZmlsZShpbnQgZmQs IHVuc2lnbmVkIGxvbmcgc2l6ZSwgY2hhciAqYnVmLCBpbnQgcGFnZXNpemUpCnsKCXVuc2ln bmVkIGxvbmcgaTsKCWludCBsZW4gPSAwOwoKCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7Cglm b3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSArPSBwYWdlc2l6ZSkgewoJCWxlbiA9IHJlYWQoZmQs IGJ1ZiwgcGFnZXNpemUpOwoJCWlmIChsZW4gPCAwKQoJCQlicmVhazsKCX0KCglyZXR1cm4g bGVuOwp9CgpzdGF0aWMgdm9pZCBtZW1jZ19hY3RpdmVfZmlsZShjaGFyICpwYXRoLCBpbnQg ZmQsIHVuc2lnbmVkIGxvbmcgc2l6ZSkKewoJY2hhciAqYnVmOwoJY2hhciAqdmFsdWU7Cglp bnQgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOwoKCXZhbHVlID0gbWFsbG9jKHBhZ2VzaXpl KTsKCWJ1ZiA9IG1tYXAoTlVMTCwgc2l6ZSwgUFJPVF9SRUFEfFBST1RfV1JJVEUsIE1BUF9T SEFSRUQsIGZkLCAwKTsKCW1lbXNldChidWYsICdBJywgc2l6ZSk7CgoJLyogdHJpZ2dlciBt ZW1vcnkgcmVjbGFpbSB0byBwdXRiYWNrIGluYWN0aXZlIHBhZ2UgdG8gYWN0aXZlIGxpc3Qg Ki8KCWNnX3dyaXRlX21heChwYXRoLCBIT1RfTUFYKTsKCW11bm1hcChidWYsIHNpemUpOwoJ LyogbWFya19wYWdlX2FjY2Vzc2VkIHdpbGwgbWFrZSB0aGUgcGFnZSB0byBiZSBhY3RpdmF0 ZWQgKi8KCXJlYWRfZmlsZShmZCwgc2l6ZSwgdmFsdWUsIHBhZ2VzaXplKTsKCWZyZWUodmFs dWUpOwp9CgpzdGF0aWMgaW50IHRvdWNoX3BhZ2VjYWNoZShpbnQgZmQsIHVuc2lnbmVkIGxv bmcgc2l6ZSkKewoJY2hhciAqYnVmOwoJaW50IHBhZ2VzaXplID0gZ2V0cGFnZXNpemUoKTsK CWludCBsZW4gPSAtMTsKCglidWYgPSBtYWxsb2MocGFnZXNpemUpOwoJaWYgKGZ0cnVuY2F0 ZShmZCwgc2l6ZSkpCgkJZ290byBvdXQ7CgoJbGVuID0gcmVhZF9maWxlKGZkLCBzaXplLCBi dWYsIHBhZ2VzaXplKTsKb3V0OgoJZnJlZShidWYpOwoJcmV0dXJuIGxlbjsKfQogCnN0YXRp YyBpbnQgY2dfcmVhZF9zdGF0KGNoYXIgKm1lbWNnLCBjaGFyICpjb250cm9sLCBzc2l6ZV90 ICp2YWx1ZSkKewoJY2hhciBwYXRoW1BBVEhfTUFYXTsKCWNoYXIgc3RyWzEwMjRdLCB0ZW1w WzIwXTsKCWludCBmb3VuZCA9IDA7CglGSUxFICpmcDsKCglzcHJpbnRmKHBhdGgsICIlcy8l cyIsIG1lbWNnLCAibWVtb3J5LnN0YXQiKTsKCWZwID0gZm9wZW4ocGF0aCwgInIiKTsKCWlm ICghZnApCgkJZ290byBvdXQ7CgoJd2hpbGUgKGZnZXRzKHN0ciwgMTAyNCwgZnApICE9IE5V TEwpIHsKCQlpZiAoIXN0cm5jbXAoc3RyLCBjb250cm9sLCBzdHJsZW4oY29udHJvbCkpKSB7 CgkJCXNzY2FuZihzdHIsICIlcyAlbGQiLCB0ZW1wLCB2YWx1ZSk7CgkJCWZvdW5kID0gMTsK CQkJYnJlYWs7CgkJfSBlbHNlCgkJCWNvbnRpbnVlOwoJfQoKCWZjbG9zZShmcCk7CglpZiAo Zm91bmQpCgkJcmV0dXJuIDA7Cm91dDoKCXJldHVybiAtMTsKfQoKc3RhdGljIGludCBjZ193 cml0ZV9jb25mKGNoYXIgKnBhdGgsIGNoYXIgKnBhcmVudCwgY2hhciAqbWVtY2cpCnsKCWNo YXIgcGlkWzEwXTsKCglpZiAoY2dfY3JlYXRlKHBhdGgsIHBhcmVudCwgbWVtY2cpKQoJCWdv dG8gb3V0OwoKCXNwcmludGYocGlkLCAiJWQiLCBnZXRwaWQoKSk7CgljZ193cml0ZShwYXRo LCAiY2dyb3VwLnByb2NzIiwgcGlkLCBzdHJsZW4ocGlkKSk7CgoJcmV0dXJuIDA7Cm91dDoK CXJldHVybiAtMTsKfQoKc3RhdGljIGludCBtZW1jZ19jcmVhdGVfY29sZChjaGFyICpwYXJl bnQsIGNoYXIgKm1lbWNnKQp7CglpbnQgZmQsIHJldDsKCWNoYXIgcGF0aFtQQVRIX01BWF0g PSB7MH07CglwaWRfdCBwaWQ7CgoJcGlkID0gZm9yaygpOwoJaWYgKHBpZCA+IDApIHsKCQlp ZiAod2FpdChOVUxMKSA8IDApCgkJCXJldHVybiAtMTsKCQllbHNlCgkJCXJldHVybiAwOwoJ fSBlbHNlIGlmIChwaWQgPT0gMCkgewoJCXJldCA9IGNnX3dyaXRlX2NvbmYocGF0aCwgcGFy ZW50LCBtZW1jZyk7CgkJaWYgKHJldCA8IDApCgkJCWdvdG8gb3V0OwoKCQlmZCA9IG9wZW5f dGVtcF9maWxlKHRlbXBmaWxlX2NvbGQpOwoJCWlmIChmZCA8IDApCgkJCWdvdG8gb3V0X2Rl c3Ryb3k7CgoJCWlmICh0b3VjaF9wYWdlY2FjaGUoZmQsIENPTERfQ0FDSEUpIDwgMCkKCQkJ Z290byBvdXRfZmQ7CgoJCWNsb3NlKGZkKTsKCQlleGl0KDApOwoJfSBlbHNlCgkJcmV0dXJu IC0xOwoKb3V0X2ZkOgoJY2xvc2UoZmQpOwoJcmVtb3ZlX3RlbXBfZmlsZSh0ZW1wZmlsZV9j b2xkKTsKb3V0X2Rlc3Ryb3k6CgljZ19kZXN0cm95KHBhdGgsIE5VTEwpOwpvdXQ6CglleGl0 KC0xKTsKfQoKc3RhdGljIGludCBtZW1jZ19jcmVhdGVfaG90KGNoYXIgKnBhcmVudCwgY2hh ciAqbWVtY2cpCnsKCWludCByZXQsIGZkOwoJY2hhciBwYXRoW1BBVEhfTUFYXTsKCXBpZF90 IHBpZDsKCglwaWQgPSBmb3JrKCk7CglpZiAocGlkID4gMCkgewoJCWlmICh3YWl0KE5VTEwp IDwgMCkKCQkJcmV0dXJuIC0xOwoJCWVsc2UKCQkJcmV0dXJuIDA7Cgl9IGVsc2UgaWYgKHBp ZCA9PSAwKSB7CgkJcmV0ID0gY2dfd3JpdGVfY29uZihwYXRoLCBwYXJlbnQsIG1lbWNnKTsK CQlpZiAocmV0IDwgMCkKCQkJZ290byBvdXQ7CgoJCWZkID0gb3Blbl90ZW1wX2ZpbGUodGVt cGZpbGVfaG90KTsKCQlpZiAoZmQgPCAwKQoJCQlnb3RvIG91dF9kZXN0cm95OwoKCQlpZiAo dG91Y2hfcGFnZWNhY2hlKGZkLCBIT1RfQ0FDSEUpIDwgMCkKCQkJZ290byBvdXRfZmQ7CgkJ bWVtY2dfYWN0aXZlX2ZpbGUocGF0aCwgZmQsIEhPVF9DQUNIRSk7CgoJCWNsb3NlKGZkKTsK CQlleGl0KDApOwoJfSBlbHNlCgkJcmV0dXJuIC0xOwoKb3V0X2ZkOgoJY2xvc2UoZmQpOwoJ cmVtb3ZlX3RlbXBfZmlsZSh0ZW1wZmlsZV9ob3QpOwpvdXRfZGVzdHJveToKCWNnX2Rlc3Ry b3kocGF0aCwgTlVMTCk7Cm91dDoKCWV4aXQoLTEpOwp9CgpzdGF0aWMgdm9pZCBtZW1jZ19n ZXRfYWN0aXZlX3BhZ2VzKGNoYXIgKnBhcmVudCwgY2hhciAqbWVtY2csIGxvbmcgKmFjdGl2 ZSkKewoJY2hhciBwYXRoW1BBVEhfTUFYXTsKCglzcHJpbnRmKHBhdGgsICIlcy8lcyIsIHBh cmVudCwgbWVtY2cpOwoJY2dfcmVhZF9zdGF0KHBhdGgsICJhY3RpdmVfZmlsZSIsIGFjdGl2 ZSk7Cn0KCnN0YXRpYyBpbnQgbWVtY2dfbWVhc3VyZV9jb21wYXJlKGNoYXIgKnBhcmVudCwg Y2hhciAqbWVtY2csIHNzaXplX3Qgc2l6ZSkKewoJbG9uZyBhY3RpdmU7CgoJbWVtY2dfZ2V0 X2FjdGl2ZV9wYWdlcyhwYXJlbnQsIG1lbWNnLCAmYWN0aXZlKTsKCWlmICh2YWx1ZXNfY2xv c2UoYWN0aXZlLCBzaXplLCAzKSkKCQlyZXR1cm4gMDsKCWVsc2UKCQlyZXR1cm4gLTE7Cn0K CnN0YXRpYyB2b2lkIG1lbWNnX2JhbGFuY2VfcnVuKHZvaWQpCnsKCWNoYXIgcGFyZW50W1BB VEhfTUFYXTsKCWludCByZXQ7Cglsb25nIGhvdF9hY3RpdmU7CgoJaWYgKGFjY2VzcyhNRU1D R19ST09ULCBGX09LKSkKCQl0c3RfYnJrKFRDT05GLCAibWVtb3J5IGhhcyBub3QgYmVlbiBt b3VudGVkIik7CgoJcmV0ID0gY2dfd3JpdGVfY29uZihwYXJlbnQsIE1FTUNHX1JPT1QsICJt ZW1jZ190ZXN0Iik7CglpZiAocmV0KQoJCWdvdG8gb3V0OwoKCXJldCA9IG1lbWNnX2NyZWF0 ZV9ob3QocGFyZW50LCBNRU1DR19DSElMRF9IT1QpOwoJaWYgKHJldCkKCQlnb3RvIG91dF9w YXJlbnQ7CgoJbWVtY2dfZ2V0X2FjdGl2ZV9wYWdlcyhwYXJlbnQsIE1FTUNHX0NISUxEX0hP VCwgJmhvdF9hY3RpdmUpOwoJcmV0ID0gbWVtY2dfY3JlYXRlX2NvbGQocGFyZW50LCBNRU1D R19DSElMRF9DT0xEKTsKCWlmIChyZXQpCgkJZ290byBvdXRfY2hpbGRfaG90OwoKCS8qIHNl dCBwYXJlbnQgbWVtY2cncyBsaW1pdF9pbl9ieXRlcyB0byB0cmlnZ2VyIG1lbW9yeSByZWNs YWltLiAqLwoJcmV0ID0gY2dfd3JpdGVfbWF4KHBhcmVudCwgTUVNT1JZX01BWCk7CglpZiAo cmV0IDwgMCkKCQlnb3RvIG91dF9wYXJlbnQ7CgoJLyogQXNzdW1lIHRoYXQgd2Ugc2hvdWxk IG5vdCBsZXNzIHRoYXQgdGhlIHNwZWNpZmllZCB2YWx1ZSB3aXRoaW4gYSBjZXJ0YWluIGRl dmlhdGlvbiAqLwoJcmV0ID0gbWVtY2dfbWVhc3VyZV9jb21wYXJlKHBhcmVudCwgTUVNQ0df Q0hJTERfSE9ULCBob3RfYWN0aXZlKTsKCWlmIChyZXQpCgkJZ290byBvdXRfY2hpbGRfY29s ZDsKCglyZW1vdmVfdGVtcF9maWxlcygpOwoKb3V0X2NoaWxkX2NvbGQ6CgljZ19kZXN0cm95 KHBhcmVudCwgTUVNQ0dfQ0hJTERfQ09MRCk7Cm91dF9jaGlsZF9ob3Q6CgljZ19kZXN0cm95 KHBhcmVudCwgTUVNQ0dfQ0hJTERfSE9UKTsKb3V0X3BhcmVudDoKCWNnX2Rlc3Ryb3kocGFy ZW50LCBOVUxMKTsKb3V0OgoJaWYgKHJldCA9PSBURVNUX0ZBSUwpCgkJdHN0X3JlcyhURkFJ TCwgIm1lbWNnIGJhbGFuY2UiKTsKCWVsc2UKCQl0c3RfcmVzKFRQQVNTLCAibWVtY2cgYmFs YW5jZSIpOwp9CgpzdGF0aWMgc3RydWN0IHRzdF90ZXN0IHRlc3QgPSB7CgkudGVzdF9hbGwg PSBtZW1jZ19iYWxhbmNlX3J1biwKCS5taW5fa3ZlciA9ICI0LjE5IiwKCS5uZWVkc19yb290 ID0gMSwKCS5jbGVhbnVwID0gY2xlYW51cCwKCS50aW1lb3V0ID0gMzYwMCwKfTsK --------------3F391DE3F4654D150872E18A--