Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ldqG4-00046Y-36 for pgsql-hackers@arkaria.postgresql.org; Tue, 04 May 2021 08:18:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ldqG1-0008IR-VP for pgsql-hackers@arkaria.postgresql.org; Tue, 04 May 2021 08:18:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ldqG1-0008IJ-D5 for pgsql-hackers@lists.postgresql.org; Tue, 04 May 2021 08:18:17 +0000 Received: from smtp-fw-9102.amazon.com ([207.171.184.29]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ldqFu-0003Cl-6g for pgsql-hackers@postgresql.org; Tue, 04 May 2021 08:18:16 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1620116290; x=1651652290; h=to:cc:references:from:message-id:date:mime-version: in-reply-to:subject; bh=2jM9C6nGr8uhZiecqeheyr8IqQyiHU+/QIud4D7tpSI=; b=BaPPlp1yDVCsJ3P2ZEkxKqkzeUbGnWVTN66o5qW/c7qInkoUrDjOfn1h 2KQYjqhs/6HKW0umQxYs5gOUpVFNrhqK8Wzy/ObWF4TqWwBiJfGCRgrFr EPEyPhGAMmr57EQpPU7pnCIK19F/NraYhF+FCxwqViC9UIeHzjDqPb1gl Y=; X-Amazon-filename: v1-0001-pg-upgrade-keep-oldestxid.patch X-IronPort-AV: E=Sophos;i="5.82,271,1613433600"; d="scan'208,217";a="132860795" Subject: Re: pg_upgrade can result in early wraparound on databases with high transaction load Received: from pdx4-co-svc-p1-lb2-vlan2.amazon.com (HELO email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com) ([10.25.36.210]) by smtp-border-fw-9102.sea19.amazon.com with ESMTP; 04 May 2021 08:18:01 +0000 Received: from EX13D03EUC003.ant.amazon.com (iad12-ws-svc-p26-lb9-vlan2.iad.amazon.com [10.40.163.34]) by email-inbound-relay-1a-7d76a15f.us-east-1.amazon.com (Postfix) with ESMTPS id 11D5FA1079; Tue, 4 May 2021 08:17:57 +0000 (UTC) Received: from 38f9d36c4abb.ant.amazon.com (10.43.161.29) by EX13D03EUC003.ant.amazon.com (10.43.164.192) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Tue, 4 May 2021 08:17:53 +0000 To: Andres Freund , Justin Pryzby CC: Noah Misch , Tom Lane , Bruce Momjian , Jason Harvey , Peter Geoghegan , "Tharakan, Robins" , References: <20190615183759.GB239428@rfd.leadboat.com> <20210423234256.hwopuftipdmp3okf@alap3.anarazel.de> <20210424002827.GO7256@telsasoft.com> <20210424010005.fttcfskp3unr4jiu@alap3.anarazel.de> From: "Drouvot, Bertrand" Message-ID: Date: Tue, 4 May 2021 10:17:49 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.0 MIME-Version: 1.0 In-Reply-To: <20210424010005.fttcfskp3unr4jiu@alap3.anarazel.de> Content-Type: multipart/mixed; boundary="------------956596FC97AB25F70AB05B81" Content-Language: en-US X-Originating-IP: [10.43.161.29] X-ClientProxiedBy: EX13D05UWB004.ant.amazon.com (10.43.161.208) To EX13D03EUC003.ant.amazon.com (10.43.164.192) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --------------956596FC97AB25F70AB05B81 Content-Type: multipart/alternative; boundary="------------F2C626C7CDABD286CF7FBA69" --------------F2C626C7CDABD286CF7FBA69 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Hi, On 4/24/21 3:00 AM, Andres Freund wrote: > Hi, > > On 2021-04-23 19:28:27 -0500, Justin Pryzby wrote: >> This (combination of) thread(s) seems relevant. >> >> Subject: pg_upgrade failing for 200+ million Large Objects >> https://www.postgresql.org/message-id/flat/12601596dbbc4c01b86b4ac4d2bd4d48%40EX13D05UWC001.ant.amazon.com >> https://www.postgresql.org/message-id/flat/a9f9376f1c3343a6bb319dce294e20ac%40EX13D05UWC001.ant.amazon.com >> https://www.postgresql.org/message-id/flat/cc089cc3-fc43-9904-fdba-d830d8222145%40enterprisedb.com#3eec85391c6076a4913e96a86fece75e > Huh. Thanks for digging these up. > > >>> Allows the user to provide a constant via pg_upgrade command-line, that >>> overrides the 2 billion constant in pg_resetxlog [1] thereby increasing the >>> (window of) Transaction IDs available for pg_upgrade to complete. > That seems the entirely the wrong approach to me, buying further into > the broken idea of inventing random wrong values for oldestXid. > > We drive important things like the emergency xid limits off oldestXid. On > databases with tables that are older than ~147million xids (i.e. not even > affected by the default autovacuum_freeze_max_age) the current constant leads > to setting the oldestXid to a value *in the future*/wrapped around. Any > different different constant (or pg_upgrade parameter) will do that too in > other scenarios. > > As far as I can tell there is precisely *no* correct behaviour here other than > exactly copying the oldestXid limit from the source database. > Please find attached a patch proposal doing so: it adds a new (- u) parameter to pg_resetwal that allows to specify the oldest unfrozen XID to set. Then this new parameter is being used in pg_upgrade to copy the source Latest checkpoint's oldestXID. Questions: * Should we keep the old behavior in case -x is being used without -u? (The proposed patch does not set an arbitrary oldestXID anymore in case -x is used.) * Also shouldn't we ensure that the xid provided with -x or -u is >= FirstNormalTransactionId (Currently the only check is that it is # 0)? I'm adding this patch to the commitfest. Bertrand --------------F2C626C7CDABD286CF7FBA69 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: 7bit

Hi,

On 4/24/21 3:00 AM, Andres Freund wrote:
Hi,

On 2021-04-23 19:28:27 -0500, Justin Pryzby wrote:
This (combination of) thread(s) seems relevant.

Subject: pg_upgrade failing for 200+ million Large Objects
https://www.postgresql.org/message-id/flat/12601596dbbc4c01b86b4ac4d2bd4d48%40EX13D05UWC001.ant.amazon.com
https://www.postgresql.org/message-id/flat/a9f9376f1c3343a6bb319dce294e20ac%40EX13D05UWC001.ant.amazon.com
https://www.postgresql.org/message-id/flat/cc089cc3-fc43-9904-fdba-d830d8222145%40enterprisedb.com#3eec85391c6076a4913e96a86fece75e
Huh. Thanks for digging these up.


Allows the user to provide a constant via pg_upgrade command-line, that
overrides the 2 billion constant in pg_resetxlog [1] thereby increasing the
(window of) Transaction IDs available for pg_upgrade to complete.
That seems the entirely the wrong approach to me, buying further into
the broken idea of inventing random wrong values for oldestXid.

We drive important things like the emergency xid limits off oldestXid. On
databases with tables that are older than ~147million xids (i.e. not even
affected by the default autovacuum_freeze_max_age) the current constant leads
to setting the oldestXid to a value *in the future*/wrapped around. Any
different different constant (or pg_upgrade parameter) will do that too in
other scenarios.

As far as I can tell there is precisely *no* correct behaviour here other than
exactly copying the oldestXid limit from the source database.

Please find attached a patch proposal doing so: it adds a new (- u) parameter to pg_resetwal that allows to specify the oldest unfrozen XID to set.
Then this new parameter is being used in pg_upgrade to copy the source Latest checkpoint's oldestXID.

Questions:

  • Should we keep the old behavior in case -x is being used without -u? (The proposed patch does not set an arbitrary oldestXID anymore in case -x is used.)
  • Also shouldn't we ensure that the xid provided with -x or -u is >= FirstNormalTransactionId (Currently the only check is that it is # 0)?

I'm adding this patch to the commitfest.

Bertrand

--------------F2C626C7CDABD286CF7FBA69-- --------------956596FC97AB25F70AB05B81 Content-Type: text/plain; charset="UTF-8"; x-mac-type=0; x-mac-creator=0; name="v1-0001-pg-upgrade-keep-oldestxid.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-pg-upgrade-keep-oldestxid.patch" IHNyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYyB8IDYxICsrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ191cGdyYWRlL2NvbnRyb2xk YXRhLmMgIHwgMTcgKysrKysrKysrKy0KIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRl LmMgICB8ICA2ICsrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICB8ICAx ICsKIDQgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjcgZGVsZXRpb25zKC0p CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMv YmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXggODA1ZGFmZWYwNy4uNjZjNzQ2 ZGUxMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCisr KyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvcGdfcmVzZXR3YWwuYwpAQCAtNjUsNiArNjUsNyBA QCBzdGF0aWMgYm9vbCBndWVzc2VkID0gZmFsc2U7CS8qIFQgaWYgd2UgaGFkIHRvIGd1ZXNz IGF0IGFueSB2YWx1ZXMgKi8KIHN0YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKIHN0YXRp YyB1aW50MzIgc2V0X3hpZF9lcG9jaCA9ICh1aW50MzIpIC0xOwogc3RhdGljIFRyYW5zYWN0 aW9uSWQgc2V0X3hpZCA9IDA7CitzdGF0aWMgVHJhbnNhY3Rpb25JZCBzZXRfb2xkZXN0X3Vu ZnJvemVuX3hpZCA9IDA7CiBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzZXRfb2xkZXN0X2NvbW1p dF90c194aWQgPSAwOwogc3RhdGljIFRyYW5zYWN0aW9uSWQgc2V0X25ld2VzdF9jb21taXRf dHNfeGlkID0gMDsKIHN0YXRpYyBPaWQJc2V0X29pZCA9IDA7CkBAIC0xMDIsNiArMTAzLDcg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQl7Im5leHQtb2lkIiwgcmVxdWly ZWRfYXJndW1lbnQsIE5VTEwsICdvJ30sCiAJCXsibXVsdGl4YWN0LW9mZnNldCIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCAnTyd9LAogCQl7Im5leHQtdHJhbnNhY3Rpb24taWQiLCBy ZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnfSwKKwkJeyJvbGRlc3QtdHJhbnNhY3Rpb24t aWQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKIAkJeyJ3YWwtc2Vnc2l6ZSIs IHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAxfSwKIAkJe05VTEwsIDAsIE5VTEwsIDB9CiAJ fTsKQEAgLTEzNSw3ICsxMzcsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJ fQogCiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYzpEOmU6Zmw6 bTpubzpPOng6IiwgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpCisJd2hpbGUgKChjID0g Z2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImM6RDplOmZsOm06bm86Tzp4OnU6IiwgbG9uZ19v cHRpb25zLCBOVUxMKSkgIT0gLTEpCiAJewogCQlzd2l0Y2ggKGMpCiAJCXsKQEAgLTE4Myw2 ICsxODUsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCX0KIAkJCQli cmVhazsKIAorCQkJY2FzZSAndSc6CisJCQkJc2V0X29sZGVzdF91bmZyb3plbl94aWQgPSBz dHJ0b3VsKG9wdGFyZywgJmVuZHB0ciwgMCk7CisJCQkJaWYgKGVuZHB0ciA9PSBvcHRhcmcg fHwgKmVuZHB0ciAhPSAnXDAnKQorCQkJCXsKKwkJCQkJcGdfbG9nX2Vycm9yKCJpbnZhbGlk IGFyZ3VtZW50IGZvciBvcHRpb24gJXMiLCAiLXUiKTsKKwkJCQkJZnByaW50ZihzdGRlcnIs IF8oIlRyeSBcIiVzIC0taGVscFwiIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIHByb2du YW1lKTsKKwkJCQkJZXhpdCgxKTsKKwkJCQl9CisJCQkJaWYgKHNldF9vbGRlc3RfdW5mcm96 ZW5feGlkID09IDApCisJCQkJeworCQkJCQlwZ19sb2dfZXJyb3IoIm9sZGVzdCB1bmZyb3pl biB0cmFuc2FjdGlvbiBJRCAoLXUpIG11c3Qgbm90IGJlIDAiKTsKKwkJCQkJZXhpdCgxKTsK KwkJCQl9CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgJ2MnOgogCQkJCXNldF9vbGRlc3RfY29t bWl0X3RzX3hpZCA9IHN0cnRvdWwob3B0YXJnLCAmZW5kcHRyLCAwKTsKIAkJCQlpZiAoZW5k cHRyID09IG9wdGFyZyB8fCAqZW5kcHRyICE9ICcsJykKQEAgLTQyOSwyMSArNDQ2LDEyIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCQkJCQkJCQkJIFhpZEZyb21GdWxs VHJhbnNhY3Rpb25JZChDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0WGlkKSk7CiAK IAlpZiAoc2V0X3hpZCAhPSAwKQotCXsKIAkJQ29udHJvbEZpbGUuY2hlY2tQb2ludENvcHku bmV4dFhpZCA9CiAJCQlGdWxsVHJhbnNhY3Rpb25JZEZyb21FcG9jaEFuZFhpZChFcG9jaEZy b21GdWxsVHJhbnNhY3Rpb25JZChDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5uZXh0WGlk KSwKIAkJCQkJCQkJCQkJIHNldF94aWQpOwogCi0JCS8qCi0JCSAqIEZvciB0aGUgbW9tZW50 LCBqdXN0IHNldCBvbGRlc3RYaWQgdG8gYSB2YWx1ZSB0aGF0IHdpbGwgZm9yY2UKLQkJICog aW1tZWRpYXRlIGF1dG92YWN1dW0tZm9yLXdyYXBhcm91bmQuICBJdCdzIG5vdCBjbGVhciB3 aGV0aGVyIGFkZGluZwotCQkgKiB1c2VyIGNvbnRyb2wgb2YgdGhpcyBpcyB1c2VmdWwsIHNv IGxldCdzIGp1c3QgZG8gc29tZXRoaW5nIHRoYXQncwotCQkgKiByZWFzb25hYmx5IHNhZmUu ICBUaGUgbWFnaWMgY29uc3RhbnQgaGVyZSBjb3JyZXNwb25kcyB0byB0aGUKLQkJICogbWF4 aW11bSBhbGxvd2VkIHZhbHVlIG9mIGF1dG92YWN1dW1fZnJlZXplX21heF9hZ2UuCi0JCSAq LwotCQlDb250cm9sRmlsZS5jaGVja1BvaW50Q29weS5vbGRlc3RYaWQgPSBzZXRfeGlkIC0g MjAwMDAwMDAwMDsKLQkJaWYgKENvbnRyb2xGaWxlLmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhp ZCA8IEZpcnN0Tm9ybWFsVHJhbnNhY3Rpb25JZCkKLQkJCUNvbnRyb2xGaWxlLmNoZWNrUG9p bnRDb3B5Lm9sZGVzdFhpZCArPSBGaXJzdE5vcm1hbFRyYW5zYWN0aW9uSWQ7CisJaWYgKHNl dF9vbGRlc3RfdW5mcm96ZW5feGlkICE9IDApIHsKKwkJQ29udHJvbEZpbGUuY2hlY2tQb2lu dENvcHkub2xkZXN0WGlkID0gc2V0X29sZGVzdF91bmZyb3plbl94aWQ7CiAJCUNvbnRyb2xG aWxlLmNoZWNrUG9pbnRDb3B5Lm9sZGVzdFhpZERCID0gSW52YWxpZE9pZDsKIAl9CiAKQEAg LTEyMDksMjAgKzEyMTcsMjEgQEAgdXNhZ2Uodm9pZCkKIAlwcmludGYoXygiVXNhZ2U6XG4g ICVzIFtPUFRJT05dLi4uIERBVEFESVJcblxuIiksIHByb2duYW1lKTsKIAlwcmludGYoXygi T3B0aW9uczpcbiIpKTsKIAlwcmludGYoXygiICAtYywgLS1jb21taXQtdGltZXN0YW1wLWlk cz1YSUQsWElEXG4iCi0JCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl dCBvbGRlc3QgYW5kIG5ld2VzdCB0cmFuc2FjdGlvbnMgYmVhcmluZ1xuIgotCQkJICIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQgdGltZXN0YW1wICh6ZXJvIG1l YW5zIG5vIGNoYW5nZSlcbiIpKTsKLQlwcmludGYoXygiIFstRCwgLS1wZ2RhdGE9XURBVEFE SVIgICAgICAgICAgZGF0YSBkaXJlY3RvcnlcbiIpKTsKLQlwcmludGYoXygiICAtZSwgLS1l cG9jaD1YSURFUE9DSCAgICAgICAgICAgc2V0IG5leHQgdHJhbnNhY3Rpb24gSUQgZXBvY2hc biIpKTsKLQlwcmludGYoXygiICAtZiwgLS1mb3JjZSAgICAgICAgICAgICAgICAgICAgZm9y Y2UgdXBkYXRlIHRvIGJlIGRvbmVcbiIpKTsKLQlwcmludGYoXygiICAtbCwgLS1uZXh0LXdh bC1maWxlPVdBTEZJTEUgICAgc2V0IG1pbmltdW0gc3RhcnRpbmcgbG9jYXRpb24gZm9yIG5l dyBXQUxcbiIpKTsKLQlwcmludGYoXygiICAtbSwgLS1tdWx0aXhhY3QtaWRzPU1YSUQsTVhJ RCAgc2V0IG5leHQgYW5kIG9sZGVzdCBtdWx0aXRyYW5zYWN0aW9uIElEXG4iKSk7Ci0JcHJp bnRmKF8oIiAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgICAgICAgIG5vIHVwZGF0ZSwganVz dCBzaG93IHdoYXQgd291bGQgYmUgZG9uZVxuIikpOwotCXByaW50ZihfKCIgIC1vLCAtLW5l eHQtb2lkPU9JRCAgICAgICAgICAgICBzZXQgbmV4dCBPSURcbiIpKTsKLQlwcmludGYoXygi ICAtTywgLS1tdWx0aXhhY3Qtb2Zmc2V0PU9GRlNFVCAgc2V0IG5leHQgbXVsdGl0cmFuc2Fj dGlvbiBvZmZzZXRcbiIpKTsKLQlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAgICAgICAg ICAgICAgICAgb3V0cHV0IHZlcnNpb24gaW5mb3JtYXRpb24sIHRoZW4gZXhpdFxuIikpOwot CXByaW50ZihfKCIgIC14LCAtLW5leHQtdHJhbnNhY3Rpb24taWQ9WElEICBzZXQgbmV4dCB0 cmFuc2FjdGlvbiBJRFxuIikpOwotCXByaW50ZihfKCIgICAgICAtLXdhbC1zZWdzaXplPVNJ WkUgICAgICAgICBzaXplIG9mIFdBTCBzZWdtZW50cywgaW4gbWVnYWJ5dGVzXG4iKSk7Ci0J cHJpbnRmKF8oIiAgLT8sIC0taGVscCAgICAgICAgICAgICAgICAgICAgIHNob3cgdGhpcyBo ZWxwLCB0aGVuIGV4aXRcbiIpKTsKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXQgb2xkZXN0IGFuZCBuZXdlc3QgdHJhbnNhY3Rpb25zIGJlYXJpbmdcbiIK KwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21taXQgdGltZXN0 YW1wICh6ZXJvIG1lYW5zIG5vIGNoYW5nZSlcbiIpKTsKKwlwcmludGYoXygiIFstRCwgLS1w Z2RhdGE9XURBVEFESVIgICAgICAgICAgICBkYXRhIGRpcmVjdG9yeVxuIikpOworCXByaW50 ZihfKCIgIC1lLCAtLWVwb2NoPVhJREVQT0NIICAgICAgICAgICAgIHNldCBuZXh0IHRyYW5z YWN0aW9uIElEIGVwb2NoXG4iKSk7CisJcHJpbnRmKF8oIiAgLWYsIC0tZm9yY2UgICAgICAg ICAgICAgICAgICAgICAgZm9yY2UgdXBkYXRlIHRvIGJlIGRvbmVcbiIpKTsKKwlwcmludGYo XygiICAtbCwgLS1uZXh0LXdhbC1maWxlPVdBTEZJTEUgICAgICBzZXQgbWluaW11bSBzdGFy dGluZyBsb2NhdGlvbiBmb3IgbmV3IFdBTFxuIikpOworCXByaW50ZihfKCIgIC1tLCAtLW11 bHRpeGFjdC1pZHM9TVhJRCxNWElEICAgIHNldCBuZXh0IGFuZCBvbGRlc3QgbXVsdGl0cmFu c2FjdGlvbiBJRFxuIikpOworCXByaW50ZihfKCIgIC1uLCAtLWRyeS1ydW4gICAgICAgICAg ICAgICAgICAgIG5vIHVwZGF0ZSwganVzdCBzaG93IHdoYXQgd291bGQgYmUgZG9uZVxuIikp OworCXByaW50ZihfKCIgIC1vLCAtLW5leHQtb2lkPU9JRCAgICAgICAgICAgICAgIHNldCBu ZXh0IE9JRFxuIikpOworCXByaW50ZihfKCIgIC1PLCAtLW11bHRpeGFjdC1vZmZzZXQ9T0ZG U0VUICAgIHNldCBuZXh0IG11bHRpdHJhbnNhY3Rpb24gb2Zmc2V0XG4iKSk7CisJcHJpbnRm KF8oIiAgLXUsIC0tb2xkZXN0LXRyYW5zYWN0aW9uLWlkPVhJRCAgc2V0IG9sZGVzdCB1bmZy b3plbiB0cmFuc2FjdGlvbiBJRFxuIikpOworCXByaW50ZihfKCIgIC1WLCAtLXZlcnNpb24g ICAgICAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4 aXRcbiIpKTsKKwlwcmludGYoXygiICAteCwgLS1uZXh0LXRyYW5zYWN0aW9uLWlkPVhJRCAg ICBzZXQgbmV4dCB0cmFuc2FjdGlvbiBJRFxuIikpOworCXByaW50ZihfKCIgICAgICAtLXdh bC1zZWdzaXplPVNJWkUgICAgICAgICAgIHNpemUgb2YgV0FMIHNlZ21lbnRzLCBpbiBtZWdh Ynl0ZXNcbiIpKTsKKwlwcmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAg ICAgICBzaG93IHRoaXMgaGVscCwgdGhlbiBleGl0XG4iKSk7CiAJcHJpbnRmKF8oIlxuUmVw b3J0IGJ1Z3MgdG8gPCVzPi5cbiIpLCBQQUNLQUdFX0JVR1JFUE9SVCk7CiAJcHJpbnRmKF8o IiVzIGhvbWUgcGFnZTogPCVzPlxuIiksIFBBQ0tBR0VfTkFNRSwgUEFDS0FHRV9VUkwpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL2NvbnRyb2xkYXRhLmMgYi9zcmMv YmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYwppbmRleCA0ZjY0N2NkZjMzLi5hNGI2Mzc1 NDAzIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYworKysg Yi9zcmMvYmluL3BnX3VwZ3JhZGUvY29udHJvbGRhdGEuYwpAQCAtNDQsNiArNDQsNyBAQCBn ZXRfY29udHJvbF9kYXRhKENsdXN0ZXJJbmZvICpjbHVzdGVyLCBib29sIGxpdmVfY2hlY2sp CiAJYm9vbAkJZ290X29pZCA9IGZhbHNlOwogCWJvb2wJCWdvdF9tdWx0aSA9IGZhbHNlOwog CWJvb2wJCWdvdF9vbGRlc3RtdWx0aSA9IGZhbHNlOworCWJvb2wJCWdvdF9vbGRlc3R4aWQg PSBmYWxzZTsKIAlib29sCQlnb3RfbXhvZmYgPSBmYWxzZTsKIAlib29sCQlnb3RfbmV4dHhs b2dmaWxlID0gZmFsc2U7CiAJYm9vbAkJZ290X2Zsb2F0OF9wYXNzX2J5X3ZhbHVlID0gZmFs c2U7CkBAIC0zMTIsNiArMzEzLDE3IEBAIGdldF9jb250cm9sX2RhdGEoQ2x1c3RlckluZm8g KmNsdXN0ZXIsIGJvb2wgbGl2ZV9jaGVjaykKIAkJCWNsdXN0ZXItPmNvbnRyb2xkYXRhLmNo a3BudF9ueHRtdWx0aSA9IHN0cjJ1aW50KHApOwogCQkJZ290X211bHRpID0gdHJ1ZTsKIAkJ fQorCQllbHNlIGlmICgocCA9IHN0cnN0cihidWZpbiwgIkxhdGVzdCBjaGVja3BvaW50J3Mg b2xkZXN0WElEOiIpKSAhPSBOVUxMKQorCQl7CisJCQlwID0gc3RyY2hyKHAsICc6Jyk7CisK KwkJCWlmIChwID09IE5VTEwgfHwgc3RybGVuKHApIDw9IDEpCisJCQkJcGdfZmF0YWwoIiVk OiBjb250cm9sZGF0YSByZXRyaWV2YWwgcHJvYmxlbVxuIiwgX19MSU5FX18pOworCisJCQlw Kys7CQkJCS8qIHJlbW92ZSAnOicgY2hhciAqLworCQkJY2x1c3Rlci0+Y29udHJvbGRhdGEu Y2hrcG50X29sZHN0eGlkID0gc3RyMnVpbnQocCk7CisJCQlnb3Rfb2xkZXN0eGlkID0gdHJ1 ZTsKKwkJfQogCQllbHNlIGlmICgocCA9IHN0cnN0cihidWZpbiwgIkxhdGVzdCBjaGVja3Bv aW50J3Mgb2xkZXN0TXVsdGlYaWQ6IikpICE9IE5VTEwpCiAJCXsKIAkJCXAgPSBzdHJjaHIo cCwgJzonKTsKQEAgLTU0NCw3ICs1NTYsNyBAQCBnZXRfY29udHJvbF9kYXRhKENsdXN0ZXJJ bmZvICpjbHVzdGVyLCBib29sIGxpdmVfY2hlY2spCiAKIAkvKiB2ZXJpZnkgdGhhdCB3ZSBn b3QgYWxsIHRoZSBtYW5kYXRvcnkgcGdfY29udHJvbCBkYXRhICovCiAJaWYgKCFnb3RfeGlk IHx8ICFnb3Rfb2lkIHx8Ci0JCSFnb3RfbXVsdGkgfHwKKwkJIWdvdF9tdWx0aSB8fCAhZ290 X29sZGVzdHhpZCB8fAogCQkoIWdvdF9vbGRlc3RtdWx0aSAmJgogCQkgY2x1c3Rlci0+Y29u dHJvbGRhdGEuY2F0X3ZlciA+PSBNVUxUSVhBQ1RfRk9STUFUQ0hBTkdFX0NBVF9WRVIpIHx8 CiAJCSFnb3RfbXhvZmYgfHwgKCFsaXZlX2NoZWNrICYmICFnb3RfbmV4dHhsb2dmaWxlKSB8 fApAQCAtNTc1LDYgKzU4Nyw5IEBAIGdldF9jb250cm9sX2RhdGEoQ2x1c3RlckluZm8gKmNs dXN0ZXIsIGJvb2wgbGl2ZV9jaGVjaykKIAkJCWNsdXN0ZXItPmNvbnRyb2xkYXRhLmNhdF92 ZXIgPj0gTVVMVElYQUNUX0ZPUk1BVENIQU5HRV9DQVRfVkVSKQogCQkJcGdfbG9nKFBHX1JF UE9SVCwgIiAgbGF0ZXN0IGNoZWNrcG9pbnQgb2xkZXN0IE11bHRpWGFjdElkXG4iKTsKIAor CQlpZiAoIWdvdF9vbGRlc3R4aWQpCisJCQlwZ19sb2coUEdfUkVQT1JULCAiICBsYXRlc3Qg Y2hlY2twb2ludCBvbGRlc3RYSURcbiIpOworCiAJCWlmICghZ290X214b2ZmKQogCQkJcGdf bG9nKFBHX1JFUE9SVCwgIiAgbGF0ZXN0IGNoZWNrcG9pbnQgbmV4dCBNdWx0aVhhY3RPZmZz ZXRcbiIpOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5j IGIvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYwppbmRleCBlMjNiOGNhODhkLi45 NTBmZjI0OTgwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5j CisrKyBiL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKQEAgLTQ3Myw2ICs0NzMs MTIgQEAgY29weV94YWN0X3hsb2dfeGlkKHZvaWQpCiAJCQkgICJcIiVzL3BnX3Jlc2V0d2Fs XCIgLWYgLXggJXUgXCIlc1wiIiwKIAkJCSAgbmV3X2NsdXN0ZXIuYmluZGlyLCBvbGRfY2x1 c3Rlci5jb250cm9sZGF0YS5jaGtwbnRfbnh0eGlkLAogCQkJICBuZXdfY2x1c3Rlci5wZ2Rh dGEpOworCWNoZWNrX29rKCk7CisJcHJlcF9zdGF0dXMoIlNldHRpbmcgb2xkZXN0IFhJRCBm b3IgbmV3IGNsdXN0ZXIiKTsKKwlleGVjX3Byb2coVVRJTElUWV9MT0dfRklMRSwgTlVMTCwg dHJ1ZSwgdHJ1ZSwKKwkJCSAgIlwiJXMvcGdfcmVzZXR3YWxcIiAtZiAtdSAldSBcIiVzXCIi LAorCQkJICBuZXdfY2x1c3Rlci5iaW5kaXIsIG9sZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNo a3BudF9vbGRzdHhpZCwKKwkJCSAgbmV3X2NsdXN0ZXIucGdkYXRhKTsKIAlleGVjX3Byb2co VVRJTElUWV9MT0dfRklMRSwgTlVMTCwgdHJ1ZSwgdHJ1ZSwKIAkJCSAgIlwiJXMvcGdfcmVz ZXR3YWxcIiAtZiAtZSAldSBcIiVzXCIiLAogCQkJICBuZXdfY2x1c3Rlci5iaW5kaXIsIG9s ZF9jbHVzdGVyLmNvbnRyb2xkYXRhLmNoa3BudF9ueHRlcG9jaCwKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmluL3BnX3VwZ3JhZGUvcGdf dXBncmFkZS5oCmluZGV4IGQ3NjY2ZGEzZjIuLmI3NzViYTMxZTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9wZ191cGdyYWRl L3BnX3VwZ3JhZGUuaApAQCAtMjA3LDYgKzIwNyw3IEBAIHR5cGVkZWYgc3RydWN0CiAJdWlu dDMyCQljaGtwbnRfbnh0bXVsdGk7CiAJdWludDMyCQljaGtwbnRfbnh0bXhvZmY7CiAJdWlu dDMyCQljaGtwbnRfb2xkc3RNdWx0aTsKKwl1aW50MzIJCWNoa3BudF9vbGRzdHhpZDsKIAl1 aW50MzIJCWFsaWduOwogCXVpbnQzMgkJYmxvY2tzejsKIAl1aW50MzIJCWxhcmdlc3o7Cg== --------------956596FC97AB25F70AB05B81--