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=-11.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 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 BFAE5C433E2 for ; Wed, 16 Sep 2020 02:17:00 +0000 (UTC) Received: from ml01.01.org (ml01.01.org [198.145.21.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 468C521D1B for ; Wed, 16 Sep 2020 02:17:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 468C521D1B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=cn.fujitsu.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-nvdimm-bounces@lists.01.org Received: from ml01.vlan13.01.org (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id CD14213DB53EB; Tue, 15 Sep 2020 19:16:59 -0700 (PDT) Received-SPF: None (mailfrom) identity=mailfrom; client-ip=183.91.158.132; helo=heian.cn.fujitsu.com; envelope-from=ruansy.fnst@cn.fujitsu.com; receiver= Received: from heian.cn.fujitsu.com (mail.cn.fujitsu.com [183.91.158.132]) by ml01.01.org (Postfix) with ESMTP id 0382413B2EA0B for ; Tue, 15 Sep 2020 19:16:56 -0700 (PDT) X-IronPort-AV: E=Sophos;i="5.76,430,1592841600"; d="scan'208";a="99286190" Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 16 Sep 2020 10:16:51 +0800 Received: from G08CNEXMBPEKD05.g08.fujitsu.local (unknown [10.167.33.204]) by cn.fujitsu.com (Postfix) with ESMTP id 5F18648990F1; Wed, 16 Sep 2020 10:16:48 +0800 (CST) Received: from irides.mr (10.167.225.141) by G08CNEXMBPEKD05.g08.fujitsu.local (10.167.33.204) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Sep 2020 10:16:46 +0800 Subject: Re: [RFC PATCH 1/4] fs: introduce ->storage_lost() for memory-failure To: "Darrick J. Wong" References: <20200915101311.144269-1-ruansy.fnst@cn.fujitsu.com> <20200915101311.144269-2-ruansy.fnst@cn.fujitsu.com> <20200915161606.GD7955@magnolia> From: Ruan Shiyang Message-ID: Date: Wed, 16 Sep 2020 10:15:36 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 MIME-Version: 1.0 In-Reply-To: <20200915161606.GD7955@magnolia> Content-Language: en-US X-Originating-IP: [10.167.225.141] X-ClientProxiedBy: G08CNEXCHPEKD06.g08.fujitsu.local (10.167.33.205) To G08CNEXMBPEKD05.g08.fujitsu.local (10.167.33.204) X-yoursite-MailScanner-ID: 5F18648990F1.A96BC X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: ruansy.fnst@cn.fujitsu.com Message-ID-Hash: GNNGA7IHCCE342DK5VLTHSXUOPZK6N2F X-Message-ID-Hash: GNNGA7IHCCE342DK5VLTHSXUOPZK6N2F X-MailFrom: ruansy.fnst@cn.fujitsu.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header CC: linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-nvdimm@lists.01.org, linux-mm@kvack.org, linux-fsdevel@vger.kernel.org, david@fromorbit.com, hch@lst.de, rgoldwyn@suse.de, qi.fuli@fujitsu.com, y-goto@fujitsu.com X-Mailman-Version: 3.1.1 Precedence: list List-Id: "Linux-nvdimm developer list." Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: Content-Type: text/plain; charset="utf-8"; format="flowed" Content-Transfer-Encoding: base64 DQoNCk9uIDIwMjAvOS8xNiDkuIrljYgxMjoxNiwgRGFycmljayBKLiBXb25nIHdyb3RlOg0KPiBP biBUdWUsIFNlcCAxNSwgMjAyMCBhdCAwNjoxMzowOFBNICswODAwLCBTaGl5YW5nIFJ1YW4gd3Jv dGU6DQo+PiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaGFuZGxlIGVycm9ycyB3aGljaCBtYXkg Y2F1c2UgZGF0YSBsb3N0IGluDQo+PiBmaWxlc3lzdGVtLiAgU3VjaCBhcyBtZW1vcnktZmFpbHVy ZSBpbiBmc2RheCBtb2RlLg0KPj4NCj4+IEluIFhGUywgaXQgcmVxdWlyZXMgInJtYXBidCIgZmVh dHVyZSBpbiBvcmRlciB0byBxdWVyeSBmb3IgZmlsZXMgb3INCj4+IG1ldGFkYXRhIHdoaWNoIGFz c29jaWF0ZWQgdG8gdGhlIGVycm9yIGJsb2NrLiAgVGhlbiB3ZSBjb3VsZCBjYWxsIGZzDQo+PiBy ZWNvdmVyIGZ1bmN0aW9ucyB0byB0cnkgdG8gcmVwYWlyIHRoZSBkYW1hZ2VkIGRhdGEuKGRpZCBu b3QgaW1wbGVtZW50ZWQNCj4+IGluIHRoaXMgcGF0Y2gpDQo+Pg0KPj4gQWZ0ZXIgdGhhdCwgdGhl IG1lbW9yeS1mYWlsdXJlIGFsc28gbmVlZHMgdG8ga2lsbCBwcm9jZXNzZXMgd2hvIGFyZQ0KPj4g dXNpbmcgdGhvc2UgZmlsZXMuICBUaGUgc3RydWN0IG1mX3JlY292ZXJfY29udHJvbGxlciBpcyBj cmVhdGVkIHRvIHN0b3JlDQo+PiBuZWNlc3NhcnkgcGFyYW1ldGVycy4NCj4+DQo+PiBTaWduZWQt b2ZmLWJ5OiBTaGl5YW5nIFJ1YW4gPHJ1YW5zeS5mbnN0QGNuLmZ1aml0c3UuY29tPg0KPj4gLS0t DQo+PiAgIGZzL3hmcy94ZnNfc3VwZXIuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysNCj4+ICAgaW5jbHVkZS9saW51eC9mcy5oIHwgIDEgKw0KPj4g ICBpbmNsdWRlL2xpbnV4L21tLmggfCAgNiArKysrDQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgODcg aW5zZXJ0aW9ucygrKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9mcy94ZnMveGZzX3N1cGVyLmMgYi9m cy94ZnMveGZzX3N1cGVyLmMNCj4+IGluZGV4IDcxYWM2YzFjZGMzNi4uMTE4ZDljNWQ5ZTFlIDEw MDY0NA0KPj4gLS0tIGEvZnMveGZzL3hmc19zdXBlci5jDQo+PiArKysgYi9mcy94ZnMveGZzX3N1 cGVyLmMNCj4+IEBAIC0zNSw2ICszNSwxMCBAQA0KPj4gICAjaW5jbHVkZSAieGZzX3JlZmNvdW50 X2l0ZW0uaCINCj4+ICAgI2luY2x1ZGUgInhmc19ibWFwX2l0ZW0uaCINCj4+ICAgI2luY2x1ZGUg Inhmc19yZWZsaW5rLmgiDQo+PiArI2luY2x1ZGUgInhmc19hbGxvYy5oIg0KPj4gKyNpbmNsdWRl ICJ4ZnNfcm1hcC5oIg0KPj4gKyNpbmNsdWRlICJ4ZnNfcm1hcF9idHJlZS5oIg0KPj4gKyNpbmNs dWRlICJ4ZnNfYml0LmgiDQo+PiAgIA0KPj4gICAjaW5jbHVkZSA8bGludXgvbWFnaWMuaD4NCj4+ ICAgI2luY2x1ZGUgPGxpbnV4L2ZzX2NvbnRleHQuaD4NCj4+IEBAIC0xMTA0LDYgKzExMDgsODEg QEAgeGZzX2ZzX2ZyZWVfY2FjaGVkX29iamVjdHMoDQo+PiAgIAlyZXR1cm4geGZzX3JlY2xhaW1f aW5vZGVzX25yKFhGU19NKHNiKSwgc2MtPm5yX3RvX3NjYW4pOw0KPj4gICB9DQo+PiAgIA0KPj4g K3N0YXRpYyBpbnQNCj4+ICt4ZnNfc3RvcmFnZV9sb3N0X2hlbHBlcigNCj4+ICsJc3RydWN0IHhm c19idHJlZV9jdXIJCSpjdXIsDQo+PiArCXN0cnVjdCB4ZnNfcm1hcF9pcmVjCQkqcmVjLA0KPj4g Kwl2b2lkCQkJCSpwcml2KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHhmc19pbm9kZQkJKmlwOw0KPj4g KwlzdHJ1Y3QgbWZfcmVjb3Zlcl9jb250cm9sbGVyCSptZnJjID0gcHJpdjsNCj4+ICsJaW50CQkJ CXJjID0gMDsNCj4+ICsNCj4+ICsJaWYgKFhGU19STUFQX05PTl9JTk9ERV9PV05FUihyZWMtPnJt X293bmVyKSkgew0KPj4gKwkJLy8gVE9ETyBjaGVjayBhbmQgdHJ5IHRvIGZpeCBtZXRhZGF0YQ0K Pj4gKwl9IGVsc2Ugew0KPj4gKwkJLyoNCj4+ICsJCSAqIEdldCBmaWxlcyB0aGF0IGluY29yZSwg ZmlsdGVyIG91dCBvdGhlcnMgdGhhdCBhcmUgbm90IGluIHVzZS4NCj4+ICsJCSAqLw0KPj4gKwkJ eGZzX2lnZXQoY3VyLT5iY19tcCwgY3VyLT5iY190cCwgcmVjLT5ybV9vd25lciwgWEZTX0lHRVRf SU5DT1JFLA0KPj4gKwkJCSAwLCAmaXApOw0KPiANCj4gTWlzc2luZyByZXR1cm4gdmFsdWUgY2hl Y2sgaGVyZS4NCg0KWWVzLCBJIGlnbm9yZWQgaXQuICBNeSBmYXVsdC4NCg0KPiANCj4+ICsJCWlm ICghaXApDQo+PiArCQkJcmV0dXJuIDA7DQo+PiArCQlpZiAoIVZGU19JKGlwKS0+aV9tYXBwaW5n KQ0KPj4gKwkJCWdvdG8gb3V0Ow0KPj4gKw0KPj4gKwkJcmMgPSBtZnJjLT5yZWNvdmVyX2ZuKG1m cmMtPnBmbiwgbWZyYy0+ZmxhZ3MsDQo+PiArCQkJCSAgICAgIFZGU19JKGlwKS0+aV9tYXBwaW5n LCByZWMtPnJtX29mZnNldCk7DQo+PiArDQo+PiArCQkvLyBUT0RPIHRyeSB0byBmaXggZGF0YQ0K Pj4gK291dDoNCj4+ICsJCXhmc19pcmVsZShpcCk7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJu IHJjOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiAreGZzX2ZzX3N0b3JhZ2VfbG9z dCgNCj4+ICsJc3RydWN0IHN1cGVyX2Jsb2NrCSpzYiwNCj4+ICsJbG9mZl90CQkJb2Zmc2V0LA0K PiANCj4gb2Zmc2V0IGludG8gd2hpY2ggZGV2aWNlPyAgWEZTIHN1cHBvcnRzIHRocmVlLi4uDQo+ IA0KPiBJJ20gYWxzbyBhIGxpdHRsZSBzdXJwcmlzZWQgeW91IGRvbid0IHBhc3MgaW4gYSBsZW5n dGguDQo+IA0KPiBJIGd1ZXNzIHRoYXQgbWVhbnMgdGhpcyBmdW5jdGlvbiB3aWxsIGdldCBjYWxs ZWQgcmVwZWF0ZWRseSBmb3IgZXZlcnkNCj4gYnl0ZSBpbiB0aGUgcG9pc29uZWQgcmFuZ2U/DQoN ClRoZSBtZW1vcnktZmFpbHVyZSB3aWxsIHRyaWdnZXJlZCBvbiBvbmUgUEZOIGVhY2ggdGltZSwg c28gaXRzIGxlbmd0aCANCmNvdWxkIGJlIG9uZSBQQUdFX1NJWkUuICBCdXQgSSB0aGluayB5b3Ug YXJlIHJpZ2h0LCBpdCdzIGJldHRlciB0byB0ZWxsIA0KZmlsZXN5c3RlbSBob3cgbXVjaCByYW5n ZSBpcyBlZmZlY3RlZCBhbmQgbmVlZCB0byBiZSBmaXhlZC4gIEkgZGlkbid0IA0Ka25vdyBidXQg SSB0aGluayB0aGVyZSBtYXkgYmUgc29tZSBvdGhlciBjYXNlcyBiZXNpZGVzIG1lbW9yeS1mYWls dXJlLiANClNvIHRoZSBsZW5ndGggaXMgbmVjZXNzYXJ5Lg0KDQo+IA0KPj4gKwl2b2lkCQkJKnBy aXYpDQo+PiArew0KPj4gKwlzdHJ1Y3QgeGZzX21vdW50CSptcCA9IFhGU19NKHNiKTsNCj4+ICsJ c3RydWN0IHhmc190cmFucwkqdHAgPSBOVUxMOw0KPj4gKwlzdHJ1Y3QgeGZzX2J0cmVlX2N1cgkq Y3VyID0gTlVMTDsNCj4+ICsJc3RydWN0IHhmc19ybWFwX2lyZWMJcm1hcF9sb3csIHJtYXBfaGln aDsNCj4+ICsJc3RydWN0IHhmc19idWYJCSphZ2ZfYnAgPSBOVUxMOw0KPj4gKwl4ZnNfZnNibG9j a190CQlmc2JubyA9IFhGU19CX1RPX0ZTQihtcCwgb2Zmc2V0KTsNCj4+ICsJeGZzX2FnbnVtYmVy X3QJCWFnbm8gPSBYRlNfRlNCX1RPX0FHTk8obXAsIGZzYm5vKTsNCj4+ICsJeGZzX2FnYmxvY2tf dAkJYWdibm8gPSBYRlNfRlNCX1RPX0FHQk5PKG1wLCBmc2Jubyk7DQo+PiArCWludAkJCWVycm9y ID0gMDsNCj4+ICsNCj4+ICsJZXJyb3IgPSB4ZnNfdHJhbnNfYWxsb2NfZW1wdHkobXAsICZ0cCk7 DQo+PiArCWlmIChlcnJvcikNCj4+ICsJCXJldHVybiBlcnJvcjsNCj4+ICsNCj4+ICsJZXJyb3Ig PSB4ZnNfYWxsb2NfcmVhZF9hZ2YobXAsIHRwLCBhZ25vLCAwLCAmYWdmX2JwKTsNCj4+ICsJaWYg KGVycm9yKQ0KPj4gKwkJcmV0dXJuIGVycm9yOw0KPj4gKw0KPj4gKwljdXIgPSB4ZnNfcm1hcGJ0 X2luaXRfY3Vyc29yKG1wLCB0cCwgYWdmX2JwLCBhZ25vKTsNCj4gDQo+IC4uLmFuZCB0aGlzIGlz IGRlZmluaXRlbHkgdGhlIHdyb25nIGNhbGwgc2VxdWVuY2UgaWYgdGhlIG1hbGZ1bmN0aW9uaW5n DQo+IGRldmljZSBpcyB0aGUgcmVhbHRpbWUgZGV2aWNlLiAgSWYgYSBkYXggcnQgZGV2aWNlIGRp ZXMsIHlvdSdsbCBiZQ0KPiBzaG9vdGluZyBkb3duIGZpbGVzIG9uIHRoZSBkYXRhIGRldmljZSwg d2hpY2ggd2lsbCBjYXVzZSBhbGwgc29ydHMgb2YNCj4gcHJvYmxlbXMuDQoNCkkgZGlkbid0IG5v dGljZSB0aGF0LiAgTGV0IG1lIHRoaW5rIGFib3V0IGl0Lg0KPiANCj4gUXVlc3Rpb246IFNob3Vs ZCBhbGwgdGhpcyBwb2lzb24gcmVjb3Zlcnkgc3R1ZmYgZ28gaW50byBhIG5ldyBmaWxlPw0KPiB4 ZnNfcG9pc29uLmM/ICBUaGVyZSdzIGFscmVhZHkgYSBsb3Qgb2YgY29kZSBpbiB4ZnNfc3VwZXIu Yy4NCg0KWWVzLCBpdCdzIGEgYml0IHRvbyBtdWNoLiAgSSdsbCBtb3ZlIHRoZW0gaW50byBhIG5l dyBmaWxlLg0KDQoNCi0tDQpUaGFua3MsDQpSdWFuIFNoaXlhbmcuDQo+IA0KPiAtLUQNCj4gDQo+ PiArDQo+PiArCS8qIENvbnN0cnVjdCBhIHJhbmdlIGZvciBybWFwIHF1ZXJ5ICovDQo+PiArCW1l bXNldCgmcm1hcF9sb3csIDAsIHNpemVvZihybWFwX2xvdykpOw0KPj4gKwltZW1zZXQoJnJtYXBf aGlnaCwgMHhGRiwgc2l6ZW9mKHJtYXBfaGlnaCkpOw0KPj4gKwlybWFwX2xvdy5ybV9zdGFydGJs b2NrID0gcm1hcF9oaWdoLnJtX3N0YXJ0YmxvY2sgPSBhZ2JubzsNCj4+ICsNCj4+ICsJZXJyb3Ig PSB4ZnNfcm1hcF9xdWVyeV9yYW5nZShjdXIsICZybWFwX2xvdywgJnJtYXBfaGlnaCwNCj4+ICsJ CQkJICAgICB4ZnNfc3RvcmFnZV9sb3N0X2hlbHBlciwgcHJpdik7DQo+PiArCWlmIChlcnJvciA9 PSAtRUNBTkNFTEVEKQ0KPj4gKwkJZXJyb3IgPSAwOw0KPj4gKw0KPj4gKwl4ZnNfYnRyZWVfZGVs X2N1cnNvcihjdXIsIGVycm9yKTsNCj4+ICsJeGZzX3RyYW5zX2JyZWxzZSh0cCwgYWdmX2JwKTsN Cj4+ICsJcmV0dXJuIGVycm9yOw0KPj4gK30NCj4+ICsNCj4+ICAgc3RhdGljIGNvbnN0IHN0cnVj dCBzdXBlcl9vcGVyYXRpb25zIHhmc19zdXBlcl9vcGVyYXRpb25zID0gew0KPj4gICAJLmFsbG9j X2lub2RlCQk9IHhmc19mc19hbGxvY19pbm9kZSwNCj4+ICAgCS5kZXN0cm95X2lub2RlCQk9IHhm c19mc19kZXN0cm95X2lub2RlLA0KPj4gQEAgLTExMTcsNiArMTE5Niw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB4ZnNfc3VwZXJfb3BlcmF0aW9ucyA9IHsNCj4+ICAg CS5zaG93X29wdGlvbnMJCT0geGZzX2ZzX3Nob3dfb3B0aW9ucywNCj4+ICAgCS5ucl9jYWNoZWRf b2JqZWN0cwk9IHhmc19mc19ucl9jYWNoZWRfb2JqZWN0cywNCj4+ICAgCS5mcmVlX2NhY2hlZF9v YmplY3RzCT0geGZzX2ZzX2ZyZWVfY2FjaGVkX29iamVjdHMsDQo+PiArCS5zdG9yYWdlX2xvc3QJ CT0geGZzX2ZzX3N0b3JhZ2VfbG9zdCwNCj4+ICAgfTsNCj4+ICAgDQo+PiAgIHN0YXRpYyBpbnQN Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgN Cj4+IGluZGV4IGUwMTllYTJmMTM0Ny4uYmQ5MDQ4NWNmZGM5IDEwMDY0NA0KPj4gLS0tIGEvaW5j bHVkZS9saW51eC9mcy5oDQo+PiArKysgYi9pbmNsdWRlL2xpbnV4L2ZzLmgNCj4+IEBAIC0xOTUx LDYgKzE5NTEsNyBAQCBzdHJ1Y3Qgc3VwZXJfb3BlcmF0aW9ucyB7DQo+PiAgIAkJCQkgIHN0cnVj dCBzaHJpbmtfY29udHJvbCAqKTsNCj4+ICAgCWxvbmcgKCpmcmVlX2NhY2hlZF9vYmplY3RzKShz dHJ1Y3Qgc3VwZXJfYmxvY2sgKiwNCj4+ICAgCQkJCSAgICBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wg Kik7DQo+PiArCWludCAoKnN0b3JhZ2VfbG9zdCkoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgbG9m Zl90IG9mZnNldCwgdm9pZCAqcHJpdik7DQo+PiAgIH07DQo+PiAgIA0KPj4gICAvKg0KPj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW0uaCBiL2luY2x1ZGUvbGludXgvbW0uaA0KPj4gaW5k ZXggMTk4M2UwOGY1OTA2Li4zZjBjMzZlMWJmM2QgMTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL2xp bnV4L21tLmgNCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvbW0uaA0KPj4gQEAgLTMwMDIsNiArMzAw MiwxMiBAQCBleHRlcm4gdm9pZCBzaGFrZV9wYWdlKHN0cnVjdCBwYWdlICpwLCBpbnQgYWNjZXNz KTsNCj4+ICAgZXh0ZXJuIGF0b21pY19sb25nX3QgbnVtX3BvaXNvbmVkX3BhZ2VzIF9fcmVhZF9t b3N0bHk7DQo+PiAgIGV4dGVybiBpbnQgc29mdF9vZmZsaW5lX3BhZ2UodW5zaWduZWQgbG9uZyBw Zm4sIGludCBmbGFncyk7DQo+PiAgIA0KPj4gK3N0cnVjdCBtZl9yZWNvdmVyX2NvbnRyb2xsZXIg ew0KPj4gKwlpbnQgKCpyZWNvdmVyX2ZuKSh1bnNpZ25lZCBsb25nIHBmbiwgaW50IGZsYWdzLA0K Pj4gKwkJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIHBnb2ZmX3QgaW5kZXgpOw0KPj4g Kwl1bnNpZ25lZCBsb25nIHBmbjsNCj4+ICsJaW50IGZsYWdzOw0KPj4gK307DQo+PiAgIA0KPj4g ICAvKg0KPj4gICAgKiBFcnJvciBoYW5kbGVycyBmb3IgdmFyaW91cyB0eXBlcyBvZiBwYWdlcy4N Cj4+IC0tIA0KPj4gMi4yOC4wDQo+Pg0KPj4NCj4+DQo+IA0KPiANCg0KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlz dCAtLSBsaW51eC1udmRpbW1AbGlzdHMuMDEub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1h aWwgdG8gbGludXgtbnZkaW1tLWxlYXZlQGxpc3RzLjAxLm9yZwo=