From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dggsgout12.his.huawei.com (dggsgout12.his.huawei.com [45.249.212.56]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48E582E11AC; Sat, 14 Jun 2025 06:39:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=45.249.212.56 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749883188; cv=none; b=LHuCY0yHckWR3msGHo9wF2lzYkK2Ip0dcv+BN5i2BWYovDnyGG0FIPeFAZ5ZJvLQBYr5gVNtO/SINLbR+r3QCccBHDYj3POikTdNlzgdKkwhN6qPdrhbi+XgDy2NAQ5V/60eo+Hcrw6LKM3NSvzrU8S7v/m2OrS8h7WG03ndi9Q= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749883188; c=relaxed/simple; bh=SCox8lr4gGRLh7STx7rHQzTr4Nx4TX7IMe6u/F4zl+c=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Content-Type: MIME-Version:Message-ID; b=NNT3cvZnYIfCeoqg7Eah3kIlUCrug03LQfKwPRQ1qdIQpMdeNCUnYwl2Cqpkmy8mNWLM9joplHDlkaEtYYAp2U/xp2w7cI8dolaOiulNyMDzMbzyyKnI6E31QoCgZDrG6Zzdg/pD4uT2Ai9J67gS0eUMbev5zBV/WnMo37sv+gk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com; spf=pass smtp.mailfrom=huaweicloud.com; arc=none smtp.client-ip=45.249.212.56 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=huaweicloud.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huaweicloud.com Received: from mail.maildlp.com (unknown [172.19.93.142]) by dggsgout12.his.huawei.com (SkyGuard) with ESMTPS id 4bK67f5vGczKHN1v; Sat, 14 Jun 2025 14:39:42 +0800 (CST) Received: from mail02.huawei.com (unknown [10.116.40.128]) by mail.maildlp.com (Postfix) with ESMTP id 2AB8C1A0E9E; Sat, 14 Jun 2025 14:39:41 +0800 (CST) Received: from zhengqixing$huaweicloud.com ( [10.174.178.72] ) by ajax-webmail-APP4 (Coremail) ; Sat, 14 Jun 2025 14:39:41 +0800 (GMT+08:00) Date: Sat, 14 Jun 2025 14:39:41 +0800 (GMT+08:00) X-CM-HeaderCharset: UTF-8 From: zhengqixing@huaweicloud.com To: "Paul Menzel" Cc: song@kernel.org, yukuai3@huawei.com, linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, yi.zhang@huawei.com, yangerkun@huawei.com, zhengqixing@huawei.com Subject: Re: [PATCH] md/raid1,raid10: fix IO handle for REQ_NOWAIT X-Priority: 3 X-Mailer: Coremail Webmail Server Version 2024.1-cmXT5 build 20240919(7cc4060a) Copyright (c) 2002-2025 www.mailtech.cn mispb-afc14d85-da06-4a9c-b40d-9d3adbbd040a-huawei.com In-Reply-To: References: <20250612132141.358202-1-zhengqixing@huaweicloud.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; charset=UTF-8 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-ID: <1c8296f3.647.1976d2a57fc.Coremail.zhengqixing@huaweicloud.com> X-Coremail-Locale: zh_CN X-CM-TRANSID:gCh0CgA3mV0tGU1oVLziPQ--.32743W X-CM-SenderInfo: x2kh0wptl0x03j6k3tpzhluzxrxghudrp/1tbiAgATEmhL3Alp+gA Bsn X-Coremail-Antispam: 1Ur529EdanIXcx71UUUUU7IcSsGvfJ3GIAIbVAYFVCjjxCrMI AIbVAFxVCF77xC64kEw24lV2xY67C26IkvcIIF6IxKo4kEV4DvcSsGvfC2KfnxnUU== SGVsbG8gUGF1bCwKCgrlnKggMjAyNS82LzEzIDE2OjAyLCBQYXVsIE1lbnplbCDlhpnpgZM6CiZn dDsgRGVhciBaaGVuZywKJmd0OwomZ3Q7CiZndDsgVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCiZn dDsKJmd0OyBBbSAxMi4wNi4yNSB1bSAxNToyMSBzY2hyaWViIFpoZW5nIFFpeGluZzoKJmd0OyZn dDsgRnJvbTogWmhlbmcgUWl4aW5nIDx6aGVuZ3FpeGluZ0BodWF3ZWkuY29tPgomZ3Q7Jmd0Owom Z3Q7Jmd0OyBJTyB3aXRoIFJFUV9OT1dBSVQgc2hvdWxkIG5vdCBzZXQgUjFCSU9fVXB0b2RhdGUg d2hlbiBpdCBmYWlscywKJmd0OyZndDsgYW5kIGJhZCBibG9ja3Mgc2hvdWxkIGFsc28gYmUgY2xl YXJlZCB3aGVuIFJFUV9OT1dBSVQgSU8gc3VjY2VlZHMuCiZndDsKJmd0OyBJdOKAmWQgYmUgZ3Jl YXQgaWYgeW91IGNvdWxkIGFkZCBhbiBleHBsYW5hdGlvbiBmb3IgdGhlICpzaG91bGQqLiBXaHkg CiZndDsgc2hvdWxkIGl0IG5vdCBiZSBkb25lPwomZ3Q7CiZndDsgRG8geW91IGhhdmUgYSByZXBy b2R1Y2VyIGZvciB0aGlzPwomZ3Q7CgpJZiB3ZSBzZXQgUjFCSU9fVXB0b2RhdGUgd2hlbiBJTyB3 aXRoIFJFUV9OT1dBSVQgZmFpbHMsIHRoZSByZXF1ZXN0IHdpbGwgCnJldHVybiBhIHN1Y2Nlc3Mu CgpCdXQgYWN0dWFsbHkgaXQgc2hvdWxkIHJldHVybiBCTEtfU1RTX0lPRVJSIG9yIEJMS19TVFNf QUdBSU4sIHJpZ2h0PwoKCiZndDsmZ3Q7IEZpeGVzOiA5ZjM0NmY3ZDRlYTcgKCJtZC9yYWlkMSxy YWlkMTA6IGRvbid0IGhhbmRsZSBJTyBlcnJvciBmb3IgCiZndDsmZ3Q7IFJFUV9SQUhFQUQgYW5k IFJFUV9OT1dBSVQiKQomZ3Q7Jmd0OyBTaWduZWQtb2ZmLWJ5OiBaaGVuZyBRaXhpbmcgPHpoZW5n cWl4aW5nQGh1YXdlaS5jb20+CiZndDsmZ3Q7IC0tLQomZ3Q7Jmd0OyAmbmJzcDsgZHJpdmVycy9t ZC9yYWlkMS5jJm5ic3A7IHwgMTEgKysrKysrLS0tLS0KJmd0OyZndDsgJm5ic3A7IGRyaXZlcnMv bWQvcmFpZDEwLmMgfCZuYnNwOyA5ICsrKysrLS0tLQomZ3Q7Jmd0OyAmbmJzcDsgMiBmaWxlcyBj aGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQomZ3Q7Jmd0OwomZ3Q7Jmd0 OyBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9yYWlkMS5jIGIvZHJpdmVycy9tZC9yYWlkMS5jCiZn dDsmZ3Q7IGluZGV4IDE5YzVhMGNlNWE0MC4uYTFjZGRkMjRiMTc4IDEwMDY0NAomZ3Q7Jmd0OyAt LS0gYS9kcml2ZXJzL21kL3JhaWQxLmMKJmd0OyZndDsgKysrIGIvZHJpdmVycy9tZC9yYWlkMS5j CiZndDsmZ3Q7IEBAIC00NTUsMTMgKzQ1NSwxMyBAQCBzdGF0aWMgdm9pZCByYWlkMV9lbmRfd3Jp dGVfcmVxdWVzdChzdHJ1Y3QgYmlvIAomZ3Q7Jmd0OyAqYmlvKQomZ3Q7Jmd0OyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgc3RydWN0IG1kX3JkZXYgKnJkZXYgPSBjb25mLSZndDttaXJy b3JzW21pcnJvcl0ucmRldjsKJmd0OyZndDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IHNlY3Rvcl90IGxvID0gcjFfYmlvLSZndDtzZWN0b3I7CiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyBzZWN0b3JfdCBoaSA9IHIxX2Jpby0mZ3Q7c2VjdG9yICsgcjFfYmlv LSZndDtzZWN0b3JzOwomZ3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7IGJvb2wgaWdub3JlX2Vy cm9yID0gIXJhaWQxX3Nob3VsZF9oYW5kbGVfZXJyb3IoYmlvKSB8fAomZ3Q7Jmd0OyAtJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IChiaW8tJmd0O2JpX3N0YXR1cyAm YW1wOyZhbXA7IGJpb19vcChiaW8pID09IFJFUV9PUF9ESVNDQVJEKTsKJmd0OyZndDsgKyZuYnNw OyZuYnNwOyZuYnNwOyBib29sIGRpc2NhcmRfZXJyb3IgPSBiaW8tJmd0O2JpX3N0YXR1cyAmYW1w OyZhbXA7IGJpb19vcChiaW8pID09IAomZ3Q7Jmd0OyBSRVFfT1BfRElTQ0FSRDsKJmd0OwomZ3Q7 IEV4Y3VzZSBteSBpZ25vcmFuY2UuIFdoYXQgaXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBpZ25v cmUgYW5kIGRpc2NhcmQ/CgoKUkVRX09QX0RJU0NBUkQgaXMgYSBvcGVyYXRpb24gdHlwZSB3aGls ZSBSRVFfTk9XQUlUIGlzIGp1c3QgYSByZXF1ZXN0IGZsYWcuCgpUaGVzZSB0d28gY2FuIGJlIGNv bWJpbmVkIHRvZ2V0aGVyLiBJTyB3aXRoIFJFUV9OT1dBSVQgY2FuIGZhaWwgZWFybHksIGV2ZW4K CnRob3VnaCB0aGUgc3RvcmFnZSBtZWRpdW0gaXMgZmluZS4gU28sIHdlIGJldHRlciBoYW5kbGUg dGhpcyB0eXBlIG9mIAplcnJvciBzcGVjaWFsbHkuCgoKSSBob3BlIHRoaXMgY2xhcmlmaWVzIHlv dXIgZG91YnRzLgoKCiZndDsKJmd0OyZndDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 IC8qCiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqICdvbmUg bWlycm9yIElPIGhhcyBmaW5pc2hlZCcgZXZlbnQgaGFuZGxlcjoKJmd0OyZndDsgJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICovCiZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJz cDsgaWYgKGJpby0mZ3Q7Ymlfc3RhdHVzICZhbXA7JmFtcDsgIWlnbm9yZV9lcnJvcikgewomZ3Q7 Jmd0OyArJm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChiaW8tJmd0O2JpX3N0YXR1cyAmYW1wOyZhbXA7 ICFkaXNjYXJkX2Vycm9yICZhbXA7JmFtcDsKJmd0OyZndDsgKyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByYWlkMV9zaG91bGRfaGFuZGxlX2Vycm9yKGJpbykpIHsK Jmd0OyZndDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7IHNldF9iaXQoV3JpdGVFcnJvclNlZW4sJm5ic3A7Jm5ic3A7Jm5ic3A7ICZhbXA7cmRl di0mZ3Q7ZmxhZ3MpOwomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKCF0ZXN0X2FuZF9zZXRfYml0KFdhbnRSZXBsYWNlbWVu dCwgJmFtcDtyZGV2LSZndDtmbGFncykpCiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBz ZXRfYml0KE1EX1JFQ09WRVJZX05FRURFRCwgJmFtcDsKJmd0OyZndDsgQEAgLTUwNywxMiArNTA3 LDEzIEBAIHN0YXRpYyB2b2lkIHJhaWQxX2VuZF93cml0ZV9yZXF1ZXN0KHN0cnVjdCBiaW8gCiZn dDsmZ3Q7ICpiaW8pCiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAqIGNoZWNrIHRoaXMgaGVyZS4KJmd0OyZndDsgJm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICovCiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBpZiAodGVzdF9iaXQoSW5fc3luYywgJmFtcDtyZGV2LSZndDtmbGFncykgJmFt cDsmYW1wOwomZ3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICF0ZXN0X2JpdChGYXVsdHksICZhbXA7cmRldi0m Z3Q7ZmxhZ3MpKQomZ3Q7Jmd0OyArJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICF0ZXN0X2JpdChGYXVsdHksICZhbXA7cmRl di0mZ3Q7ZmxhZ3MpICZhbXA7JmFtcDsKJmd0OyZndDsgKyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAoIWJpby0mZ3Q7Ymlf c3RhdHVzIHx8IGRpc2NhcmRfZXJyb3IpKQomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg c2V0X2JpdChSMUJJT19VcHRvZGF0ZSwgJmFtcDtyMV9iaW8tJmd0O3N0YXRlKTsKJmd0OyZndDsg Jm5ic3A7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyAvKiBNYXliZSB3ZSBjYW4gY2xlYXIgc29tZSBiYWQgYmxvY2tzLiAqLwomZ3Q7Jmd0OyAm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYg KHJkZXZfaGFzX2JhZGJsb2NrKHJkZXYsIHIxX2Jpby0mZ3Q7c2VjdG9yLCAKJmd0OyZndDsgcjFf YmlvLSZndDtzZWN0b3JzKSAmYW1wOyZhbXA7CiZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIWlnbm9yZV9l cnJvcikgewomZ3Q7Jmd0OyArJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICFiaW8tJmd0O2JpX3N0YXR1cykgewomZ3Q7Jmd0 OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgcjFfYmlvLSZndDtiaW9zW21pcnJvcl0gPSBJT19NQURF X0dPT0Q7CiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZXRfYml0KFIxQklPX01hZGVH b29kLCAmYW1wO3IxX2Jpby0mZ3Q7c3RhdGUpOwomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfQomZ3Q7Jmd0OyBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZC9yYWlkMTAuYyBiL2RyaXZlcnMvbWQvcmFpZDEwLmMKJmd0OyZndDsgaW5k ZXggYjc0NzgwYWY0YzIyLi4xODQ4OTQ3YjBhNmQgMTAwNjQ0CiZndDsmZ3Q7IC0tLSBhL2RyaXZl cnMvbWQvcmFpZDEwLmMKJmd0OyZndDsgKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuYwomZ3Q7Jmd0 OyBAQCAtNDU4LDggKzQ1OCw4IEBAIHN0YXRpYyB2b2lkIHJhaWQxMF9lbmRfd3JpdGVfcmVxdWVz dChzdHJ1Y3QgYmlvIAomZ3Q7Jmd0OyAqYmlvKQomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgaW50IHNsb3QsIHJlcGw7CiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyBzdHJ1Y3QgbWRfcmRldiAqcmRldiA9IE5VTEw7CiZndDsmZ3Q7ICZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzdHJ1Y3QgYmlvICp0b19wdXQgPSBOVUxMOwomZ3Q7Jmd0 OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7IGJvb2wgaWdub3JlX2Vycm9yID0gIXJhaWQxX3Nob3VsZF9o YW5kbGVfZXJyb3IoYmlvKSB8fAomZ3Q7Jmd0OyAtJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7IChiaW8tJmd0O2JpX3N0YXR1cyAmYW1wOyZhbXA7IGJpb19vcChiaW8p ID09IFJFUV9PUF9ESVNDQVJEKTsKJmd0OyZndDsgKyZuYnNwOyZuYnNwOyZuYnNwOyBib29sIGRp c2NhcmRfZXJyb3IgPSBiaW8tJmd0O2JpX3N0YXR1cyAmYW1wOyZhbXA7IGJpb19vcChiaW8pID09 IAomZ3Q7Jmd0OyBSRVFfT1BfRElTQ0FSRDsKJmd0OyZndDsgKyZuYnNwOyZuYnNwOyZuYnNwOyBi b29sIGlnbm9yZV9lcnJvciA9ICFyYWlkMV9zaG91bGRfaGFuZGxlX2Vycm9yKGJpbykgfHwgCiZn dDsmZ3Q7IGRpc2NhcmRfZXJyb3I7CiZndDsmZ3Q7ICZuYnNwOyAmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgZGV2ID0gZmluZF9iaW9fZGlzayhjb25mLCByMTBfYmlvLCBiaW8sICZhbXA7 c2xvdCwgJmFtcDtyZXBsKTsKJmd0OyZndDsgJm5ic3A7IEBAIC01MjIsMTMgKzUyMiwxNCBAQCBz dGF0aWMgdm9pZCByYWlkMTBfZW5kX3dyaXRlX3JlcXVlc3Qoc3RydWN0IAomZ3Q7Jmd0OyBiaW8g KmJpbykKJmd0OyZndDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7ICogY2hlY2sgdGhpcyBoZXJlLgomZ3Q7Jmd0OyAmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKi8KJmd0 OyZndDsgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IGlmICh0ZXN0X2JpdChJbl9zeW5jLCAmYW1wO3JkZXYtJmd0O2ZsYWdzKSAmYW1wOyZhbXA7 CiZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgIXRlc3RfYml0KEZhdWx0eSwgJmFtcDtyZGV2LSZndDtmbGFn cykpCiZndDsmZ3Q7ICsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgIXRlc3RfYml0KEZhdWx0eSwgJmFtcDtyZGV2LSZndDtm bGFncykgJmFtcDsmYW1wOwomZ3Q7Jmd0OyArJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICghYmlvLSZndDtiaV9zdGF0dXMg fHwgZGlzY2FyZF9lcnJvcikpCiZndDsmZ3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBzZXRfYml0 KFIxMEJJT19VcHRvZGF0ZSwgJmFtcDtyMTBfYmlvLSZndDtzdGF0ZSk7CiZndDsmZ3Q7ICZuYnNw OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg LyogTWF5YmUgd2UgY2FuIGNsZWFyIHNvbWUgYmFkIGJsb2Nrcy4gKi8KJmd0OyZndDsgJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IGlmIChyZGV2 X2hhc19iYWRibG9jayhyZGV2LCByMTBfYmlvLSZndDtkZXZzW3Nsb3RdLmFkZHIsCiZndDsmZ3Q7 ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByMTBfYmlvLSZndDtzZWN0b3JzKSAmYW1wOyZhbXA7 CiZndDsmZ3Q7IC0mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsgIWlnbm9yZV9lcnJvcikgewomZ3Q7Jmd0OyArJm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 ICFiaW8tJmd0O2JpX3N0YXR1cykgewomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgYmlv X3B1dChiaW8pOwomZ3Q7Jmd0OyAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgaWYgKHJlcGwpCiZndDsm Z3Q7ICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyByMTBfYmlv LSZndDtkZXZzW3Nsb3RdLnJlcGxfYmlvID0gSU9fTUFERV9HT09EOwomZ3Q7CiZndDsKJmd0OyBL aW5kIHJlZ2FyZHMsCiZndDsKJmd0OyBQYXVsCgoKUmVnYXJkcywKClpoZW5nCgo8L3poZW5ncWl4 aW5nQGh1YXdlaS5jb20+PC96aGVuZ3FpeGluZ0BodWF3ZWkuY29tPg==