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 1qrgbg-005S4h-W8 for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Oct 2023 15:31:13 +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 1qrgbc-007WoA-QB for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Oct 2023 15:31:09 +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 1qrgbc-007Wo2-EF for pgsql-hackers@lists.postgresql.org; Sat, 14 Oct 2023 15:31:09 +0000 Received: from mail.thelabyrinth.net ([45.56.70.56]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qrgbW-000eay-65 for pgsql-hackers@postgresql.org; Sat, 14 Oct 2023 15:31:08 +0000 Received: from [10.5.0.2] (unknown [45.14.195.190]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dsteele) by mail.thelabyrinth.net (Postfix) with ESMTPSA id 7226E5468B; Sat, 14 Oct 2023 15:31:00 +0000 (UTC) Content-Type: multipart/mixed; boundary="------------FUcve0vldrb0YN8WB8Jz97ZM" Message-ID: Date: Sat, 14 Oct 2023 11:30:55 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: The danger of deleting backup_label From: David Steele To: Thomas Munro Cc: Michael Paquier , Pg Hackers , Stephen Frost References: <1330cb48-4e47-03ca-f2fb-b144b49514d8@pgmasters.net> <0e088834-aa39-ed09-3ec7-31c13c629a20@pgmasters.net> <65825be1-e79a-46f4-9d9f-4ff95a10e378@pgmasters.net> Content-Language: en-US In-Reply-To: <65825be1-e79a-46f4-9d9f-4ff95a10e378@pgmasters.net> 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. --------------FUcve0vldrb0YN8WB8Jz97ZM Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 10/12/23 10:19, David Steele wrote: > On 10/11/23 18:10, Thomas Munro wrote: > >> As Stephen mentioned[1], we could perhaps also complain if both backup >> label and control file exist, and then hint that the user should >> remove the *control file* (not the backup label!).  I had originally >> suggested we would just overwrite the control file, but by explicitly >> complaining about it we would also bring the matter to tool/script >> authors' attention, ie that they shouldn't be backing that file up, or >> should be removing it in a later step if they copy everything.  He >> also mentions that there doesn't seem to be anything stopping us from >> back-patching changes to the backup label contents if we go this way. >> I don't have a strong opinion on that and we could leave the question >> for later. > > I'm worried about the possibility of back patching this unless the > solution comes out to be simpler than I think and that rarely comes to > pass. Surely throwing errors on something that is currently valid (i.e. > backup_label and pg_control both present). > > But perhaps there is a simpler, acceptable solution we could back patch > (transparent to all parties except Postgres) and then a more advanced > solution we could go forward with. > > I guess I had better get busy on this. Attached is a very POC attempt at something along these lines that could be back patched. I stopped when I realized excluding pg_control from the backup is a necessity to make this work (else we still could end up with a torn copy of pg_control even if there is a good copy elsewhere). To enumerate the back patch issues as I see them: 1) We still need a copy of pg_control in order to get Postgres to start and that copy might be torn (pretty much where we are now). We can handle this easily in pg_basebackup but most backup software will not be able to do so. In my opinion teaching Postgres to start without pg_control is too big a change to possibly back patch. 2) We need to deal with backups made with a prior *minor* version that did not include pg_control in the backup_label. Doable, but... 3) We need to move backup_label to the end of the main pg_basebackup tar, which could cause unforeseen breakage for tools. 4) This patch is less efficient for backups taken from standby because it will overwrite pg_control on restart and force replay back to the original MinRecoveryPoint. 5) We still need a solution for exclusive backup (still valid in PG <= 14). Doable but it would still have the weakness of 1. All of this is fixable in HEAD, but seems incredibly dangerous to back patch. Even so, I have attached the patch in case somebody sees an opportunity that I do not. Regards, -David --------------FUcve0vldrb0YN8WB8Jz97ZM Content-Type: text/plain; charset=UTF-8; name="v01-pgcontrol-in-backup-label.patch" Content-Disposition: attachment; filename="v01-pgcontrol-in-backup-label.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBjMGU0Y2E1MDg5OS4uZTRhNDQ3 OGFmNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwor KysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTc0LDYgKzc0LDcg QEAKICNpbmNsdWRlICJwZ190cmFjZS5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgogI2luY2x1 ZGUgInBvcnQvYXRvbWljcy5oIgorI2luY2x1ZGUgInBvcnQvcGdfY3JjMzJjLmgiCiAjaW5j bHVkZSAicG9ydC9wZ19pb3ZlYy5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYmd3cml0ZXIu aCIKICNpbmNsdWRlICJwb3N0bWFzdGVyL3N0YXJ0dXAuaCIKQEAgLTg2OTEsNiArODY5Miwy MSBAQCBkb19wZ19iYWNrdXBfc3RvcChCYWNrdXBTdGF0ZSAqc3RhdGUsIGJvb2wgd2FpdGZv cmFyY2hpdmUpCiAJCQkJCQkgImFuZCBzaG91bGQgbm90IGJlIHVzZWQuICIKIAkJCQkJCSAi VHJ5IHRha2luZyBhbm90aGVyIG9ubGluZSBiYWNrdXAuIikpKTsKIAorCS8qCisJICogQ3Jl YXRlIGEgY29weSBvZiBjb250cm9sIGRhdGEgdG8gYmUgc3RvcmVkIGluIHRoZSBiYWNrdXAg bGFiZWwuCisJICogUmVjYWxjdWxhdGUgdGhlIENSQyBzbyByZWNvdmVyeSBjYW4gdmFsaWRh dGUgdGhlIGNvbnRlbnRzIGJ1dCBkbyBub3QKKwkgKiBib3RoZXIgd2l0aCB0aGUgdGltZXN0 YW1wIHNpbmNlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIGJlZm9yZSBpdCBpcworCSAqIHdyaXR0 ZW4gYnkgcmVjb3ZlcnkuCisJICovCisJTFdMb2NrQWNxdWlyZShDb250cm9sRmlsZUxvY2ss IExXX1NIQVJFRCk7CisJc3RhdGUtPmNvbnRyb2xGaWxlID0gKkNvbnRyb2xGaWxlOworCUxX TG9ja1JlbGVhc2UoQ29udHJvbEZpbGVMb2NrKTsKKworCUlOSVRfQ1JDMzJDKHN0YXRlLT5j b250cm9sRmlsZS5jcmMpOworCUNPTVBfQ1JDMzJDKHN0YXRlLT5jb250cm9sRmlsZS5jcmMs IChjaGFyICopJnN0YXRlLT5jb250cm9sRmlsZSwKKwkJCSAgICBvZmZzZXRvZihDb250cm9s RmlsZURhdGEsIGNyYykpOworCUZJTl9DUkMzMkMoc3RhdGUtPmNvbnRyb2xGaWxlLmNyYyk7 CisKIAkvKgogCSAqIER1cmluZyByZWNvdmVyeSwgd2UgZG9uJ3Qgd3JpdGUgYW4gZW5kLW9m LWJhY2t1cCByZWNvcmQuIFdlIGFzc3VtZSB0aGF0CiAJICogcGdfY29udHJvbCB3YXMgYmFj a2VkIHVwIGxhc3QgYW5kIGl0cyBtaW5pbXVtIHJlY292ZXJ5IHBvaW50IGNhbiBiZQpAQCAt ODc0MSwxMSArODc1Nyw4IEBAIGRvX3BnX2JhY2t1cF9zdG9wKEJhY2t1cFN0YXRlICpzdGF0 ZSwgYm9vbCB3YWl0Zm9yYXJjaGl2ZSkKIAkJCQkJCQkgIkVuYWJsZSBmdWxsX3BhZ2Vfd3Jp dGVzIGFuZCBydW4gQ0hFQ0tQT0lOVCBvbiB0aGUgcHJpbWFyeSwgIgogCQkJCQkJCSAiYW5k IHRoZW4gdHJ5IGFuIG9ubGluZSBiYWNrdXAgYWdhaW4uIikpKTsKIAotCi0JCUxXTG9ja0Fj cXVpcmUoQ29udHJvbEZpbGVMb2NrLCBMV19TSEFSRUQpOwotCQlzdGF0ZS0+c3RvcHBvaW50 ID0gQ29udHJvbEZpbGUtPm1pblJlY292ZXJ5UG9pbnQ7Ci0JCXN0YXRlLT5zdG9wdGxpID0g Q29udHJvbEZpbGUtPm1pblJlY292ZXJ5UG9pbnRUTEk7Ci0JCUxXTG9ja1JlbGVhc2UoQ29u dHJvbEZpbGVMb2NrKTsKKwkJc3RhdGUtPnN0b3Bwb2ludCA9IHN0YXRlLT5jb250cm9sRmls ZS5taW5SZWNvdmVyeVBvaW50OworCQlzdGF0ZS0+c3RvcHRsaSA9IHN0YXRlLT5jb250cm9s RmlsZS5taW5SZWNvdmVyeVBvaW50VExJOwogCX0KIAllbHNlCiAJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2JhY2t1cC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ2JhY2t1cC5jCmluZGV4IDIxZDY4MTMzYWUxLi43OTU1OWQ3 OGFjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2JhY2t1 cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2diYWNrdXAuYwpAQCAt MTYsNiArMTYsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNj ZXNzL3hsb2dfaW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2JhY2t1cC5oIgor I2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIKIAogLyoKICAqIEJ1aWxkIGNvbnRlbnRzIGZv ciBiYWNrdXBfbGFiZWwgb3IgYmFja3VwIGhpc3RvcnkgZmlsZS4KQEAgLTc2LDYgKzc3LDE3 IEBAIGJ1aWxkX2JhY2t1cF9jb250ZW50KEJhY2t1cFN0YXRlICpzdGF0ZSwgYm9vbCBpc2hp c3RvcnlmaWxlKQogCQlhcHBlbmRTdHJpbmdJbmZvKHJlc3VsdCwgIlNUT1AgVElNRTogJXNc biIsIHN0b3BzdHJmYnVmKTsKIAkJYXBwZW5kU3RyaW5nSW5mbyhyZXN1bHQsICJTVE9QIFRJ TUVMSU5FOiAldVxuIiwgc3RhdGUtPnN0b3B0bGkpOwogCX0KKwkvKiBJbmNsdWRlIGEgY29w eSBvZiBjb250cm9sIGRhdGEgKi8KKwllbHNlCisJeworCQljaGFyIGNvbnRyb2xidWZbKChz aXplb2YoQ29udHJvbEZpbGVEYXRhKSArIDIpIC8gMyAqIDQpICsgMV07CisKKwkJcGdfYjY0 X2VuY29kZSgoY2hhciAqKSZzdGF0ZS0+Y29udHJvbEZpbGUsIHNpemVvZihDb250cm9sRmls ZURhdGEpLAorCQkJCQkgIGNvbnRyb2xidWYsIHNpemVvZihjb250cm9sYnVmKSAtIDEpOwor CQljb250cm9sYnVmW3NpemVvZihjb250cm9sYnVmKSAtIDFdID0gJ1wwJzsKKworCQlhcHBl bmRTdHJpbmdJbmZvKHJlc3VsdCwgIkNPTlRST0wgREFUQTogJXNcbiIsIGNvbnRyb2xidWYp OworCX0KIAogCWRhdGEgPSByZXN1bHQtPmRhdGE7CiAJcGZyZWUocmVzdWx0KTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKaW5kZXggYmVjYzJiZGE2 MmUuLjFhYmQ5NDk0YmYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9ncmVjb3ZlcnkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n cmVjb3ZlcnkuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgImJhY2t1cC9iYXNlYmFj a3VwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAiY29t bWFuZHMvdGFibGVzcGFjZS5oIgorI2luY2x1ZGUgImNvbW1vbi9iYXNlNjQuaCIKICNpbmNs dWRlICJjb21tb24vZmlsZV91dGlscy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2lu Y2x1ZGUgInBnc3RhdC5oIgpAQCAtMzkwLDcgKzM5MSw4IEBAIHN0YXRpYyB2b2lkIHJlYWRS ZWNvdmVyeVNpZ25hbEZpbGUodm9pZCk7CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVJlY292ZXJ5 UGFyYW1ldGVycyh2b2lkKTsKIHN0YXRpYyBib29sIHJlYWRfYmFja3VwX2xhYmVsKFhMb2dS ZWNQdHIgKmNoZWNrUG9pbnRMb2MsCiAJCQkJCQkJICBUaW1lTGluZUlEICpiYWNrdXBMYWJl bFRMSSwKLQkJCQkJCQkgIGJvb2wgKmJhY2t1cEVuZFJlcXVpcmVkLCBib29sICpiYWNrdXBG cm9tU3RhbmRieSk7CisJCQkJCQkJICBib29sICpiYWNrdXBFbmRSZXF1aXJlZCwgYm9vbCAq YmFja3VwRnJvbVN0YW5kYnksCisJCQkJCQkJICBDb250cm9sRmlsZURhdGEgKkNvbnRyb2xG aWxlKTsKIHN0YXRpYyBib29sIHJlYWRfdGFibGVzcGFjZV9tYXAoTGlzdCAqKnRhYmxlc3Bh Y2VzKTsKIAogc3RhdGljIHZvaWQgeGxvZ3JlY292ZXJ5X3JlZG8oWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQsIFRpbWVMaW5lSUQgcmVwbGF5VExJKTsKQEAgLTYxMCw3ICs2MTIsNyBAQCBJ bml0V2FsUmVjb3ZlcnkoQ29udHJvbEZpbGVEYXRhICpDb250cm9sRmlsZSwgYm9vbCAqd2Fz U2h1dGRvd25fcHRyLAogCXByaW1hcnlfaW1hZ2VfbWFza2VkID0gKGNoYXIgKikgcGFsbG9j KEJMQ0tTWik7CiAKIAlpZiAocmVhZF9iYWNrdXBfbGFiZWwoJkNoZWNrUG9pbnRMb2MsICZD aGVja1BvaW50VExJLCAmYmFja3VwRW5kUmVxdWlyZWQsCi0JCQkJCQkgICZiYWNrdXBGcm9t U3RhbmRieSkpCisJCQkJCQkgICZiYWNrdXBGcm9tU3RhbmRieSwgQ29udHJvbEZpbGUpKQog CXsKIAkJTGlzdAkgICAqdGFibGVzcGFjZXMgPSBOSUw7CiAKQEAgLTExNjcsNyArMTE2OSw4 IEBAIHZhbGlkYXRlUmVjb3ZlcnlQYXJhbWV0ZXJzKHZvaWQpCiAgKi8KIHN0YXRpYyBib29s CiByZWFkX2JhY2t1cF9sYWJlbChYTG9nUmVjUHRyICpjaGVja1BvaW50TG9jLCBUaW1lTGlu ZUlEICpiYWNrdXBMYWJlbFRMSSwKLQkJCQkgIGJvb2wgKmJhY2t1cEVuZFJlcXVpcmVkLCBi b29sICpiYWNrdXBGcm9tU3RhbmRieSkKKwkJCQkgIGJvb2wgKmJhY2t1cEVuZFJlcXVpcmVk LCBib29sICpiYWNrdXBGcm9tU3RhbmRieSwKKwkJCQkgIENvbnRyb2xGaWxlRGF0YSAqQ29u dHJvbEZpbGUpCiB7CiAJY2hhcgkJc3RhcnR4bG9nZmlsZW5hbWVbTUFYRk5BTUVMRU5dOwog CVRpbWVMaW5lSUQJdGxpX2Zyb21fd2Fsc2VnLApAQCAtMTE4MCw2ICsxMTgzLDcgQEAgcmVh ZF9iYWNrdXBfbGFiZWwoWExvZ1JlY1B0ciAqY2hlY2tQb2ludExvYywgVGltZUxpbmVJRCAq YmFja3VwTGFiZWxUTEksCiAJY2hhcgkJYmFja3VwdGltZVsxMjhdOwogCXVpbnQzMgkJaGks CiAJCQkJbG87CisJY2hhciAJCWNvbnRyb2xCNjRCdWZbNjg0ICsgMV07CiAKIAkvKiBzdXBw cmVzcyBwb3NzaWJsZSB1bmluaXRpYWxpemVkLXZhcmlhYmxlIHdhcm5pbmdzICovCiAJKmNo ZWNrUG9pbnRMb2MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKQEAgLTEyODUsNiArMTI4OSw1MSBA QCByZWFkX2JhY2t1cF9sYWJlbChYTG9nUmVjUHRyICpjaGVja1BvaW50TG9jLCBUaW1lTGlu ZUlEICpiYWNrdXBMYWJlbFRMSSwKIAkJCQkJCQkJIHRsaV9mcm9tX2ZpbGUsIEJBQ0tVUF9M QUJFTF9GSUxFKSkpOwogCX0KIAorCS8qCisJICogUmVhZCBjb250cm9sIGRhdGEgdG8gYmUg dXNlZCB0byBjcmVhdGUgcGdfY29udHJvbC4gQ29udHJvbCBkYXRhIG1heSBub3QKKwkgKiBl eGlzdCBpZiB0aGUgYmFja3VwIHdhcyBtYWRlIHdpdGggYW4gb2xkZXIgdmVyc2lvbiwgaW4g d2hpY2ggY2FzZSB0aGUKKwkgKiBjb250cm9sIGZpbGUgcmVhZCBmcm9tIGRpc2sgd2lsbCBi ZSB1c2VkLgorCSAqLworCWlmIChmc2NhbmYobGZwLCAiQ09OVFJPTCBEQVRBOiAlNjg0c1xu IiwgY29udHJvbEI2NEJ1ZikgPT0gMSkKKwl7CisJCUNvbnRyb2xGaWxlRGF0YSBjb250cm9s QnVmOworCQlwZ19jcmMzMmMgCQljcmM7CisKKwkJLyogQ2hlY2sgdGhhdCB0aGUgYmFzZTY0 IGRhdGEgaXMgdGhlIGNvcnJlY3QgbGVuZ3RoICovCisJCWlmIChzdHJsZW4oY29udHJvbEI2 NEJ1ZikgIT0gKHNpemVvZihDb250cm9sRmlsZURhdGEpICsgMikgLyAzICogNCkKKwkJCWVy ZXBvcnQoRkFUQUwsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVS RVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJpbnZhbGlkIGRhdGEgaW4gZmlsZSBc IiVzXCIiLCBCQUNLVVBfTEFCRUxfRklMRSksCisJCQkJCSBlcnJkZXRhaWwoIkNvbnRyb2wg ZGF0YSBleHBlY3RlZCAlenUgYmFzZTY0IGNoYXJhY3RlcnMuIiwKKwkJCQkJCQkgICAoc2l6 ZW9mKENvbnRyb2xGaWxlRGF0YSkgKyAyKSAvIDMgKiA0KSkpOworCisJCS8qIERlY29kZSBj b250cm9sIGZpbGUgKi8KKwkJaWYgKHBnX2I2NF9kZWNvZGUoY29udHJvbEI2NEJ1Ziwgc3Ry bGVuKGNvbnRyb2xCNjRCdWYpLCAoY2hhciAqKSZjb250cm9sQnVmLAorCQkgICAgICAgICAg ICAgICAgICBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSkgPT0gLTEpCisJCQllcmVwb3J0KEZB VEFMLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJIGVycm1zZygiaW52YWxpZCBkYXRhIGluIGZpbGUgXCIlc1wiIiwg QkFDS1VQX0xBQkVMX0ZJTEUpLAorCQkJCQkgZXJyZGV0YWlsKCJDb250cm9sIGRhdGEgY29u dGFpbnMgaW52YWxpZCBiYXNlNjQgZW5jb2RpbmcuIikpKTsKKworCQkvKiBDUkMgY2hlY2sg b24gc3RvcmVkIGNvbnRyb2wgZmlsZSAqLworCQlJTklUX0NSQzMyQyhjcmMpOworCQlDT01Q X0NSQzMyQyhjcmMsIChjaGFyICopJmNvbnRyb2xCdWYsIG9mZnNldG9mKENvbnRyb2xGaWxl RGF0YSwgY3JjKSk7CisJCUZJTl9DUkMzMkMoY3JjKTsKKworCQlpZiAoIUVRX0NSQzMyQyhj cmMsIGNvbnRyb2xCdWYuY3JjKSkKKwkJCWVyZXBvcnQoRkFUQUwsCisJCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJy bXNnKCJpbnZhbGlkIGRhdGEgaW4gZmlsZSBcIiVzXCIiLCBCQUNLVVBfTEFCRUxfRklMRSks CisJCQkJCSBlcnJkZXRhaWwoIkNvbnRyb2wgZGF0YSBjb250YWlucyBpbnZhbGlkIENSQy4i KSkpOworCisJCWVyZXBvcnQoREVCVUcxLAorCQkJCShlcnJtc2dfaW50ZXJuYWwoImJhY2t1 cCBjb250cm9sIGRhdGEgaW4gZmlsZSBcIiVzXCIiLAorCQkJCQkJCQkgQkFDS1VQX0xBQkVM X0ZJTEUpKSk7CisKKwkJLyogQ29weSBjb250cm9sIGRhdGEgKi8KKwkJbWVtY3B5KENvbnRy b2xGaWxlLCAmY29udHJvbEJ1Ziwgc2l6ZW9mKENvbnRyb2xGaWxlRGF0YSkpOworCX0KKwog CWlmIChmZXJyb3IobGZwKSB8fCBGcmVlRmlsZShsZnApKQogCQllcmVwb3J0KEZBVEFMLAog CQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYmFja3VwL2Jhc2ViYWNrdXAuYyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNlYmFja3Vw LmMKaW5kZXggN2QwMjViY2YzODIuLmY0OWRhYmY2M2VmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9iYWNrdXAvYmFzZWJhY2t1cC5jCisrKyBiL3NyYy9iYWNrZW5kL2JhY2t1cC9iYXNl YmFja3VwLmMKQEAgLTMzMCwxMyArMzMwLDcgQEAgcGVyZm9ybV9iYXNlX2JhY2t1cChiYXNl YmFja3VwX29wdGlvbnMgKm9wdCwgYmJzaW5rICpzaW5rKQogCiAJCQkJYmJzaW5rX2JlZ2lu X2FyY2hpdmUoc2luaywgImJhc2UudGFyIik7CiAKLQkJCQkvKiBJbiB0aGUgbWFpbiB0YXIs IGluY2x1ZGUgdGhlIGJhY2t1cF9sYWJlbCBmaXJzdC4uLiAqLwotCQkJCWJhY2t1cF9sYWJl bCA9IGJ1aWxkX2JhY2t1cF9jb250ZW50KGJhY2t1cF9zdGF0ZSwgZmFsc2UpOwotCQkJCXNl bmRGaWxlV2l0aENvbnRlbnQoc2luaywgQkFDS1VQX0xBQkVMX0ZJTEUsCi0JCQkJCQkJCQli YWNrdXBfbGFiZWwsICZtYW5pZmVzdCk7Ci0JCQkJcGZyZWUoYmFja3VwX2xhYmVsKTsKLQot CQkJCS8qIFRoZW4gdGhlIHRhYmxlc3BhY2VfbWFwIGZpbGUsIGlmIHJlcXVpcmVkLi4uICov CisJCQkJLyogU2VuZCB0aGUgdGFibGVzcGFjZV9tYXAgZmlsZSwgaWYgcmVxdWlyZWQuLi4g Ki8KIAkJCQlpZiAob3B0LT5zZW5kdGJsc3BjbWFwZmlsZSkKIAkJCQl7CiAJCQkJCXNlbmRG aWxlV2l0aENvbnRlbnQoc2luaywgVEFCTEVTUEFDRV9NQVAsCkBAIC0zNDgsNyArMzQyLDcg QEAgcGVyZm9ybV9iYXNlX2JhY2t1cChiYXNlYmFja3VwX29wdGlvbnMgKm9wdCwgYmJzaW5r ICpzaW5rKQogCQkJCXNlbmREaXIoc2luaywgIi4iLCAxLCBmYWxzZSwgc3RhdGUudGFibGVz cGFjZXMsCiAJCQkJCQlzZW5kdGJsc3BjbGlua3MsICZtYW5pZmVzdCwgTlVMTCk7CiAKLQkJ CQkvKiAuLi4gYW5kIHBnX2NvbnRyb2wgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLiAqLworCQkJ CS8qIC4uLiBhbmQgcGdfY29udHJvbCBhZnRlciBldmVyeXRoaW5nIGJ1dCBiYWNrdXBfbGFi ZWwgKi8KIAkJCQlpZiAobHN0YXQoWExPR19DT05UUk9MX0ZJTEUsICZzdGF0YnVmKSAhPSAw KQogCQkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2Vz cygpLApAQCAtMzU2LDYgKzM1MCwxNiBAQCBwZXJmb3JtX2Jhc2VfYmFja3VwKGJhc2ViYWNr dXBfb3B0aW9ucyAqb3B0LCBiYnNpbmsgKnNpbmspCiAJCQkJCQkJCQlYTE9HX0NPTlRST0xf RklMRSkpKTsKIAkJCQlzZW5kRmlsZShzaW5rLCBYTE9HX0NPTlRST0xfRklMRSwgWExPR19D T05UUk9MX0ZJTEUsICZzdGF0YnVmLAogCQkJCQkJIGZhbHNlLCBJbnZhbGlkT2lkLCAmbWFu aWZlc3QsIE5VTEwpOworCisJCQkJLyogRW5kIHRoZSBiYWNrdXAgYmVmb3JlIHNlbmRpbmcg YmFja3VwX2xhYmVsICovCisJCQkJYmFzZWJhY2t1cF9wcm9ncmVzc193YWl0X3dhbF9hcmNo aXZlKCZzdGF0ZSk7CisJCQkJZG9fcGdfYmFja3VwX3N0b3AoYmFja3VwX3N0YXRlLCAhb3B0 LT5ub3dhaXQpOworCisJCQkJLyogTGFzdCBpbiB0aGUgbWFpbiB0YXIsIGluY2x1ZGUgYmFj a3VwX2xhYmVsICovCisJCQkJYmFja3VwX2xhYmVsID0gYnVpbGRfYmFja3VwX2NvbnRlbnQo YmFja3VwX3N0YXRlLCBmYWxzZSk7CisJCQkJc2VuZEZpbGVXaXRoQ29udGVudChzaW5rLCBC QUNLVVBfTEFCRUxfRklMRSwKKwkJCQkJCQkJCWJhY2t1cF9sYWJlbCwgJm1hbmlmZXN0KTsK KwkJCQlwZnJlZShiYWNrdXBfbGFiZWwpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzg5 LDkgKzM5Myw2IEBAIHBlcmZvcm1fYmFzZV9iYWNrdXAoYmFzZWJhY2t1cF9vcHRpb25zICpv cHQsIGJic2luayAqc2luaykKIAkJCX0KIAkJfQogCi0JCWJhc2ViYWNrdXBfcHJvZ3Jlc3Nf d2FpdF93YWxfYXJjaGl2ZSgmc3RhdGUpOwotCQlkb19wZ19iYWNrdXBfc3RvcChiYWNrdXBf c3RhdGUsICFvcHQtPm5vd2FpdCk7Ci0KIAkJZW5kcHRyID0gYmFja3VwX3N0YXRlLT5zdG9w cG9pbnQ7CiAJCWVuZHRsaSA9IGJhY2t1cF9zdGF0ZS0+c3RvcHRsaTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2diYWNrdXAuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy94bG9nYmFja3VwLmgKaW5kZXggMTYxMTM1ODEzN2IuLmJkNTM0MDU2NzBlIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ2JhY2t1cC5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy94bG9nYmFja3VwLmgKQEAgLTE1LDYgKzE1LDcgQEAKICNkZWZpbmUgWExPR19C QUNLVVBfSAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jb250cm9sLmgiCiAjaW5jbHVkZSAicGd0aW1lLmgiCiAKIC8qIFN0cnVjdHVy ZSB0byBob2xkIGJhY2t1cCBzdGF0ZS4gKi8KQEAgLTMzLDYgKzM0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgQmFja3VwU3RhdGUKIAlYTG9nUmVjUHRyCXN0b3Bwb2ludDsJCS8qIGJhY2t1cCBz dG9wIFdBTCBsb2NhdGlvbiAqLwogCVRpbWVMaW5lSUQJc3RvcHRsaTsJCS8qIGJhY2t1cCBz dG9wIFRMSSAqLwogCXBnX3RpbWVfdAlzdG9wdGltZTsJCS8qIGJhY2t1cCBzdG9wIHRpbWUg Ki8KKwlDb250cm9sRmlsZURhdGEgY29udHJvbEZpbGU7CS8qIENvcHkgb2YgY29udHJvbCBk YXRhICovCiB9IEJhY2t1cFN0YXRlOwogCiBleHRlcm4gY2hhciAqYnVpbGRfYmFja3VwX2Nv bnRlbnQoQmFja3VwU3RhdGUgKnN0YXRlLAo= --------------FUcve0vldrb0YN8WB8Jz97ZM--