Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1scRVl-007KNv-C1 for pgsql-bugs@arkaria.postgresql.org; Fri, 09 Aug 2024 15:26:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1scRVk-0042oZ-1r for pgsql-bugs@arkaria.postgresql.org; Fri, 09 Aug 2024 15:26:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1scRVj-0042oR-Ik for pgsql-bugs@lists.postgresql.org; Fri, 09 Aug 2024 15:26:35 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1scRVf-003zQ1-WD for pgsql-bugs@lists.postgresql.org; Fri, 09 Aug 2024 15:26:34 +0000 Received: from [192.168.1.125] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4WgSS60LQKz49Q3M; Fri, 9 Aug 2024 18:26:29 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1723217190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=YEAMB9PiUUJfpAKN+3m5mTa5lRq9AbkQJ5mHak2gM/M=; b=hrHGgtWPYDDbQGNXwxMmvGS2CmdF+RpRQUNtCt2vR9TqDanjqcNOTb4SMXo7SvPmHjgRMV Hmv9O4nQPOeCt74Zzb6WGLLo0n2YkLlRIrcRzk3LL+V+t2deyA7yjGPI+LdZd6exnwTaOW wPs0tcZSwTU3/GaBeHBz7PKIxJrRFnAL6tA8ArmX4YHNMGHMnWTiYp3gRMGBe0zbtThdfG cHsxvOLUanozNCMSgkXf+7Syj/+S79ZDNiicVCxHyugPKTMJ5wW9X3bSkYKj2+9iVmzLLN aFFoNvqxzBBR2WwDRoJwblwAAP9xOVQtqU4EJIdQntSby/VSxxmVJIycsMMHDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1723217190; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=YEAMB9PiUUJfpAKN+3m5mTa5lRq9AbkQJ5mHak2gM/M=; b=hHGHYN4D+0fLjxFsGgw6mWPHn+rhJN48XnkDdm/czKFSBGWATW8GgWMvoGXdL40hBodbXO P5rh30MaP8cPWQDVORBTTgvQxjMACHBT3kVWHVIgK13TBHh3MFa7HjD630DUkwlynIV6uh W44k2jrNYdaZhZJcKXVngqMxYonU4CK7/XwbUEXeY67x5AABWHiHzq54JANf6lpHkswaq9 Qrifhb1fQVL77bnhfPz4T6DLVBiRhFxo8amzzo6Qnm5x+v2UweSEwQX7JX40MQDz4xVwQU 4YmsinUFZ/NmIipkAniOie1OKbAVqvZt0f4Pm7t/7w2BV1ETkD0G9aIafKMtJQ== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1723217190; a=rsa-sha256; cv=none; b=ds182ASiHYcqaOqFF3gHWsleYDymoQ+IyFOpB/nI7WjQSlrXSpJ7m+UjauuOj6E4SQvyC9 Je+sdYqMVaEHOYr9koqqFd1WhnxbTvNYkzGOQzZ3Z48721KOVzGFrYO7n0fgCZYJV6Rkk8 rR/6VqipYi91Y/dqQdSf0rk5WdhX6NfHbhfNmjn8Nc/Rz1Kl2ZLvWK0AxFNETq9ZUFOh7N HrloLksqu454uzTNi/bvEByGCBMrh1BdXgDPcudOPXdRlKsq3ks5MGIdnl0cIedRm45BQF t6wuoQZr9rWaEYHbi80+DH4u0anK/1EomJnt9MJStp9zmmthtd7RTTtFo6mbnQ== Content-Type: multipart/mixed; boundary="------------u2SCTOw0g4BzB9zMurhJXkZV" Message-ID: Date: Fri, 9 Aug 2024 18:26:29 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: BUG #18575: Sometimes pg_rewind mistakenly assumes that nothing needs to be done. From: Heikki Linnakangas To: Georgy Shelkovy , "pgsql-bugs@lists.postgresql.org" References: <18575-1b9b3b60e2a480de@postgresql.org> <092dd515-b7b4-4fd0-8407-ceca2f02f6ec@iki.fi> <3382141723103572@mail.yandex.ru> <188271723109777@mail.yandex.com> <3a626a21-319b-44e9-a2b5-94b8a93f9cd8@iki.fi> <31111723111906@mail.yandex.com> <1760421723118253@mail.yandex.com> <2171536a-8227-4e53-ac47-33b69093b61d@iki.fi> Content-Language: en-US In-Reply-To: <2171536a-8227-4e53-ac47-33b69093b61d@iki.fi> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------u2SCTOw0g4BzB9zMurhJXkZV Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 08/08/2024 16:07, Heikki Linnakangas wrote: > So it seems true that rewind is not required in those cases. However, if > the WAL is already written on the standby's disk, just not replayed yet, > then when you restart the server, it will replay the WAL from timeline > 1. That does seem surprising. Perhaps pg_rewind should just update the > minRecoveryPoint and minRecoveryTLI in control file in that case, to > force WAL recovery to follow the timeline switch to TLI 2. > > I will try to write a TAP test for the "Bad" and the assertion failure > case, fix the assertion failure, and test how updating the > minRecoveryPoint would behave. I've divided this into three separate issues: 1. I think the assertion in pg_rewind is simply bogus, and we should remove it. Attached 0002-Remove-bogus-assertion-in-pg_rewind.patch does that, and adds a test case to cover it. 2. Independently of pg_rewind: When you start PostgreSQL, it will first try to recover all the WAL it has locally in pg_wal. That goes wrong if you have set a recovery target TLI. For example, imagine this situation: - Recovery target TLI is 2, set explicitly in postgresql.conf - The switchpoint from TLI 1 to 2 happened at WAL position 0/1510198 (the switchpoint is found in 00000002.history) - There is a WAL file 000000010000000000000001 under pg_wal, which contains valid WAL up to 0/1590000 When you start the server, it will first recover all the WAL from 000000010000000000000001, up to 0/1590000. Then it will connect to the primary to fetch mor WAL, but it will fail to make any progress because it already blew past the switch point. It's obviously wrong to replay the WAL from timeline 1 beyond the 1->2 switchpoint, when the recovery target is TLI 2. The attached 0003-Don-t-read-past-current-TLI-during-archive-recovery.patch fixes that. However, the logic to find the right WAL segment file and read the WAL is extremely complicated, and I don't feel comfortable that I got all the cases right. Review would be highly appreciated. The patch includes a test case to demonstrate the case, with no pg_rewind. It does include one "manual" step to copy a timeline history file into pg_wal, marked with XXX, however. So I'm not sure how possible this scenario is in production setups . 3. When pg_rewind has nothing to do, the target server is left unmodified, in a state such that when you restart it, it will replay all the WAL it has locally in pg_wal first, before connecting to the primary. Even though the target is a direct ancestor of the source and hence it *can* follow the WAL to the source's position without rewinding, it doesn't mean that it *will* actually do so. The attached changes it so that it updates the control file in that case, setting minRecoveryPoint and minRecoveryPointTLI to point to the source's current WAL position. That way, when you start it up, it will follow the timeline history to reach that point. (This requires fixing issue 2, because otherwise it still won't follow the history correctly to reach the minRecoveryPointTLI) To make the test pass, it actually would be sufficient to copy the timeline history file into pg_wal (which the patch also does). But updating the minRecoveryPoint seems good to ensure that it follows the right timeline. Otherwise it relies on the logic at startup to find the latest timeline, and that the latest timeline is the one you tried to rewind to. I think it would go wrong if there was another higher-numbered history file present in pg_wal for some reason. All in all, I don't feel very confident about all this. The assertion seems straightforward, so barring objections I'll commit and backpatch that. The timeline-following at startup (issue 2) seems pretty clearly wrong, but I'm not sure it's worth the risk to backpatch. Similarly issue 3 might not be worth the risk to backpatch, especially if we don't also backpatch 2. I would love to hear comments on those. Georgy, if you have the possibility to test this patches with your repro script, that would be highly appreciated. -- Heikki Linnakangas Neon (https://neon.tech) --------------u2SCTOw0g4BzB9zMurhJXkZV Content-Type: text/x-patch; charset=UTF-8; name="0001-If-a-command-dies-in-a-command_checks_all-test-print.patch" Content-Disposition: attachment; filename*0="0001-If-a-command-dies-in-a-command_checks_all-test-print.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyNzg0OTZhNjU1ZDQyNTMxM2FmNzg1YTgxNTNkOTAxMDA0NGJjNGIyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgOSBBdWcgMjAyNCAxNDoxMzoyNCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMS80XSBJZiBhIGNvbW1hbmQgZGllcyBpbiBhIGNvbW1hbmRfY2hl Y2tzX2FsbCgpIHRlc3QsIHByaW50CiBvdXRwdXQKCkkgbm90aWNlZCB3aGlsZSB3cml0aW5n IGEgdGVzdCBjYXNlIGZvciBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbgpwZ19yZXdpbmQuIE9u IGFzc2VydGlvbiBmYWlsdXJlLCBpdCBwcmludHMgb3V0IHRoZSBhc3NlcnRpb24gdG8Kc3Rk ZXJyLCBidXQgY29tbWFuZF9jaGVja3NfYWxsKCkgc3dhbGxvd2VkIGl0LgotLS0KIHNyYy90 ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtIHwgOCArKysrKystLQogMSBmaWxl IGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9VdGlscy5wbSBiL3NyYy90ZXN0L3Bl cmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtCmluZGV4IDAyMmI0NGJhMjIuLjY0ZTZkNTA2 MjEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBt CisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L1V0aWxzLnBtCkBAIC0xMDU2 LDggKzEwNTYsMTIgQEAgc3ViIGNvbW1hbmRfY2hlY2tzX2FsbAogCiAJIyBTZWUgaHR0cDov L3Blcmxkb2MucGVybC5vcmcvcGVybHZhci5odG1sIyUyNENISUxEX0VSUk9SCiAJbXkgJHJl dCA9ICQ/OwotCWRpZSAiY29tbWFuZCBleGl0ZWQgd2l0aCBzaWduYWwgIiAuICgkcmV0ICYg MTI3KQotCSAgaWYgJHJldCAmIDEyNzsKKwlpZiAoJHJldCAmIDEyNykKKwl7CisJCWRpYWcg InN0ZG91dDogJHN0ZG91dCI7CisJCWRpYWcgInN0ZGVycjogJHN0ZGVyciI7CisJCWRpZSAi Y29tbWFuZCBleGl0ZWQgd2l0aCBzaWduYWwgIiAuICgkcmV0ICYgMTI3KTsKKwl9CiAJJHJl dCA9ICRyZXQgPj4gODsKIAogCSMgY2hlY2sgc3RhdHVzCi0tIAoyLjM5LjIKCg== --------------u2SCTOw0g4BzB9zMurhJXkZV Content-Type: text/x-patch; charset=UTF-8; name="0002-Remove-bogus-assertion-in-pg_rewind.patch" Content-Disposition: attachment; filename="0002-Remove-bogus-assertion-in-pg_rewind.patch" Content-Transfer-Encoding: base64 RnJvbSBiZGRiYjMzZGZlNmE1NzM3M2JkNzZmMDZkOTI4NTMwNjAzZWVjZDY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgOSBBdWcgMjAyNCAxMzozMDo1NSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMi80XSBSZW1vdmUgYm9ndXMgYXNzZXJ0aW9uIGluIHBnX3Jld2lu ZAoKSXQncyBlbnRpcmVseSBwb3NzaWJsZSB0aGF0IHRoZSBjYWxjdWxhdGVkICJwb2ludCBv ZiBkaXZlcmdlbmNlIiBpcwpiZWZvcmUgdGhlIGVuZCBvZiBXQUwgb24gdGhlIHRhcmdldCwg YmVjYXVzZSB3aGVuIHdlIGNhbGN1bGF0ZSB0aGUKcG9pbnQgb2YgZGl2ZXJnZW5jZSwgd2Ug YXNzdW1lIHRoYXQgdGhlIHRhcmdldCdzIFdBTCBleHRlbmRzIHRvCmluZmluaXR5IG9uIGl0 cyBjdXJyZW50IHRpbWVsaW5lLiBJdCBtaWdodCBiZSBtb3JlIGNsZWFyIHRvIGNhbGN1bGF0 ZQp0aGUgZW5kIG9mIFdBTCBmaXJzdCwgYW5kIGlmIHRoZSB0YXJnZXQgaXMgYSBkaXJlY3Qg YW5jZXN0b3Igb2YgdGhlCnNvdXJjZSwgY29uc2lkZXIgdGhlIGVuZCBvZiB0YXJnZXQgV0FM IGFzIHRoZSBwb2ludCBvZgpkaXZlcmdlbmNlLiBIb3dldmVyLCBpdCBkb2Vzbid0IGNoYW5n ZSB0aGUgcmVzdWx0OiB0aGUgdGFyZ2V0IGlzIGEKZGlyZWN0IGFuY2VzdG9yIG9mIHRoZSBz b3VyY2UsIGFuZCBkb2Vzbid0IG5lZWQgdG8gYmUgcmV3b3VuZC4KCkFkZCB0ZXN0cyB0byBj b3ZlciB0aGUgIm5vIHJld2luZCByZXF1aXJlZCIgY2FzZXMsIGJvdGggd2hlbiB0aGUKdGFy Z2V0J3MgZW5kIG9mIFdBTCBpcyBleGFjdGx5IGF0IHRoZSBwb2ludCBvZiBkaXZlcmdlbmNl LCB3aGljaCBpcwp3aGF0IHRoZSByZW1vdmVkIGFzc2VydGlvbiBhc3N1bWVkIChjYXNlIEIg aW4gdGhlIHRlc3QpLCBhbmQgdGhlIGNhc2UKd2hlcmUgdGhlIGFzc2VydGlvbiBmYWlsZWQg KGNhc2UgQSkuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkLzE4NTc1LTFiOWIzYjYwZTJhNDgwZGVAcG9zdGdyZXNxbC5vcmcKLS0tCiBzcmMv YmluL3BnX3Jld2luZC9wZ19yZXdpbmQuYyAgICAgICAgICAgICAgICAgfCAgIDcgLQogc3Jj L2Jpbi9wZ19yZXdpbmQvdC8wMTBfdGFyZ2V0X2lzX2FuY2VzdG9yLnBsIHwgMTI2ICsrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgNyBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3Jld2luZC90LzAx MF90YXJnZXRfaXNfYW5jZXN0b3IucGwKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jld2lu ZC9wZ19yZXdpbmQuYyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCmluZGV4IDMy M2MzNTY0NmMuLjEwMWU5MmI1NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfcmV3aW5kL3Bn X3Jld2luZC5jCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jCkBAIC00MzQs MTYgKzQzNCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkgKiBpbiB0aGUg dGFyZ2V0IHRoYXQgbmVlZHMgcmV3aW5kaW5nLgogCQkgKi8KIAkJaWYgKHRhcmdldF93YWxf ZW5kcmVjID4gZGl2ZXJnZXJlYykKLQkJewogCQkJcmV3aW5kX25lZWRlZCA9IHRydWU7Ci0J CX0KIAkJZWxzZQotCQl7Ci0JCQkvKiB0aGUgbGFzdCBjb21tb24gY2hlY2twb2ludCByZWNv cmQgbXVzdCBiZSBwYXJ0IG9mIHRhcmdldCBXQUwgKi8KLQkJCUFzc2VydCh0YXJnZXRfd2Fs X2VuZHJlYyA9PSBkaXZlcmdlcmVjKTsKLQogCQkJcmV3aW5kX25lZWRlZCA9IGZhbHNlOwot CQl9CiAJfQogCiAJaWYgKCFyZXdpbmRfbmVlZGVkKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19yZXdpbmQvdC8wMTBfdGFyZ2V0X2lzX2FuY2VzdG9yLnBsIGIvc3JjL2Jpbi9wZ19yZXdp bmQvdC8wMTBfdGFyZ2V0X2lzX2FuY2VzdG9yLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAuLjU0MTU4MWE0ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmlu L3BnX3Jld2luZC90LzAxMF90YXJnZXRfaXNfYW5jZXN0b3IucGwKQEAgLTAsMCArMSwxMjYg QEAKKworIyBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyNCwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIyBUZXN0IGNhc2VzIHdoZXJlIHRoZSB0YXJnZXQgaXMgYSBk aXJlY3QgYW5jZXN0b3Igb2YgdGhlIHNvdXJjZS4KKyMKKyMgV2Ugc2V0IHVwIHR3byB0aW1l bGluZXMgbGlrZSB0aGlzOgorIworIyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tIFRMSSAy IChzb3VyY2UpCisjICAgICAgICAgICAvCisjICAtLS1BLS0tLUItLS0tLS0tQy0tLS0tLS0g VExJIDEKKyMKKyMKKyMgT24gVExJIDEsIHdlIHRha2UgYSBiYWNrdXAgb24gcG9pbnRzIEEs IEIgYW5kIEMuIFdlIHVzZSBhIHNlcnZlcgorIyByZXN0b3JlZCBmcm9tIGVhY2ggb2YgdGhv c2UgcG9pbnRzIGFzIHRoZSB0YXJnZXQsIGFuZCBhIHByaW1hcnkKKyMgc2VydmVyIHJ1bm5p bmcgb24gVExJIDIgYXMgdGhlIHNvdXJjZS4KKyMKKyMgLSBBIGlzIGEgZGlyZWN0IGFuY2Vz dG9yIG9mIHRoZSBzb3VyY2UsIHNvIG5vIHJld2luZCBpcyByZXF1aXJlZAorIyAtIEIgaXMg YWxzbyBhIGRpcmVjdCBhbmNlc3RvciBvZiB0aGUgc291cmNlLCBhdCBleGFjdGx5IHRoZSBw b2ludAorIyAgICAgd2hlcmUgdGhlIHRpbWVsaW5lcyBkaXZlcmdlZC4gTm8gcmV3aW5kIGlz IHJlcXVpcmVkLgorIyAtIEMgaXMgbm90IGEgZGlyZWN0IGFuY2VzdG9yLCBzbyByZXdpbmQg aXMgcmVxdWlyZWQuIChUaGlzIGNhc2UgaXMKKyMgICBub3QgdGhlIGZvY3VzIG9mIHRoZXNl IHRlc3RzLCBpdCdzIGhlcmUganVzdCBmb3IgY29tcGxldGVuZXNzLikKKwordXNlIHN0cmlj dDsKK3VzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1v cmU7CisKK3VzZSBGaWxlOjpDb3B5OwordXNlIEZpbGU6OlBhdGggcXcocm10cmVlKTsKKwor bXkgJHRtcF9mb2xkZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKKwor bXkgJG9yaWdfbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnb3JpZ19u b2RlJyk7Ciskb3JpZ19ub2RlLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gMSk7Ciskb3Jp Z19ub2RlLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCit3YWxfbG9n X2hpbnRzID0gb24KKykpOworJG9yaWdfbm9kZS0+c3RhcnQ7Ciskb3JpZ19ub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYiAodCBURVhUKScpOwor JG9yaWdfbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoJ2F0IHRoZSBiZWdpbm5pbmcnKSIpOworJG9yaWdfbm9kZS0+c3RvcDsK KyRvcmlnX25vZGUtPmJhY2t1cF9mc19jb2xkKCdiYWNrdXBfQScpOworCiskb3JpZ19ub2Rl LT5zdGFydDsKKyRvcmlnX25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKCdhZnRlciBiYWNrdXAgQScpIik7Ciskb3JpZ19ub2Rl LT5zdG9wOworJG9yaWdfbm9kZS0+YmFja3VwX2ZzX2NvbGQoJ2JhY2t1cF9CJyk7CisKKyMg UmVzdG9yZSBiYWNrdXAgQiB0byBjcmVhdGUgVGltZWxpbmUgMgorbXkgJG5vZGVfMiA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZV8yJyk7Ciskbm9kZV8yLT5pbml0 X2Zyb21fYmFja3VwKCRvcmlnX25vZGUsICdiYWNrdXBfQicsIGhhc19zdHJlYW1pbmcgPT4g MSk7Ciskbm9kZV8yLT5zdGFydDsKKyRub2RlXzItPnByb21vdGU7Ciskbm9kZV8yLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoJ2luIG5v ZGVfMicpIik7Ciskbm9kZV8yLT5zdG9wOworCiskb3JpZ19ub2RlLT5zdGFydDsKKyRvcmln X25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKCd0aGlzIHdpbGwgYmUgbG9zdCBvbiByZXdpbmQnKSIpOworJG9yaWdfbm9kZS0+ c3RvcDsKKyRvcmlnX25vZGUtPmJhY2t1cF9mc19jb2xkKCdiYWNrdXBfQycpOworCitteSAk c291cmNlX25vZGUgPSAkbm9kZV8yOworbXkgJHNvdXJjZV9wZ2RhdGEgPSAkc291cmNlX25v ZGUtPmRhdGFfZGlyOworCisjIENyZWF0ZSBhIG5ldyBub2RlIGZyb20gYSBiYWNrdXAsIGFu ZCBydW4gcGdfcmV3aW5kIHRvIHJld2luZCBpdCBhcyBhCisjIGZvbGxvd2VyIG9mICRzb3Vy Y2Vfbm9kZQorc3ViIHJld2luZF9mcm9tX2JhY2t1cAoreworCW15ICgkYmFja3VwLCAkZXhw ZWN0ZWRfc3RkZXJyKSA9IEBfOworCisJbXkgJHRhcmdldF9ub2RlID0gUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3Rlci0+bmV3KCdyZXN0b3JlZF8nIC4gJGJhY2t1cCk7CisJJHRhcmdldF9u b2RlLT5pbml0X2Zyb21fYmFja3VwKCRvcmlnX25vZGUsICRiYWNrdXAsIGhhc19zdHJlYW1p bmcgPT4gMSk7CisJbXkgJHRhcmdldF9wZ2RhdGEgPSAkdGFyZ2V0X25vZGUtPmRhdGFfZGly OworCisJIyBLZWVwIGEgdGVtcG9yYXJ5IHBvc3RncmVzcWwuY29uZiBvciBpdCB3b3VsZCBi ZSBvdmVyd3JpdHRlbiBkdXJpbmcgdGhlIHJld2luZC4KKwljb3B5KCIkdGFyZ2V0X3BnZGF0 YS9wb3N0Z3Jlc3FsLmNvbmYiLCAiJHRtcF9mb2xkZXIvcG9zdGdyZXNxbC5jb25mLnRtcCIp OworCisJY29tbWFuZF9jaGVja3NfYWxsKAorCQlbCisJCQkncGdfcmV3aW5kJywKKwkJCSIt LWRlYnVnIiwKKwkJCSItLW5vLXN5bmMiLAorCQkJIi0tc291cmNlLXBnZGF0YT0kc291cmNl X3BnZGF0YSIsCisJCQkiLS10YXJnZXQtcGdkYXRhPSR0YXJnZXRfcGdkYXRhIgorCQldLAor CQkwLAorCQlbXSwKKwkJWyRleHBlY3RlZF9zdGRlcnJdLAorCQkicGdfcmV3aW5kIG9uIG5v ZGUgcmVzdG9yZWQgZnJvbSAkYmFja3VwIik7CisKKwkjIE5vdyBtb3ZlIGJhY2sgcG9zdGdy ZXNxbC5jb25mIHdpdGggb2xkIHNldHRpbmdzCisJbW92ZSgiJHRtcF9mb2xkZXIvcG9zdGdy ZXNxbC5jb25mLnRtcCIsICIkdGFyZ2V0X3BnZGF0YS9wb3N0Z3Jlc3FsLmNvbmYiKTsKKwor CSMgQ29uZmlndXJlIGl0IHRvIGNvbm5lY3QgdG8gdGhlIG5ldyBwcmltYXJ5CisJbXkgJG5v ZGVfMl9jb25uc3RyID0gJG5vZGVfMi0+Y29ubnN0cigpOworCSR0YXJnZXRfbm9kZS0+YXBw ZW5kX2NvbmYoCisJCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK3ByaW1hcnlfY29ubmluZm8g PSAnJG5vZGVfMl9jb25uc3RyJworKSk7CisJJHRhcmdldF9ub2RlLT5zZXRfc3RhbmRieV9t b2RlKCk7CisJJHRhcmdldF9ub2RlLT5zdGFydDsKKworCSRub2RlXzItPnN0YXJ0OworCSRu b2RlXzItPndhaXRfZm9yX2NhdGNodXAoJHRhcmdldF9ub2RlLT5uYW1lKTsKKwlteSAkcmVz dWx0ID0KKwkgICR0YXJnZXRfbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg KiBGUk9NIHRlc3RfdGFiIik7CisJaXMoICRyZXN1bHQsIHFxKGF0IHRoZSBiZWdpbm5pbmcK K2FmdGVyIGJhY2t1cCBBCitpbiBub2RlXzIpLAorCQkiY2hlY2sgcXVlcnkgYWZ0ZXIgcmV3 aW5kIGZyb20gJGJhY2t1cCIpOworCSR0YXJnZXRfbm9kZS0+c3RvcDsKKworCSRub2RlXzIt PnN0b3A7Cit9CisKK3Jld2luZF9mcm9tX2JhY2t1cCgnYmFja3VwX0MnLAorCXFyL3BnX3Jl d2luZDogcmV3aW5kaW5nIGZyb20gbGFzdCBjb21tb24gY2hlY2twb2ludCBhdCAuKiBvbiB0 aW1lbGluZSAxLyk7CityZXdpbmRfZnJvbV9iYWNrdXAoJ2JhY2t1cF9CJywgcXIvcGdfcmV3 aW5kOiBubyByZXdpbmQgcmVxdWlyZWQvKTsKK3Jld2luZF9mcm9tX2JhY2t1cCgnYmFja3Vw X0EnLCBxci9wZ19yZXdpbmQ6IG5vIHJld2luZCByZXF1aXJlZC8pOworCitkb25lX3Rlc3Rp bmcoKTsKLS0gCjIuMzkuMgoK --------------u2SCTOw0g4BzB9zMurhJXkZV Content-Type: text/x-patch; charset=UTF-8; name="0003-Don-t-read-past-current-TLI-during-archive-recovery.patch" Content-Disposition: attachment; filename*0="0003-Don-t-read-past-current-TLI-during-archive-recovery.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBhYTU3ZjlmNmQyMTE3NmFhYjZiM2U1MjBiNGViMDQ3M2I4YjRhNjA5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgOSBBdWcgMjAyNCAxNjo1MDo1OCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggMy80XSBEb24ndCByZWFkIHBhc3QgY3VycmVudCBUTEkgZHVyaW5n IGFyY2hpdmUgcmVjb3ZlcnkKCklmIHlvdSBzZXQgdGhlIHJlY292ZXJ5IHRhcmdldCB0aW1l bGluZSwgdGhlIHJlY292ZXJ5IHdvdWxkIG5vdApjb3JyZWN0bHkgZm9sbG93IHRoZSB0aW1l bGluZSBoaXN0b3J5IHRvIHJlYWNoIHRoYXQgdGltZWxpbmUsIGlmIGEKbG9jYWwgV0FMIHNl Z21lbnQgaGFkIG1vcmUgV0FMIHJlY29yZHMgb24gb25lIG9mIHRoZSBvbGRlcgp0aW1lbGlu ZXMuIEZpeCB0aGF0IGJ5IG5vdCByZWFkaW5nIFdBTCBwYXN0IHRoZSBzd2l0Y2hwb2ludCBp biB0aGUKdGltZWxpbmUgaGlzdG9yeS4KClRoaXMgY2FzZSBjYW1lIHVwIHdpdGggcGdfcmV3 aW5kOiBpZiB5b3UgY2FsbCBwZ19yZXdpbmQgb24gYSBzZXJ2ZXIKdGhhdCBpcyBhIGRpcmVj dCBhbmNlc3RvciBvZiB0aGUgc291cmNlLCBpdCBleGl0cyB3aXRoICJubyByZXdpbmQKcmVx dWlyZWQiIGFuZCBkb2VzIG5vdGhpbmcuIEhvd2V2ZXIsIGlmIHRoZSB0YXJnZXQgaGFkIGFs cmVhZHkKc3RyZWFtZWQgV0FMIHBhc3QgdGhlIHBvaW50IG9mIGRpdmVyZ2VuY2UsIGFuZCBq dXN0IGhhZG4ndCBhcHBsaWVkIGl0CnlldCwgd2hlbiB5b3Ugc3RhcnQgaXQgdXAgaXQgd2ls bCBmb2xsb3cgdGhlIG9yaWdpbmFsIHRpbWVsaW5lLCBub3QKdGhlIG9uZSB5b3UgdHJpZWQg dG8gcmV3aW5kIHRvLiBUaGlzIGNvbW1pdCBhbG9uZSBkb2Vzbid0IGZpeCB0aGF0LApiZWNh dXNlIHRoZSBzZXJ2ZXIgc3RpbGwgd29uJ3Qga25vdyB0aGF0IGl0J3Mgc3VwcG9zZWQgdG8g Zm9sbG93IHRoZQpvdGhlciB0aW1lbGluZS4gQnV0IHRoaXMgYXQgbGVhc3QgZml4ZXMgdGhl IHNpbWlsYXIgY2FzZSB3aGVuIHlvdSBoYXZlCnNldCB0aGUgcmVjb3ZlcnkgdGFyZ2V0IHRp bWVsaW5lIGV4cGxpY2l0bHkuCgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3Fs Lm9yZy9tZXNzYWdlLWlkLzE4NTc1LTFiOWIzYjYwZTJhNDgwZGUlNDBwb3N0Z3Jlc3FsLm9y ZwotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgICB8 IDgxICsrKysrKysrKysrKystLQogLi4uL3JlY292ZXJ5L3QvMDQ0X2NoYW5nZV9yZWNvdmVy eV90YXJnZXQucGwgIHwgOTggKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2Vk LCAxNzEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA0NF9jaGFuZ2VfcmVjb3ZlcnlfdGFyZ2V0LnBsCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCBhZDgx N2ZiY2E2Li5kM2QxNzc0ZDI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 bG9ncmVjb3ZlcnkuYwpAQCAtMTE3LDEyICsxMTcsMjAgQEAgYm9vbAkJd2FsX3JlY2VpdmVy X2NyZWF0ZV90ZW1wX3Nsb3QgPSBmYWxzZTsKICAqIHNjYW5uaW5nIGRhdGEgdGhhdCB3YXMg Y29waWVkIGZyb20gYW4gYW5jZXN0b3IgdGltZWxpbmUgd2hlbiB0aGUgY3VycmVudAogICog ZmlsZSB3YXMgY3JlYXRlZC4pICBEdXJpbmcgYSBzZXF1ZW50aWFsIHNjYW4gd2UgZG8gbm90 IGFsbG93IHRoaXMgdmFsdWUKICAqIHRvIGRlY3JlYXNlLgorICoKKyAqIGN1ckZpbGVVcHRv OiB0aGUgZW5kIG9mIHRoZSBjdXJGaWxlVExJIHRpbWVsaW5lIGluIHRoZSBoaXN0b3J5IG9m IHRoZQorICogdGltZWxpbmUgd2UncmUgcmVjb3ZlcmluZyB0byAoaWUuIHJlY292ZXJ5VGFy Z2V0VExJKS4gIFdlIG11c3Qgbm90IHJlYWQgdGhlCisgKiBjdXJyZW50bHkgb3BlbiBmaWxl IGJleW9uZCB0aGlzIHBvc2l0aW9uLCBiZWNhdXNlIGl0IGNvbnRhaW5zIFdBTCB0aGF0IGlz CisgKiBub3QgcGFydCBvZiB0aGUgaGlzdG9yeSBvZiB0aGUgdGltZWxpbmUgd2UncmUgcmVj b3ZlcmluZyB0by4gIFVwb24gcmVhY2hpbmcKKyAqIHRoYXQgcG9pbnQsIHdlIG5lZWQgdG8g b3BlbiB0aGUgZmlsZSBmcm9tIHRoZSBuZXh0IHRpbWVsaW5lIGluIHRoZSBoaXN0b3J5Cisg KiBpbnN0ZWFkLgogICovCiBSZWNvdmVyeVRhcmdldFRpbWVMaW5lR29hbCByZWNvdmVyeVRh cmdldFRpbWVMaW5lR29hbCA9IFJFQ09WRVJZX1RBUkdFVF9USU1FTElORV9MQVRFU1Q7CiBU aW1lTGluZUlECXJlY292ZXJ5VGFyZ2V0VExJUmVxdWVzdGVkID0gMDsKIFRpbWVMaW5lSUQJ cmVjb3ZlcnlUYXJnZXRUTEkgPSAwOwogc3RhdGljIExpc3QgKmV4cGVjdGVkVExFczsKIHN0 YXRpYyBUaW1lTGluZUlEIGN1ckZpbGVUTEk7CitzdGF0aWMgWExvZ1JlY1B0ciBjdXJGaWxl VXB0bzsKIAogLyoKICAqIFdoZW4gQXJjaGl2ZVJlY292ZXJ5UmVxdWVzdGVkIGlzIHNldCwg YXJjaGl2ZSByZWNvdmVyeSB3YXMgcmVxdWVzdGVkLApAQCAtMzMxNSw2ICszMzIzLDcgQEAg WExvZ1BhZ2VSZWFkKFhMb2dSZWFkZXJTdGF0ZSAqeGxvZ3JlYWRlciwgWExvZ1JlY1B0ciB0 YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCWludAkJCWVtb2RlID0gcHJpdmF0ZS0+ZW1v ZGU7CiAJdWludDMyCQl0YXJnZXRQYWdlT2ZmOwogCVhMb2dTZWdObwl0YXJnZXRTZWdObyBQ R19VU0VEX0ZPUl9BU1NFUlRTX09OTFk7CisJWExvZ1JlY1B0cglyZWFkVXB0bzsKIAlpbnQJ CQlyOwogCiAJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgdGFyZ2V0U2VnTm8sIHdhbF9z ZWdtZW50X3NpemUpOwpAQCAtMzM0Niw5ICszMzU1LDM2IEBAIFhMb2dQYWdlUmVhZChYTG9n UmVhZGVyU3RhdGUgKnhsb2dyZWFkZXIsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50 IHJlcUxlbiwKIAkJcmVhZFNvdXJjZSA9IFhMT0dfRlJPTV9BTlk7CiAJfQogCityZXRyeToK KwkvKgorCSAqIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IHRp bWVsaW5lIGluIHRoZSByZWNvdmVyeQorCSAqIHRhcmdldCB0aW1lbGluZSdzIGhpc3Rvcnks IG5lZWQgdG8gc3dpdGNoIHRvIHRoZSBmaWxlIGZyb20gdGhlIG5leHQKKwkgKiB0aW1lbGlu ZS4KKwkgKgorCSAqIE5vdGU6IFRoZSBsb2dpYyBhbmQgcHVycG9zZSBvZiB0aGlzIGlzIHNp bWlsYXIgdG8KKwkgKiBYTG9nUmVhZERldGVybWluZVRpbWVsaW5lKCksIGJ1dCB3ZSBkb24n dCB1c2UgdGhlIGVuZC1vZi1zZWdtZW50IHRvCisJICogZGV0ZXJtaW5lIHRoZSBuZXh0IFRM SSBsaWtlIFhMb2dSZWFkRGV0ZXJtaW5lVGltZWxpbmUoKSBkb2VzLiAgV2UgZG9uJ3QKKwkg KiBuZWVkIGl0IGJlY2F1c2UgWExvZ0ZpbGVSZWFkQW55VExJKCkgd2lsbCB0cnkgdG8gcmVh ZCBmcm9tIHRoZSBXQUwKKwkgKiBzZWdtZW50IHdpdGggdGhlIGxhdGVzdCBwb3NzaWJsZSBU TEkuICBUaGlzIGlzIG1vcmUgZmxleGlibGUgdGhhbgorCSAqIFhMb2dSZWFkRGV0ZXJtaW5l VGltZWxpbmUoKSwgd2hpY2ggbWFrZXMgaXQgbW9yZSBsaWtlbHkgdGhhdCB3ZSdsbCBtYWtl CisJICogc29tZSBwcm9ncmVzcyB0b3dhcmRzIHRoZSByZWNvdmVyeSB0YXJnZXQsIGV2ZW4g aWYgYWxsIHRoZSBXQUwgaXMgbm90CisJICogKHlldCkgYXZhaWxhYmxlLgorCSAqLworCWlm IChjdXJGaWxlVXB0byAhPSBJbnZhbGlkWExvZ1JlY1B0ciAmJgorCQljdXJGaWxlVXB0byA8 PSB0YXJnZXRQYWdlUHRyICsgcmVxTGVuKQorCXsKKwkJaWYgKHJlYWRGaWxlID49IDApCisJ CXsKKwkJCWNsb3NlKHJlYWRGaWxlKTsKKwkJCXJlYWRGaWxlID0gLTE7CisJCX0KKwkJY3Vy RmlsZVRMSSA9IHRsaU9mUG9pbnRJbkhpc3RvcnkodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiwg ZXhwZWN0ZWRUTEVzKTsKKwkJY3VyRmlsZVVwdG8gPSB0bGlTd2l0Y2hQb2ludChjdXJGaWxl VExJLCBleHBlY3RlZFRMRXMsIE5VTEwpOworCQlyZWFkU291cmNlID0gWExPR19GUk9NX0FO WTsKKwl9CisKIAlYTEJ5dGVUb1NlZyh0YXJnZXRQYWdlUHRyLCByZWFkU2VnTm8sIHdhbF9z ZWdtZW50X3NpemUpOwogCi1yZXRyeToKIAkvKiBTZWUgaWYgd2UgbmVlZCB0byByZXRyaWV2 ZSBtb3JlIGRhdGEgKi8KIAlpZiAocmVhZEZpbGUgPCAwIHx8CiAJCShyZWFkU291cmNlID09 IFhMT0dfRlJPTV9TVFJFQU0gJiYKQEAgLTMzODIsMjggKzM0MTgsNDUgQEAgcmV0cnk6CiAJ CX0KIAl9CiAKKwkvKgorCSAqIElmIHRoZSByZWNvdmVyeSB0YXJnZXQgVExJIGNoYW5nZWQg ZHVyaW5nIFdhaXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZSwKKwkgKiB0aGUgcmVjb3JkIHdl J3JlIGxvb2tpbmcgZm9yIG1pZ2h0IG5vdCBiZSBvbiB0aGlzIGZpbGUgYW55bW9yZS4KKwkg Ki8KKwkgaWYgKGN1ckZpbGVVcHRvICE9IEludmFsaWRYTG9nUmVjUHRyICYmCisJCSBjdXJG aWxlVXB0byA8PSB0YXJnZXRQYWdlUHRyICsgcmVxTGVuKQorCQkgZ290byByZXRyeTsKKwog CS8qCiAJICogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0aGUgcmlnaHQgc2VnbWVudCBvcGVu IGFuZCBpZiB3ZSdyZSBzdHJlYW1pbmcgd2UKIAkgKiBrbm93IHRoZSByZXF1ZXN0ZWQgcmVj b3JkIGlzIGluIGl0LgogCSAqLwogCUFzc2VydChyZWFkRmlsZSAhPSAtMSk7CiAKKwkvKgor CSAqIElmIHdlJ3JlIHJlY292ZXJpbmcgdGhyb3VnaCBvbGQgdGltZWxpbmVzLCBtYWtlIHN1 cmUgd2UgZG9uJ3QgcmVhZAorCSAqIGJleW9uZCB0aGUgcG9pbnQgd2hlcmUgd2UncmUgc3Vw cG9zZWQgdG8gc3dpdGNoIHRvIG5leHQgdGltZWxpbmUgaW4gdGhlCisJICogcmVjb3Zlcnkg dGFyZ2V0J3MgaGlzdG9yeS4KKwkgKi8KKwlyZWFkVXB0byA9IGN1ckZpbGVVcHRvOworCiAJ LyoKIAkgKiBJZiB0aGUgY3VycmVudCBzZWdtZW50IGlzIGJlaW5nIHN0cmVhbWVkIGZyb20g dGhlIHByaW1hcnksIGNhbGN1bGF0ZQogCSAqIGhvdyBtdWNoIG9mIHRoZSBjdXJyZW50IHBh Z2Ugd2UgaGF2ZSByZWNlaXZlZCBhbHJlYWR5LiBXZSBrbm93IHRoZQogCSAqIHJlcXVlc3Rl ZCByZWNvcmQgaGFzIGJlZW4gcmVjZWl2ZWQsIGJ1dCB0aGlzIGlzIGZvciB0aGUgYmVuZWZp dCBvZgogCSAqIGZ1dHVyZSBjYWxscywgdG8gYWxsb3cgcXVpY2sgZXhpdCBhdCB0aGUgdG9w IG9mIHRoaXMgZnVuY3Rpb24uCiAJICovCi0JaWYgKHJlYWRTb3VyY2UgPT0gWExPR19GUk9N X1NUUkVBTSkKKwlpZiAocmVhZFNvdXJjZSA9PSBYTE9HX0ZST01fU1RSRUFNICYmCisJCShy ZWFkVXB0byA9PSBJbnZhbGlkWExvZ1JlY1B0ciB8fCBmbHVzaGVkVXB0byA8IHJlYWRVcHRv KSkKIAl7Ci0JCWlmICgoKHRhcmdldFBhZ2VQdHIpIC8gWExPR19CTENLU1opICE9IChmbHVz aGVkVXB0byAvIFhMT0dfQkxDS1NaKSkKLQkJCXJlYWRMZW4gPSBYTE9HX0JMQ0tTWjsKLQkJ ZWxzZQotCQkJcmVhZExlbiA9IFhMb2dTZWdtZW50T2Zmc2V0KGZsdXNoZWRVcHRvLCB3YWxf c2VnbWVudF9zaXplKSAtCi0JCQkJdGFyZ2V0UGFnZU9mZjsKKwkJcmVhZFVwdG8gPSBmbHVz aGVkVXB0bzsKIAl9Ci0JZWxzZQorCisJaWYgKHJlYWRVcHRvID09IEludmFsaWRYTG9nUmVj UHRyIHx8CisJCSgodGFyZ2V0UGFnZVB0cikgLyBYTE9HX0JMQ0tTWikgIT0gKHJlYWRVcHRv IC8gWExPR19CTENLU1opKQogCQlyZWFkTGVuID0gWExPR19CTENLU1o7CisJZWxzZQorCQly ZWFkTGVuID0gWExvZ1NlZ21lbnRPZmZzZXQocmVhZFVwdG8sIHdhbF9zZWdtZW50X3NpemUp IC0KKwkJCXRhcmdldFBhZ2VPZmY7CiAKIAkvKiBSZWFkIHRoZSByZXF1ZXN0ZWQgcGFnZSAq LwogCXJlYWRPZmYgPSB0YXJnZXRQYWdlT2ZmOwpAQCAtMzc3Myw3ICszODI2LDEwIEBAIFdh aXRGb3JXQUxUb0JlY29tZUF2YWlsYWJsZShYTG9nUmVjUHRyIFJlY1B0ciwgYm9vbCByYW5k QWNjZXNzLAogCQkJCX0KIAkJCQkvKiBSZXNldCBjdXJGaWxlVExJIGlmIHJhbmRvbSBmZXRj aC4gKi8KIAkJCQlpZiAocmFuZEFjY2VzcykKKwkJCQl7CiAJCQkJCWN1ckZpbGVUTEkgPSAw OworCQkJCQljdXJGaWxlVXB0byA9IEludmFsaWRYTG9nUmVjUHRyOworCQkJCX0KIAogCQkJ CS8qCiAJCQkJICogVHJ5IHRvIHJlc3RvcmUgdGhlIGZpbGUgZnJvbSBhcmNoaXZlLCBvciBy ZWFkIGFuIGV4aXN0aW5nCkBAIC0zODM3LDYgKzM4OTMsOSBAQCBXYWl0Rm9yV0FMVG9CZWNv bWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wgcmFuZEFjY2VzcywKIAkJCQkJ CVhMb2dSZWNQdHIJcHRyOwogCQkJCQkJVGltZUxpbmVJRAl0bGk7CiAKKwkJCQkJCWlmICgh ZXhwZWN0ZWRUTEVzKQorCQkJCQkJCWV4cGVjdGVkVExFcyA9IHJlYWRUaW1lTGluZUhpc3Rv cnkocmVjb3ZlcnlUYXJnZXRUTEkpOworCiAJCQkJCQlpZiAoZmV0Y2hpbmdfY2twdCkKIAkJ CQkJCXsKIAkJCQkJCQlwdHIgPSBSZWRvU3RhcnRMU047CkBAIC0zODU4LDYgKzM5MTcsNyBA QCBXYWl0Rm9yV0FMVG9CZWNvbWVBdmFpbGFibGUoWExvZ1JlY1B0ciBSZWNQdHIsIGJvb2wg cmFuZEFjY2VzcywKIAkJCQkJCQkJCSB0bGksIGN1ckZpbGVUTEkpOwogCQkJCQkJfQogCQkJ CQkJY3VyRmlsZVRMSSA9IHRsaTsKKwkJCQkJCWN1ckZpbGVVcHRvID0gdGxpU3dpdGNoUG9p bnQodGxpLCBleHBlY3RlZFRMRXMsIE5VTEwpOwogCQkJCQkJU2V0SW5zdGFsbFhMb2dGaWxl U2VnbWVudEFjdGl2ZSgpOwogCQkJCQkJUmVxdWVzdFhMb2dTdHJlYW1pbmcodGxpLCBwdHIs IFByaW1hcnlDb25uSW5mbywKIAkJCQkJCQkJCQkJIFByaW1hcnlTbG90TmFtZSwKQEAgLTQx ODQsNiArNDI0NCw4IEBAIHJlc2NhbkxhdGVzdFRpbWVMaW5lKFRpbWVMaW5lSUQgcmVwbGF5 VExJLCBYTG9nUmVjUHRyIHJlcGxheUxTTikKIAkgKiBiZXR3ZWVuIHRoZSBvbGQgdGFyZ2V0 IGFuZCBuZXcgdGFyZ2V0IGluIHBnX3dhbC4KIAkgKi8KIAlyZXN0b3JlVGltZUxpbmVIaXN0 b3J5RmlsZXMob2xkdGFyZ2V0ICsgMSwgbmV3dGFyZ2V0KTsKKwlpZiAoY3VyRmlsZVRMSSAh PSAwKQorCQljdXJGaWxlVXB0byA9IHRsaVN3aXRjaFBvaW50KGN1ckZpbGVUTEksIGV4cGVj dGVkVExFcywgTlVMTCk7CiAKIAllcmVwb3J0KExPRywKIAkJCShlcnJtc2coIm5ldyB0YXJn ZXQgdGltZWxpbmUgaXMgJXUiLApAQCAtNDI1NCw2ICs0MzE2LDkgQEAgWExvZ0ZpbGVSZWFk KFhMb2dTZWdObyBzZWdubywgaW50IGVtb2RlLCBUaW1lTGluZUlEIHRsaSwKIAl7CiAJCS8q IFN1Y2Nlc3MhICovCiAJCWN1ckZpbGVUTEkgPSB0bGk7CisJCWlmICghZXhwZWN0ZWRUTEVz KQorCQkJZXhwZWN0ZWRUTEVzID0gcmVhZFRpbWVMaW5lSGlzdG9yeShyZWNvdmVyeVRhcmdl dFRMSSk7CisJCWN1ckZpbGVVcHRvID0gdGxpU3dpdGNoUG9pbnQoY3VyRmlsZVRMSSwgZXhw ZWN0ZWRUTEVzLCBOVUxMKTsKIAogCQkvKiBSZXBvcnQgcmVjb3ZlcnkgcHJvZ3Jlc3MgaW4g UFMgZGlzcGxheSAqLwogCQlzbnByaW50ZihhY3Rpdml0eW1zZywgc2l6ZW9mKGFjdGl2aXR5 bXNnKSwgInJlY292ZXJpbmcgJXMiLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3Zlcnkv dC8wNDRfY2hhbmdlX3JlY292ZXJ5X3RhcmdldC5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3Qv MDQ0X2NoYW5nZV9yZWNvdmVyeV90YXJnZXQucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uOTlhYTEyNmQ2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDQ0X2NoYW5nZV9yZWNvdmVyeV90YXJnZXQucGwKQEAgLTAsMCArMSw5 OCBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMS0yMDI0LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorCisjIFRlc3QgdGhhdCByZWNvdmVyeSBzZXJ2ZXIgZm9sbG93 cyB0aGUgcmlnaHQgcGF0aCB0aHJvdWdoIHRoZSBXQUwKKyMgZmlsZXMgdG93YXJkcyB0aGUg cmVjb3ZlcnkgdGFyZ2V0IHRpbWVsaW5lLiBDb25zaWRlciB0aGUgZm9sbG93aW5nCisjIHRp bWVsaW5lIGhpc3Rvcnk6CisjCisjICAgIC0tLVMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlAg ICBUTEkgMQorIyAgICAgICAgICAgICAgICAgICAgIFwKKyMgICAgICAgICAgICAgICAgICAg ICAgLS0tLS0tLS0+ICAgIFRMSSAyCisjCisjIFN0YW5kYnkgaGFzIHJlcGxheWVkIHRoZSBX QUxMIG9uIFRMSSB1cCB0byBwb2ludCBTLCBhbmQgaXMgY3VycmVudGx5CisjIHN0b3BwZWQu IEhvd2V2ZXIsIGl0IGFscmVhZHkgaGFzIGFsbCB0aGUgV0FMIGZyb20gVExJIDEgbG9jYWxs eSBpbgorIyBwZ193YWwsIGJlY2F1c2UgaXQgd2FzIHJlc3RvcmVkIGZyb20gdGggYXJjaGl2 ZSBvciBzdHJlYW1lZCBmcm9tIHRoZQorIyBwcmltYXJ5IG9uIFRMSSAxIGVhcmxpZXIuIElm IHlvdSBub3cgc2V0IHJlY292ZXJ5IHRhcmdldCB0aW1lbGluZSB0bworIyBUTEkgMiwgdGhl IHN0YW5kYnkgbXVzdCBub3QgcmVwbGF5IHRoZSBXQUwgaXQgYWxyZWFkeSBoYXMgb24gVExJ IDEsCisjIGJleW9uZCB0aGUgcG9pbnQgd2hlcmUgdGhleSBkaXZlcmdlZC4KKyMKKyMgVGhp cyB0ZXN0IHNldHMgdXAgdGhhdCBzY2VuYXJpbywgYnkgcGF1c2luZyB0aGUgcmVwbGF5IG9u IHRoZQorIyBzdGFuZGJ5LgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKwordXNlIEZpbGU6OkNvcHk7CisK K215ICRwcmltYXJ5MSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFy eTEnKTsKKyRwcmltYXJ5MS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOworJHByaW1h cnkxLT5zdGFydDsKKyRwcmltYXJ5MS0+YmFja3VwKCJia3AiKTsKKworbXkgJHN0YW5kYnkg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N0YW5kYnknKTsKKyRzdGFuZGJ5 LT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5MSwgImJrcCIsIGhhc19zdHJlYW1pbmcgPT4g MSk7Ciskc3RhbmRieS0+c3RhcnQ7CisKKyMgUGF1c2UgdGhlIHN0YW5kYnkKKyRzdGFuZGJ5 LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193YWxfcmVwbGF5X3BhdXNlKCki KTsKKworIyBNYWtlIHNvbWUgY2hhbmdlcyBpbiB0aGUgcHJpbWFyeS4gVGhleSB3aWxsIGJl IHN0cmVhbWVkIHRvIHRoZQorIyBzdGFuZGJ5LCBidXQgbm90IHlldCBhcHBsaWVkLgorJHBy aW1hcnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBUQUJMRSB0ZXN0X3RhYjEg KHQgVEVYVCknKTsKKyRwcmltYXJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUg VEFCTEUgdGVzdF90YWIyICh0IFRFWFQpJyk7CiskcHJpbWFyeTEtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgVkFMVUVTICgnYm90aCB0aW1lbGlu ZXMnKSIpOworJHByaW1hcnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElO VE8gdGVzdF90YWIyIFZBTFVFUyAoJ2JvdGggdGltZWxpbmVzJykiKTsKKworIyBDcmVhdGUg dGltZWxpbmUgMiBhdCB0aGlzIHBvaW50CitteSAkcHJpbWFyeTIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3ByaW1hcnkyJyk7CiskcHJpbWFyeTItPmluaXRfZnJvbV9i YWNrdXAoJHByaW1hcnkxLCAiYmtwIiwgaGFzX3N0cmVhbWluZyA9PiAxKTsKKyRwcmltYXJ5 Mi0+c3RhcnQ7CiskcHJpbWFyeTEtPndhaXRfZm9yX3JlcGxheV9jYXRjaHVwKCRwcmltYXJ5 Mik7CiskcHJpbWFyeTItPnByb21vdGU7CisKKyMgTWFrZSBzb21lIGNoYW5nZXMgb24gYm90 aCB0aW1lbGluZXMKKyRwcmltYXJ5MS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMgKCdUTEkgMSBvbmx5JykiKTsKKworJHByaW1hcnky LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVF UyAoJ1RMSSAyIG9ubHknKSIpOworCisjIFN0b3AgdGhlIHN0YW5kYnksIGFuZCByZS1wb2lu dCBpdCB0byBUTEkgMiAocHJpbWFyeTIpLgorJHN0YW5kYnktPnN0b3A7CitteSAkcHJpbWFy eTJfY29ubnN0ciA9ICRwcmltYXJ5Mi0+Y29ubnN0cjsKKyRzdGFuZGJ5LT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkicHJpbWFyeV9jb25uaW5mbyA9ICckcHJpbWFyeTJf Y29ubnN0ciciKTsKKyRzdGFuZGJ5LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkicmVjb3ZlcnlfdGFyZ2V0X3RpbWVsaW5lID0gMiIpOworCisjIENvcHkgdGhlIGhpc3Rv cnkgZmlsZS4gT3RoZXJ3aXNlLCB0aGUgc3RhbmRieSB3aWxsIGp1c3QgZXJyb3Igb3V0Cisj IHdpdGggIkZBVEFMOiByZWNvdmVyeSB0YXJnZXQgdGltZWxpbmUgMiBkb2VzIG5vdCBleGlz dCIKKyMKKyMgWFhYOiBQZXJoYXBzIGl0IHNob3VsZCB0cnkgdG8gY29ubmVjdCB0byB0aGUg cHJpbWFyeSBhbmQgZmV0Y2ggdGhlCisjIGhpc3RvcnkgZmlsZSBmcm9tIHRoZXJlIGluc3Rl YWQgb2YgZXJyb3Jpbmcgb3V0LiBCdXQgaXQgZG9lc24ndCBkbworIyB0aGF0IHRvZGF5Lgor Y29weSgkcHJpbWFyeTItPmRhdGFfZGlyIC4gJy9wZ193YWwvMDAwMDAwMDIuaGlzdG9yeScs CisJJHN0YW5kYnktPmRhdGFfZGlyIC4gJy9wZ193YWwvMDAwMDAwMDIuaGlzdG9yeScpCisg IG9yIEJBSUxfT1VUKCJjb3VsZCBub3QgY29weSAwMDAwMDAwMi5oaXN0b3J5Iik7CisKKyMg Q2hlY2sgdGhhdCBpdCByZWNvdmVycyBjb3JyZWN0bHkgdG8gVExJIDIgd2hlbiBzdGFydGVk IHVwLgorJHN0YW5kYnktPnN0YXJ0OworJHByaW1hcnkyLT53YWl0X2Zvcl9yZXBsYXlfY2F0 Y2h1cCgkc3RhbmRieSk7CisKK215ICRyZXN1bHQgPQorICAkc3RhbmRieS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRlc3RfdGFiMSIpOworaXMoICRyZXN1bHQs IHFxKGJvdGggdGltZWxpbmVzKSwKKwkJImNoYW5nZXMgb24gVExJIDEgYXJlICpub3QqIG9u IHN0YW5kYnkiKTsKKworJHJlc3VsdCA9CisgICRzdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCAqIEZST00gdGVzdF90YWIyIik7CitpcyggJHJlc3VsdCwgcXEoYm90 aCB0aW1lbGluZXMKK1RMSSAyIG9ubHkpLAorCQkiYWxsIGNoYW5nZXMgb24gVExJIDIgYXJl IG9uIHRoZSBzdGFuZGJ5Iik7CisKK2RvbmVfdGVzdGluZygpOwotLSAKMi4zOS4yCgo= --------------u2SCTOw0g4BzB9zMurhJXkZV Content-Type: text/x-patch; charset=UTF-8; name="0004-Update-minRecoveryPoint-when-no-rewind-is-required.patch" Content-Disposition: attachment; filename*0="0004-Update-minRecoveryPoint-when-no-rewind-is-required.patc"; filename*1="h" Content-Transfer-Encoding: base64 RnJvbSA2ZDUzNGY2ZDFmMWI4YTBhMzc1YTU3Y2RlOTQ3OTU0M2VmYjg3ZjE0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IEZyaSwgOSBBdWcgMjAyNCAxODoyMzowMiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggNC80XSBVcGRhdGUgbWluUmVjb3ZlcnlQb2ludCB3aGVuIG5vIHJl d2luZCBpcyByZXF1aXJlZAoKQWx0ZXJuYXRpdmVseSwgcGVyaGFwcyBqdXN0IGNvcHlpbmcg dGhlIGhpc3RvcnkgZmlsZSB3b3VsZCBiZSBlbm91Z2g/Ci0tLQogc3JjL2Jpbi9wZ19yZXdp bmQvcGdfcmV3aW5kLmMgICAgICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysr LQogc3JjL2Jpbi9wZ19yZXdpbmQvdC8wMTBfdGFyZ2V0X2lzX2FuY2VzdG9yLnBsIHwgMjEg KysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfcmV3aW5kL3BnX3Jld2luZC5jIGIv c3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3aW5kLmMKaW5kZXggMTAxZTkyYjU0OS4uZTI3Njdi YTllYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3aW5kLmMKKysrIGIv c3JjL2Jpbi9wZ19yZXdpbmQvcGdfcmV3aW5kLmMKQEAgLTc3LDYgKzc3LDkgQEAgYm9vbAkJ ZG9fc3luYyA9IHRydWU7CiBzdGF0aWMgYm9vbCByZXN0b3JlX3dhbCA9IGZhbHNlOwogRGF0 YURpclN5bmNNZXRob2Qgc3luY19tZXRob2QgPSBEQVRBX0RJUl9TWU5DX01FVEhPRF9GU1lO QzsKIAorc3RhdGljIGNoYXIgKnNvdXJjZUhpc3RmaWxlOworc3RhdGljIGNoYXIgKnNvdXJj ZUhpc3RmaWxlTmFtZTsKKwogLyogVGFyZ2V0IGhpc3RvcnkgKi8KIFRpbWVMaW5lSGlzdG9y eUVudHJ5ICp0YXJnZXRIaXN0b3J5OwogaW50CQkJdGFyZ2V0TmVudHJpZXM7CkBAIC0zNzIs NyArMzc1LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICovCiAJaWYgKHRh cmdldF90bGkgPT0gc291cmNlX3RsaSkKIAl7Ci0JCXBnX2xvZ19pbmZvKCJzb3VyY2UgYW5k IHRhcmdldCBjbHVzdGVyIGFyZSBvbiB0aGUgc2FtZSB0aW1lbGluZSIpOworCQlwZ19sb2df aW5mbygibm8gcmV3aW5kIHJlcXVpcmVkLCBzb3VyY2UgYW5kIHRhcmdldCBjbHVzdGVyIGFy ZSBvbiB0aGUgc2FtZSB0aW1lbGluZSIpOwogCQlyZXdpbmRfbmVlZGVkID0gZmFsc2U7CiAJ CXRhcmdldF93YWxfZW5kcmVjID0gMDsKIAl9CkBAIC00MzEsMTIgKzQzNCwzOSBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJLyoKIAkJICogQ2hlY2sgZm9yIHRoZSBwb3Nz aWJpbGl0eSB0aGF0IHRoZSB0YXJnZXQgaXMgaW4gZmFjdCBhIGRpcmVjdAogCQkgKiBhbmNl c3RvciBvZiB0aGUgc291cmNlLiBJbiB0aGF0IGNhc2UsIHRoZXJlIGlzIG5vIGRpdmVyZ2Vu dCBoaXN0b3J5Ci0JCSAqIGluIHRoZSB0YXJnZXQgdGhhdCBuZWVkcyByZXdpbmRpbmcuCisJ CSAqIGluIHRoZSB0YXJnZXQgdGhhdCBuZWVkcyByZXdpbmRpbmcsIGJ1dCB3ZSBzdGlsbCB1 cGRhdGUgdGhlCisJCSAqIHRhcmdldCdzIG1pblJlY292ZXJ5UG9pbnQsIHNvIHRoYXQgd2hl biB5b3Ugc3RhcnQgaXQgdXAsIGl0IHdpbGwKKwkJICogcmVjb3ZlciB0byB0aGF0IHRpbWVs aW5lLiAoT3RoZXJ3aXNlLCBpZiBpdCBoYXMgbW9yZSBXQUwgbG9jYWxseSBpbgorCQkgKiBw Z193YWwgb3IgYXZhaWxhYmxlIGZyb20gdGhlIGFyY2hpdmUsIGl0IG1pZ2h0IGNob29zZSB0 byBmb2xsb3cKKwkJICogc29tZSBvdGhlciB0aW1lbGluZS4pCiAJCSAqLwogCQlpZiAodGFy Z2V0X3dhbF9lbmRyZWMgPiBkaXZlcmdlcmVjKQogCQkJcmV3aW5kX25lZWRlZCA9IHRydWU7 CiAJCWVsc2UKKwkJeworCQkJQ29udHJvbEZpbGVEYXRhIENvbnRyb2xGaWxlX25ldzsKKwog CQkJcmV3aW5kX25lZWRlZCA9IGZhbHNlOworCisJCQltZW1jcHkoJkNvbnRyb2xGaWxlX25l dywgJkNvbnRyb2xGaWxlX3RhcmdldCwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCQkJ Q29udHJvbEZpbGVfbmV3Lm1pblJlY292ZXJ5UG9pbnQgPSAJTWF4KENvbnRyb2xGaWxlX3Nv dXJjZS5taW5SZWNvdmVyeVBvaW50LAorCQkJCQkJCQkJCQkJCUNvbnRyb2xGaWxlX3NvdXJj ZS5jaGVja1BvaW50KTsKKwkJCUNvbnRyb2xGaWxlX25ldy5taW5SZWNvdmVyeVBvaW50VExJ ID0gc291cmNlX3RsaTsKKwkJCXBnX2xvZ19pbmZvKCJubyByZXdpbmQgcmVxdWlyZWQsIHVw ZGF0aW5nIHRhcmdldCB0byBzb3VyY2UncyB0aW1lbGluZSIsCisJCQkJCQlMU05fRk9STUFU X0FSR1MoQ29udHJvbEZpbGVfbmV3Lm1pblJlY292ZXJ5UG9pbnQpLAorCQkJCQkJQ29udHJv bEZpbGVfbmV3Lm1pblJlY292ZXJ5UG9pbnRUTEkpOworCQkJaWYgKCFkcnlfcnVuKQorCQkJ CXVwZGF0ZV9jb250cm9sZmlsZShkYXRhZGlyX3RhcmdldCwgJkNvbnRyb2xGaWxlX25ldywg ZG9fc3luYyk7CisKKwkJCS8qCisJCQkgKiBNYWtlIHRoZSB0aW1lbGluZSBoaXN0b3J5IGZp bGUgYXZhaWxhYmxlIHRvIHRoZSB0YXJnZXQuIEF2b2lkcworCQkJICogaGF2aW5nIHRvIGZl dGNoIGl0IGltbWVkaWF0ZWx5IGF0IHN0YXJ0dXAsIGFuZCBlbnN1cmVzIHRoYXQgaXQKKwkJ CSAqIGhhcyB0aGUgc2FtZSBpZGVhIG9mIHdoYXQgdGhlIHRpbWVsaW5lIGlzIGFzIHdlIGRp ZC4KKwkJCSAqLworCQkJb3Blbl90YXJnZXRfZmlsZShzb3VyY2VIaXN0ZmlsZU5hbWUsIHRy dWUpOworCQkJd3JpdGVfdGFyZ2V0X3JhbmdlKHNvdXJjZUhpc3RmaWxlLCAwLCBzdHJsZW4o c291cmNlSGlzdGZpbGUpKTsKKwkJCWNsb3NlX3RhcmdldF9maWxlKCk7CisJCX0KIAl9CiAK IAlpZiAoIXJld2luZF9uZWVkZWQpCkBAIC04NzIsNiArOTAyLDEyIEBAIGdldFRpbWVsaW5l SGlzdG9yeShUaW1lTGluZUlEIHRsaSwgYm9vbCBpc19zb3VyY2UsIGludCAqbmVudHJpZXMp CiAJCQloaXN0ZmlsZSA9IHNsdXJwRmlsZShkYXRhZGlyX3RhcmdldCwgcGF0aCwgTlVMTCk7 CiAKIAkJaGlzdG9yeSA9IHJld2luZF9wYXJzZVRpbWVMaW5lSGlzdG9yeShoaXN0ZmlsZSwg dGxpLCBuZW50cmllcyk7CisJCWlmIChpc19zb3VyY2UpCisJCXsKKwkJCXNvdXJjZUhpc3Rm aWxlTmFtZSA9IHBzdHJkdXAocGF0aCk7CisJCQlzb3VyY2VIaXN0ZmlsZSA9IGhpc3RmaWxl OworCQl9CisJCWVsc2UKIAkJcGdfZnJlZShoaXN0ZmlsZSk7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX3Jld2luZC90LzAxMF90YXJnZXRfaXNfYW5jZXN0b3IucGwgYi9zcmMv YmluL3BnX3Jld2luZC90LzAxMF90YXJnZXRfaXNfYW5jZXN0b3IucGwKaW5kZXggNTQxNTgx YTRlOC4uMTVhYWE2MGYyZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXdpbmQvdC8wMTBf dGFyZ2V0X2lzX2FuY2VzdG9yLnBsCisrKyBiL3NyYy9iaW4vcGdfcmV3aW5kL3QvMDEwX3Rh cmdldF9pc19hbmNlc3Rvci5wbApAQCAtNjcsOCArNjcsOCBAQCAkb3JpZ19ub2RlLT5iYWNr dXBfZnNfY29sZCgnYmFja3VwX0MnKTsKIG15ICRzb3VyY2Vfbm9kZSA9ICRub2RlXzI7CiBt eSAkc291cmNlX3BnZGF0YSA9ICRzb3VyY2Vfbm9kZS0+ZGF0YV9kaXI7CiAKLSMgQ3JlYXRl IGEgbmV3IG5vZGUgZnJvbSBhIGJhY2t1cCwgYW5kIHJ1biBwZ19yZXdpbmQgdG8gcmV3aW5k IGl0IGFzIGEKLSMgZm9sbG93ZXIgb2YgJHNvdXJjZV9ub2RlCisjIENyZWF0ZSBhIG5ldyBu b2RlIGZyb20gYSBiYWNrdXAsIGFuZCByZXdpbmQgaXQgYXMgYSBmb2xsb3dlciBvZgorIyAk c291cmNlX25vZGUKIHN1YiByZXdpbmRfZnJvbV9iYWNrdXAKIHsKIAlteSAoJGJhY2t1cCwg JGV4cGVjdGVkX3N0ZGVycikgPSBAXzsKQEAgLTkwLDIyICs5MCwyOSBAQCBzdWIgcmV3aW5k X2Zyb21fYmFja3VwCiAJCV0sCiAJCTAsCiAJCVtdLAotCQlbJGV4cGVjdGVkX3N0ZGVycl0s CisJCSRleHBlY3RlZF9zdGRlcnIsCiAJCSJwZ19yZXdpbmQgb24gbm9kZSByZXN0b3JlZCBm cm9tICRiYWNrdXAiKTsKIAogCSMgTm93IG1vdmUgYmFjayBwb3N0Z3Jlc3FsLmNvbmYgd2l0 aCBvbGQgc2V0dGluZ3MKIAltb3ZlKCIkdG1wX2ZvbGRlci9wb3N0Z3Jlc3FsLmNvbmYudG1w IiwgIiR0YXJnZXRfcGdkYXRhL3Bvc3RncmVzcWwuY29uZiIpOwogCisJIyBNYWtlIHRoZSBt b3JlIHJlY2VudCBXQUwgZnJvbSB0aW1lbGluZSAxIGF2YWlsYWJsZSB0byB0aGUKKwkjIHJl c3RvcmVkIHNlcnZlci4gIEl0IGRvZXNuJ3QgbmVlZCBpdCwgdGhlIHBvaW50IG9mIHRoaXMg aXMgdG8KKwkjIHRlc3QgdGhhdCB0aGUgc2VydmVyIGlnbm9yZXMgdGhpcyBleHRyYSBXQUwu CisJY29weSgkb3JpZ19ub2RlLT5kYXRhX2RpciAuICIvcGdfd2FsLzAwMDAwMDAxMDAwMDAw MDAwMDAwMDAwMSIsCisJICAkdGFyZ2V0X25vZGUtPmRhdGFfZGlyIC4gIi9wZ193YWwvMDAw MDAwMDEwMDAwMDAwMDAwMDAwMDAxIikKKwkgIHx8IGRpZSAiY29weWluZyAwMDAwMDAwMTAw MDAwMDAwMDAwMDAwMDE6ICQhIjsKKwogCSMgQ29uZmlndXJlIGl0IHRvIGNvbm5lY3QgdG8g dGhlIG5ldyBwcmltYXJ5CiAJbXkgJG5vZGVfMl9jb25uc3RyID0gJG5vZGVfMi0+Y29ubnN0 cigpOwogCSR0YXJnZXRfbm9kZS0+YXBwZW5kX2NvbmYoCiAJCSdwb3N0Z3Jlc3FsLmNvbmYn LCBxcSgKIHByaW1hcnlfY29ubmluZm8gPSAnJG5vZGVfMl9jb25uc3RyJwogKSk7CisJJG5v ZGVfMi0+c3RhcnQ7CiAJJHRhcmdldF9ub2RlLT5zZXRfc3RhbmRieV9tb2RlKCk7CiAJJHRh cmdldF9ub2RlLT5zdGFydDsKIAotCSRub2RlXzItPnN0YXJ0OwogCSRub2RlXzItPndhaXRf Zm9yX2NhdGNodXAoJHRhcmdldF9ub2RlLT5uYW1lKTsKIAlteSAkcmVzdWx0ID0KIAkgICR0 YXJnZXRfbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgKiBGUk9NIHRlc3Rf dGFiIik7CkBAIC0xMTksOCArMTI2LDggQEAgaW4gbm9kZV8yKSwKIH0KIAogcmV3aW5kX2Zy b21fYmFja3VwKCdiYWNrdXBfQycsCi0JcXIvcGdfcmV3aW5kOiByZXdpbmRpbmcgZnJvbSBs YXN0IGNvbW1vbiBjaGVja3BvaW50IGF0IC4qIG9uIHRpbWVsaW5lIDEvKTsKLXJld2luZF9m cm9tX2JhY2t1cCgnYmFja3VwX0InLCBxci9wZ19yZXdpbmQ6IG5vIHJld2luZCByZXF1aXJl ZC8pOwotcmV3aW5kX2Zyb21fYmFja3VwKCdiYWNrdXBfQScsIHFyL3BnX3Jld2luZDogbm8g cmV3aW5kIHJlcXVpcmVkLyk7CisJW3FyL3BnX3Jld2luZDogcmV3aW5kaW5nIGZyb20gbGFz dCBjb21tb24gY2hlY2twb2ludCBhdCAuKiBvbiB0aW1lbGluZSAxL10pOworcmV3aW5kX2Zy b21fYmFja3VwKCdiYWNrdXBfQicsIFtxci9ubyByZXdpbmQgcmVxdWlyZWQsIHVwZGF0aW5n IHRhcmdldCB0byBzb3VyY2UncyB0aW1lbGluZS9dKTsKK3Jld2luZF9mcm9tX2JhY2t1cCgn YmFja3VwX0EnLCBbcXIvbm8gcmV3aW5kIHJlcXVpcmVkLCB1cGRhdGluZyB0YXJnZXQgdG8g c291cmNlJ3MgdGltZWxpbmUvXSk7CiAKIGRvbmVfdGVzdGluZygpOwotLSAKMi4zOS4yCgo= --------------u2SCTOw0g4BzB9zMurhJXkZV--