From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chao Yu Subject: Re: [PATCH V2 2/2 RESEND] f2fs: read contiguous sit entry pages by merging for mount performance Date: Thu, 21 Nov 2013 11:18:39 +0800 Message-ID: <000001cee668$872ec6a0$958c53e0$@samsung.com> References: <001d01cee5bc$779c2fe0$66d48fa0$@samsung.com> <1384997517.26319.60.camel@kjgkr> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-2.v43.ch3.sourceforge.com ([172.29.43.192] helo=mx.sourceforge.net) by sfs-ml-1.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1VjKoB-0006xy-ET for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 03:19:59 +0000 Received: from mailout3.samsung.com ([203.254.224.33]) by sog-mx-2.v43.ch3.sourceforge.com with esmtp (Exim 4.76) id 1VjKo8-00056b-SK for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 03:19:59 +0000 Received: from epcpsbgm1.samsung.com (epcpsbgm1 [203.254.230.26]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MWL0076OFX02L20@mailout3.samsung.com> for linux-f2fs-devel@lists.sourceforge.net; Thu, 21 Nov 2013 12:19:50 +0900 (KST) In-reply-to: <1384997517.26319.60.camel@kjgkr> Content-language: zh-cn List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: jaegeuk.kim@samsung.com Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net SGksCgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogSmFlZ2V1ayBLaW0gW21h aWx0bzpqYWVnZXVrLmtpbUBzYW1zdW5nLmNvbV0KPiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIg MjEsIDIwMTMgOTozMiBBTQo+IFRvOiBDaGFvIFl1Cj4gQ2M6IGxpbnV4LWZzZGV2ZWxAdmdlci5r ZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1mMmZzLWRldmVs QGxpc3RzLnNvdXJjZWZvcmdlLm5ldDsg6LCt5aedCj4gU3ViamVjdDogUmU6IFtmMmZzLWRldl0g W1BBVENIIFYyIDIvMiBSRVNFTkRdIGYyZnM6IHJlYWQgY29udGlndW91cyBzaXQgZW50cnkgcGFn ZXMgYnkgbWVyZ2luZyBmb3IgbW91bnQgcGVyZm9ybWFuY2UKPiAKPiBIaSwKPiAKPiBJdCBzZWVt cyB0aGF0IHJhX3NpdF9wYWdlcygpIGlzIHRvbyB0aWdodGx5IGNvdXBsZWQgd2l0aAo+IGJ1aWxk X3NpdF9lbnRyaWVzKCkuCgpUaGlzIGNvZGUgY291bGQgYmUgaW1wcm92ZWQuCgo+IElzIHRoZXJl IGFub3RoZXIgd2F5IG5vdCB0byB1c2UgKmlzX29yZGVyPwoKUHJldmlvdXNseSB0aGUgY29kZSBp cyBsaWtlIHRoaXM6CiAtYnVpbGRfc2l0X2VudHJpZXMoKQogbmV4dF9zZXRwOgoJZm9yKHN0YXJ0 ID0gMDsgc3RhcnQgPCBUT1RBTF9TRUdTKHNiaSk7IHN0YXJ0KyspCgkJLypzdGVwIzEgcmVhZGFo ZWFkIGFsbCBzaXQgZW50cmllcyBibG9ja3MqLwoJCQlpZihzdGFydCAlIFNJVF9FTlRSWV9QRVJf QkxPQ0sgPT0gMCkgewoJCQkJYmxrX2FkZHIgPSBjdXJyZW50X3NpdF9hZGRyKHNiaSwgc3RhcnQp OwoJCQkJLyogZ3JhYiBhbmQgc3VibWl0X3JlYWRfcGFnZSAqLwoJCQl9CgkJCWlmKHN0YXJ0ID09 IFRPVEFMX1NFR1Moc2JpKSAtIDEpCgkJCQlmMmZzX3N1Ym1pdF9yZWFkX2JpbygpOwoJCQljb250 aW51ZTsKCQkvKnN0ZXAjMiBmaWxsIHNpdCBlbnRyaWVzIGluZm8qLwoJCS8qc3RlcCMzIGNvdmVy IHNpdCBlbnRyaWVzIHdpdGggam91cm5hbCovCgpCdXQgSSB0aGluayBpdHMgd2Vha25lc3MgaXMg dGhhdCBpdCB3aWxsIGNvc3QgbG90cyBvZiBtZW1vcnkgdG8gcmVhZCAKYWhlYWQgYWxsIHNpdCBl bnRyeSBwYWdlcyB3aGVuIGYyZnMgbW91bnQsIGFuZCBhbHNvIGl0J3Mgc2VyaW91cyB3YXN0ZSAK dGhhdCB3ZSByZWFkIHRoZW0gYWdhaW4gYWZ0ZXIgdGhlc2UgcGFnZXMgYXJlIHJlbGVhc2VkIGJ5 IFZNIHdoZW4gCm91dCBvZiBtZW1vcnkuCgo+IAo+IFRoZSByYV9zaXRfcGFnZXMoKSB0cmllcyB0 byByZWFkIGNvbnNlY3V0aXZlIHNpdCBwYWdlcyBhcyBtYW55IGFzCj4gcG9zc2libGUuCj4gU28g dGhlbiwgd2hhdCBhYm91dCBqdXN0IGNoZWNraW5nIHdoZXRoZXIgaXRzIGJsb2NrIGFkZHJlc3Mg aXMKPiBjb250aWd1b3VzIG9yIG5vdD8KPiAKPiBTb21ldGhpbmcgbGlrZSB0aGlzOgo+ICAtcmFf c2l0X3BhZ2VzKCkKPiAJYmxrbm8gPSBzdGFydDsKPiAJd2hpbGUgKGJsa25vIDwgc2l0X2ktPnNp dF9ibG9ja3MpIHsKPiAJCWJsa19hZGRyID0gY3VycmVudF9zaXRfYWRkcihzYmksIGJsa25vKTsK PiAJCWlmIChibGtubyAhPSBzdGFydCAmJiBwcmV2X2Jsa19hZGRyICsgMSAhPSBibGtfYWRkcikK PiAJCQlicmVhazsKPiAKPiAJCS8qIGdyYWIgYW5kIHN1Ym1pdF9yZWFkX3BhZ2UgKi8KPiAKPiAJ CXByZXZfYmxrX2FkZHIgPSBibGtfYWRkcjsKPiAJCWJsa25vKys7Cj4gCX0KCkFncmVlZCwgdGhp cyBtZXRob2QgY291bGQgcmVtb3ZlICpvcmRlci4KU2hvdWxkbid0IHdlIGFkZCBucnBhZ2VzIGZv ciByZWFkYWhlYWQgcG9saWN5IGFzIFZNPwoKPiAKPiBUaGFua3MsCj4gCj4gMjAxMy0xMS0yMCAo 7IiYKSwgMTQ6NDcgKzA4MDAsIENoYW8gWXU6Cj4gPiBQcmV2aW91c2x5IHdlIHJlYWQgc2l0IGVu dHJpZXMgcGFnZSBvbmUgYnkgb25lLCB0aGlzIG1ldGhvZCBsb3N0IHRoZSBjaGFuY2UKPiA+IG9m IHJlYWRpbmcgY29udGlndW91cyBwYWdlIHRvZ2V0aGVyLiBTbyB3ZSByZWFkIHBhZ2VzIGFzIGNv bnRpZ3VvdXMgYXMKPiA+IHBvc3NpYmxlIGZvciBiZXR0ZXIgbW91bnQgcGVyZm9ybWFuY2UuCj4g Pgo+ID4gdjEtLT52MjoKPiA+ICBvIG1lcmdlIGp1ZGdlbWVudHMvdXNlICdDb250aW51ZScgb3Ig J0JyZWFrJyBpbnN0ZWFkIG9mICdHb3RvJyBhcyBHdSBaaGVuZwo+ID4gICAgIHN1Z2dlc3RlZC4K PiA+ICBvIGFkZCBtYXJrX3BhZ2VfYWNjZXNzZWQoKSBiZWZvcmUgcmVsZWFzZSBwYWdlIHRvIGRl bGF5IFZNIHJlY2xhaW1pbmcgdGhlbS4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGFvIFl1IDxj aGFvMi55dUBzYW1zdW5nLmNvbT4KPiA+IC0tLQo+ID4gIGZzL2YyZnMvc2VnbWVudC5jIHwgIDEw OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ ID4gIGZzL2YyZnMvc2VnbWVudC5oIHwgICAgMiArCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCA4NCBp bnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZnMvZjJm cy9zZWdtZW50LmMgYi9mcy9mMmZzL3NlZ21lbnQuYwo+ID4gaW5kZXggODE0OWViYS4uNTJjODhk ZSAxMDA2NDQKPiA+IC0tLSBhL2ZzL2YyZnMvc2VnbWVudC5jCj4gPiArKysgYi9mcy9mMmZzL3Nl Z21lbnQuYwo+ID4gQEAgLTE0LDYgKzE0LDcgQEAKPiA+ICAjaW5jbHVkZSA8bGludXgvYmxrZGV2 Lmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4L3ByZWZldGNoLmg+Cj4gPiAgI2luY2x1ZGUgPGxpbnV4 L3ZtYWxsb2MuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvc3dhcC5oPgo+ID4KPiA+ICAjaW5jbHVk ZSAiZjJmcy5oIgo+ID4gICNpbmNsdWRlICJzZWdtZW50LmgiCj4gPiBAQCAtMTQ4OCw0MSArMTQ4 OSw5NiBAQCBzdGF0aWMgaW50IGJ1aWxkX2N1cnNlZyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmkp Cj4gPiAgCXJldHVybiByZXN0b3JlX2N1cnNlZ19zdW1tYXJpZXMoc2JpKTsKPiA+ICB9Cj4gPgo+ ID4gK3N0YXRpYyBpbnQgcmFfc2l0X3BhZ2VzKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgaW50 IHN0YXJ0LAo+ID4gKwkJCQkJaW50IG5ycGFnZXMsIGJvb2wgKmlzX29yZGVyKQo+IAo+IFdoeSBk byB5b3UgdXNlIG5ycGFnZXM/CgpucnBhZ2VzIHBvaW50IG91dCBleHBlY3RhdGlvbiBvZiBjYWxs ZXIsIGNhbGxlciBjbG91ZCBjb250cm9sIGhvdyBtYW55IApwYWdlcyB3YW50IHRvIHJlYWQgdGhp cyB0aW1lLiBJdCBzb2x2ZXMgdGhlIHdlYWtuZXNzIG9mIHByZXZpb3VzIGNvZWQgSSAKZ2l2ZSBh Ym92ZS4KCj4gCj4gPiArewo+ID4gKwlzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZyA9IHNi aS0+bWV0YV9pbm9kZS0+aV9tYXBwaW5nOwo+ID4gKwlzdHJ1Y3Qgc2l0X2luZm8gKnNpdF9pID0g U0lUX0koc2JpKTsKPiA+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gPiArCWJsb2NrX3QgYmxrX2Fk ZHI7Cj4gPiArCWludCBibGtubyA9IHN0YXJ0LCByZWFkY250ID0gMDsKPiA+ICsJaW50IHNpdF9i bGtfY250ID0gU0lUX0JMS19DTlQoc2JpKTsKPiA+ICsKPiA+ICsJZm9yICg7IGJsa25vIDwgc3Rh cnQgKyBucnBhZ2VzICYmIGJsa25vIDwgc2l0X2Jsa19jbnQ7IGJsa25vKyspIHsKPiA+ICsKPiA+ ICsJCWlmICgoIWYyZnNfdGVzdF9iaXQoYmxrbm8sIHNpdF9pLT5zaXRfYml0bWFwKSBeICEqaXNf b3JkZXIpKSB7Cj4gPiArCQkJKmlzX29yZGVyID0gISppc19vcmRlcjsKPiA+ICsJCQlicmVhazsK PiA+ICsJCX0KPiA+ICsKPiA+ICsJCWJsa19hZGRyID0gc2l0X2ktPnNpdF9iYXNlX2FkZHIgKyBi bGtubzsKPiA+ICsJCWlmICgqaXNfb3JkZXIpCj4gPiArCQkJYmxrX2FkZHIgKz0gc2l0X2ktPnNp dF9ibG9ja3M7Cj4gPiArcmVwZWF0Ogo+ID4gKwkJcGFnZSA9IGdyYWJfY2FjaGVfcGFnZShtYXBw aW5nLCBibGtfYWRkcik7Cj4gPiArCQlpZiAoIXBhZ2UpIHsKPiA+ICsJCQljb25kX3Jlc2NoZWQo KTsKPiA+ICsJCQlnb3RvIHJlcGVhdDsKPiA+ICsJCX0KPiA+ICsJCWlmIChQYWdlVXB0b2RhdGUo cGFnZSkpIHsKPiA+ICsJCQltYXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7Cj4gPiArCQkJZjJmc19w dXRfcGFnZShwYWdlLCAxKTsKPiA+ICsJCQlyZWFkY250Kys7Cj4gPiArCQkJY29udGludWU7Cj4g PiArCQl9Cj4gPiArCj4gPiArCQlzdWJtaXRfcmVhZF9wYWdlKHNiaSwgcGFnZSwgYmxrX2FkZHIs IFJFQURfU1lOQyk7Cj4gPiArCj4gPiArCQltYXJrX3BhZ2VfYWNjZXNzZWQocGFnZSk7Cj4gPiAr CQlmMmZzX3B1dF9wYWdlKHBhZ2UsIDApOwo+ID4gKwkJcmVhZGNudCsrOwo+ID4gKwl9Cj4gPiAr Cj4gPiArCWYyZnNfc3VibWl0X3JlYWRfYmlvKHNiaSwgUkVBRF9TWU5DKTsKPiA+ICsJcmV0dXJu IHJlYWRjbnQ7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB2b2lkIGJ1aWxkX3NpdF9lbnRyaWVz KHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBzaXRfaW5mbyAq c2l0X2kgPSBTSVRfSShzYmkpOwo+ID4gIAlzdHJ1Y3QgY3Vyc2VnX2luZm8gKmN1cnNlZyA9IENV UlNFR19JKHNiaSwgQ1VSU0VHX0NPTERfREFUQSk7Cj4gPiAgCXN0cnVjdCBmMmZzX3N1bW1hcnlf YmxvY2sgKnN1bSA9IGN1cnNlZy0+c3VtX2JsazsKPiA+IC0JdW5zaWduZWQgaW50IHN0YXJ0Owo+ ID4gLQo+ID4gLQlmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBUT1RBTF9TRUdTKHNiaSk7IHN0YXJ0 KyspIHsKPiA+IC0JCXN0cnVjdCBzZWdfZW50cnkgKnNlID0gJnNpdF9pLT5zZW50cmllc1tzdGFy dF07Cj4gPiAtCQlzdHJ1Y3QgZjJmc19zaXRfYmxvY2sgKnNpdF9ibGs7Cj4gPiAtCQlzdHJ1Y3Qg ZjJmc19zaXRfZW50cnkgc2l0Owo+ID4gLQkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gPiAtCQlpbnQg aTsKPiA+ICsJYm9vbCBpc19vcmRlciA9IGYyZnNfdGVzdF9iaXQoMCwgc2l0X2ktPnNpdF9iaXRt YXApID8gdHJ1ZSA6IGZhbHNlOwo+ID4gKwlpbnQgc2l0X2Jsa19jbnQgPSBTSVRfQkxLX0NOVChz YmkpOwo+ID4gKwl1bnNpZ25lZCBpbnQgaSwgc3RhcnQsIGVuZDsKPiA+ICsJdW5zaWduZWQgaW50 IHJlYWRlZCwgc3RhcnRfYmxrID0gMDsKPiA+Cj4gPiAtCQltdXRleF9sb2NrKCZjdXJzZWctPmN1 cnNlZ19tdXRleCk7Cj4gPiAtCQlmb3IgKGkgPSAwOyBpIDwgc2l0c19pbl9jdXJzdW0oc3VtKTsg aSsrKSB7Cj4gPiAtCQkJaWYgKGxlMzJfdG9fY3B1KHNlZ25vX2luX2pvdXJuYWwoc3VtLCBpKSkg PT0gc3RhcnQpIHsKPiA+IC0JCQkJc2l0ID0gc2l0X2luX2pvdXJuYWwoc3VtLCBpKTsKPiA+IC0J CQkJbXV0ZXhfdW5sb2NrKCZjdXJzZWctPmN1cnNlZ19tdXRleCk7Cj4gPiAtCQkJCWdvdG8gZ290 X2l0Owo+ID4gKwlkbyB7Cj4gPiArCQlyZWFkZWQgPSByYV9zaXRfcGFnZXMoc2JpLCBzdGFydF9i bGssIHNpdF9ibGtfY250LCAmaXNfb3JkZXIpOwo+ID4gKwo+ID4gKwkJc3RhcnQgPSBzdGFydF9i bGsgKiBzaXRfaS0+c2VudHNfcGVyX2Jsb2NrOwo+ID4gKwkJZW5kID0gKHN0YXJ0X2JsayArIHJl YWRlZCkgKiBzaXRfaS0+c2VudHNfcGVyX2Jsb2NrOwo+ID4gKwo+ID4gKwkJZm9yICg7IHN0YXJ0 IDwgZW5kICYmIHN0YXJ0IDwgVE9UQUxfU0VHUyhzYmkpOyBzdGFydCsrKSB7Cj4gPiArCQkJc3Ry dWN0IHNlZ19lbnRyeSAqc2UgPSAmc2l0X2ktPnNlbnRyaWVzW3N0YXJ0XTsKPiA+ICsJCQlzdHJ1 Y3QgZjJmc19zaXRfYmxvY2sgKnNpdF9ibGs7Cj4gPiArCQkJc3RydWN0IGYyZnNfc2l0X2VudHJ5 IHNpdDsKPiA+ICsJCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiA+ICsKPiA+ICsJCQltdXRleF9sb2Nr KCZjdXJzZWctPmN1cnNlZ19tdXRleCk7Cj4gPiArCQkJZm9yIChpID0gMDsgaSA8IHNpdHNfaW5f Y3Vyc3VtKHN1bSk7IGkrKykgewo+ID4gKwkJCQlpZiAobGUzMl90b19jcHUoc2Vnbm9faW5fam91 cm5hbChzdW0sIGkpKSA9PSBzdGFydCkgewo+ID4gKwkJCQkJc2l0ID0gc2l0X2luX2pvdXJuYWwo c3VtLCBpKTsKPiA+ICsJCQkJCW11dGV4X3VubG9jaygmY3Vyc2VnLT5jdXJzZWdfbXV0ZXgpOwo+ ID4gKwkJCQkJZ290byBnb3RfaXQ7Cj4gPiArCQkJCX0KPiA+ICAJCQl9Cj4gPiAtCQl9Cj4gPiAt CQltdXRleF91bmxvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4KTsKPiA+IC0JCXBhZ2UgPSBnZXRf Y3VycmVudF9zaXRfcGFnZShzYmksIHN0YXJ0KTsKPiA+IC0JCXNpdF9ibGsgPSAoc3RydWN0IGYy ZnNfc2l0X2Jsb2NrICopcGFnZV9hZGRyZXNzKHBhZ2UpOwo+ID4gLQkJc2l0ID0gc2l0X2Jsay0+ ZW50cmllc1tTSVRfRU5UUllfT0ZGU0VUKHNpdF9pLCBzdGFydCldOwo+ID4gLQkJZjJmc19wdXRf cGFnZShwYWdlLCAxKTsKPiA+ICsJCQltdXRleF91bmxvY2soJmN1cnNlZy0+Y3Vyc2VnX211dGV4 KTsKPiA+ICsKPiA+ICsJCQlwYWdlID0gZ2V0X2N1cnJlbnRfc2l0X3BhZ2Uoc2JpLCBzdGFydCk7 Cj4gPiArCQkJc2l0X2JsayA9IChzdHJ1Y3QgZjJmc19zaXRfYmxvY2sgKilwYWdlX2FkZHJlc3Mo cGFnZSk7Cj4gPiArCQkJc2l0ID0gc2l0X2Jsay0+ZW50cmllc1tTSVRfRU5UUllfT0ZGU0VUKHNp dF9pLCBzdGFydCldOwo+ID4gKwkJCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4gPiAgZ290X2l0 Ogo+ID4gLQkJY2hlY2tfYmxvY2tfY291bnQoc2JpLCBzdGFydCwgJnNpdCk7Cj4gPiAtCQlzZWdf aW5mb19mcm9tX3Jhd19zaXQoc2UsICZzaXQpOwo+ID4gLQkJaWYgKHNiaS0+c2Vnc19wZXJfc2Vj ID4gMSkgewo+ID4gLQkJCXN0cnVjdCBzZWNfZW50cnkgKmUgPSBnZXRfc2VjX2VudHJ5KHNiaSwg c3RhcnQpOwo+ID4gLQkJCWUtPnZhbGlkX2Jsb2NrcyArPSBzZS0+dmFsaWRfYmxvY2tzOwo+ID4g KwkJCWNoZWNrX2Jsb2NrX2NvdW50KHNiaSwgc3RhcnQsICZzaXQpOwo+ID4gKwkJCXNlZ19pbmZv X2Zyb21fcmF3X3NpdChzZSwgJnNpdCk7Cj4gPiArCQkJaWYgKHNiaS0+c2Vnc19wZXJfc2VjID4g MSkgewo+ID4gKwkJCQlzdHJ1Y3Qgc2VjX2VudHJ5ICplID0gZ2V0X3NlY19lbnRyeShzYmksIHN0 YXJ0KTsKPiA+ICsJCQkJZS0+dmFsaWRfYmxvY2tzICs9IHNlLT52YWxpZF9ibG9ja3M7Cj4gPiAr CQkJfQo+ID4gIAkJfQo+ID4gLQl9Cj4gPiArCQlzdGFydF9ibGsgKz0gcmVhZGVkOwo+ID4gKwl9 IHdoaWxlIChzdGFydF9ibGsgPCBzaXRfYmxrX2NudCk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMg dm9pZCBpbml0X2ZyZWVfc2VnbWFwKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiA+IGRpZmYg LS1naXQgYS9mcy9mMmZzL3NlZ21lbnQuaCBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBpbmRleCAy NjlmNjkwLi5hZDViOWYxIDEwMDY0NAo+ID4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiA+ICsr KyBiL2ZzL2YyZnMvc2VnbWVudC5oCj4gPiBAQCAtODMsNiArODMsOCBAQAo+ID4gIAkoc2Vnbm8g LyBTSVRfRU5UUllfUEVSX0JMT0NLKQo+ID4gICNkZWZpbmUJU1RBUlRfU0VHTk8oc2l0X2ksIHNl Z25vKQkJXAo+ID4gIAkoU0lUX0JMT0NLX09GRlNFVChzaXRfaSwgc2Vnbm8pICogU0lUX0VOVFJZ X1BFUl9CTE9DSykKPiA+ICsjZGVmaW5lIFNJVF9CTEtfQ05UKHNiaSkJCQlcCj4gPiArCSgoVE9U QUxfU0VHUyhzYmkpICsgU0lUX0VOVFJZX1BFUl9CTE9DSyAtIDEpIC8gU0lUX0VOVFJZX1BFUl9C TE9DSykKPiA+ICAjZGVmaW5lIGYyZnNfYml0bWFwX3NpemUobnIpCQkJXAo+ID4gIAkoQklUU19U T19MT05HUyhucikgKiBzaXplb2YodW5zaWduZWQgbG9uZykpCj4gPiAgI2RlZmluZSBUT1RBTF9T RUdTKHNiaSkJKFNNX0koc2JpKS0+bWFpbl9zZWdtZW50cykKPiAKPiAtLQo+IEphZWdldWsgS2lt Cj4gU2Ftc3VuZwoKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpTaGFwZSB0aGUgTW9iaWxlIEV4cGVy aWVuY2U6IEZyZWUgU3Vic2NyaXB0aW9uClNvZnR3YXJlIGV4cGVydHMgYW5kIGRldmVsb3BlcnM6 IEJlIGF0IHRoZSBmb3JlZnJvbnQgb2YgdGVjaCBpbm5vdmF0aW9uLgpJbnRlbChSKSBTb2Z0d2Fy ZSBBZHJlbmFsaW5lIGRlbGl2ZXJzIHN0cmF0ZWdpYyBpbnNpZ2h0IGFuZCBnYW1lLWNoYW5naW5n IApjb252ZXJzYXRpb25zIHRoYXQgc2hhcGUgdGhlIHJhcGlkbHkgZXZvbHZpbmcgbW9iaWxlIGxh bmRzY2FwZS4gU2lnbiB1cCBub3cuIApodHRwOi8vcHViYWRzLmcuZG91YmxlY2xpY2submV0L2dh bXBhZC9jbGs/aWQ9NjM0MzEzMTEmaXU9LzQxNDAvb3N0Zy5jbGt0cmsKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtZjJmcy1kZXZlbCBtYWlsaW5n IGxpc3QKTGludXgtZjJmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKaHR0cHM6Ly9saXN0 cy5zb3VyY2Vmb3JnZS5uZXQvbGlzdHMvbGlzdGluZm8vbGludXgtZjJmcy1kZXZlbAo=