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 1p9428-0001yk-0Q for pgsql-hackers@arkaria.postgresql.org; Sat, 24 Dec 2022 12:53:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p9426-0000bo-Rz for pgsql-hackers@arkaria.postgresql.org; Sat, 24 Dec 2022 12:53:46 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p9426-0000bf-G7 for pgsql-hackers@lists.postgresql.org; Sat, 24 Dec 2022 12:53:46 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1p9423-0006Ym-Rb for pgsql-hackers@postgresql.org; Sat, 24 Dec 2022 12:53:46 +0000 Received: by mail-lj1-x229.google.com with SMTP id z7so1982963ljq.12 for ; Sat, 24 Dec 2022 04:53:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Oiwi5cJtndn13W6Cpnnl7gk1M05Rm4dDMBrjLk+e4M8=; b=p9rTT1/EfedEKyqKK4fDYS6cX0uEVPnLYPVybrwKOeljQKqCXTkZbAnY2EpwsJcndk M3+Af8FaQimqdFNiKywQvOgW1MtWORWzBEgOnMkLRuTqr4Ztw7cKoQ9wmkEOUqycwOql eG4KLIvCa6C5mrs3I2QYGITQCvFjLKFLe4aqygSgUeJw9zv5E2U3OOiSU84q7c7H4vOW YlWBwFXA+TKL8+1D2D5Ov6qT/3jIC+WKrtZFaKbd7cDkx+Cj0Z/ayqrN5s3GMh5DYQk1 xy0uKlvTmmI9N6eo8wEqXJDWmLx8VKUcinggHewAj9OxmK83NiODSHqtbioPmZ9YqTUS Lhxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Oiwi5cJtndn13W6Cpnnl7gk1M05Rm4dDMBrjLk+e4M8=; b=iH3uok4v2Mo0HBCHyUg9I7ALKt3BUMFpJMo10Wr6VR85bAZJUTtTAJnvPNAdRi84Ca usfIWjDy8lZjy+Qq0UJ5n4D/Fnvcp4C1pGTCYWKVcYS3oxssF5yAhs3LgVEKOSTgP7OM 9zsdKRtUopheftbfsmjCyYn+n9W4SrnfLwloCT8eu01JcOLBRk4HV9OScfnw03YKeWds 4pqVM1DhrfCKBGH86jsmvogUts3e7MHdqv1NLVxyjBWD0VFvp6YkuqlIEXtsdFyWzK63 /EUKNH5j513b//PD9AWjCv24D6wHqsUvChkQLyHvy0/guRVZEAjoWgrJt5fkHAFRcecr 8fkQ== X-Gm-Message-State: AFqh2kqmF0403bnYzZisg7laCZpYyh8ytXjtKQDXLk/9+ERTenFS4Fm8 JrnQMSDg87VP4wRQc49iE3N5ABKiCW+ToxntJfw= X-Google-Smtp-Source: AMrXdXtcoEMB3daW/wot8Femt06UcSJob+VC1dJOuorvjvSFmaAdxcBprpJABNrCVYNWt/idNqL2mluBNO/lL92NAUQ= X-Received: by 2002:a2e:9ec9:0:b0:27a:233e:1845 with SMTP id h9-20020a2e9ec9000000b0027a233e1845mr1021898ljk.297.1671886422046; Sat, 24 Dec 2022 04:53:42 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Bharath Rupireddy Date: Sat, 24 Dec 2022 18:23:29 +0530 Message-ID: Subject: Re: [PATCH] Teach pg_waldump to extract FPIs from the WAL To: David Christensen Cc: Michael Paquier , Justin Pryzby , Ian Lawrence Barwick , Matthias van de Meent , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="0000000000004a94a305f092648a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004a94a305f092648a Content-Type: text/plain; charset="UTF-8" On Sat, Dec 24, 2022 at 12:58 AM David Christensen wrote: > > On Fri, Dec 23, 2022 at 12:57 PM David Christensen > wrote: > > > > On Wed, Dec 21, 2022 at 5:47 AM Bharath Rupireddy > > wrote: > > > > 2. +$node->init(extra => ['-k'], allows_streaming => 1); > > > When enabled with allows_streaming, there are a bunch of things that > > > happen to the node while initializing, I don't think we need all of > > > them for this. > > > > I think the "allows_streaming" was required to ensure the WAL files > > were preserved properly, and was the approach we ended up taking > > rather than trying to fail the archive_command or other approaches I'd > > taken earlier. I'd rather keep this if we can, unless you can propose > > a different approach that would continue to work in the same way. > > Confirmed that we needed this in order to create the replication slot, > so this /is/ required for the test to work. The added test needs wal_level to be replica, but the TAP tests set it to minimal if allows_streaming isn't passed. However, if passed allows_streaming, it sets a bunch of other parameters which are not required for this test (see note->init function in cluster.pm), hence we could just set the required parameters wal_level = replica and max_wal_senders for the replication slot to be created. > Enclosing v11 with yours and Michael's latest feedback. Thanks for the patch. I've made the above change as well as renamed the test file name to be save_fpi.pl, everything else remains the same as v11. Here's the v12 patch which LGTM. I'll mark it as RfC - https://commitfest.postgresql.org/41/3628/. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --0000000000004a94a305f092648a Content-Type: application/octet-stream; name="v12-0001-Teach-pg_waldump-to-extract-FPIs-from-the-WAL-st.patch" Content-Disposition: attachment; filename="v12-0001-Teach-pg_waldump-to-extract-FPIs-from-the-WAL-st.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lc1xr6rl0 RnJvbSBjZWUwYzAwMTczNDJmYzg4NDdlNGIwOTkzNTgyNDVmYWM2MDQ2YTk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjQgRGVjIDIwMjIgMTI6Mzk6MTIgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxMl0gVGVhY2ggcGdfd2FsZHVtcCB0byBleHRyYWN0IEZQSXMg ZnJvbSB0aGUgV0FMIHN0cmVhbQoKRXh0cmFjdHMgZnVsbC1wYWdlIGltYWdlcyBmcm9tIHRoZSBX QUwgc3RyZWFtIGludG8gYSBnaXZlbiB0YXJnZXQgZGlyZWN0b3J5LgpUaGVzZSBpbWFnZXMgYXJl IHN1YmplY3QgdG8gdGhlIHNhbWUgZmlsdGVyaW5nIHJ1bGVzIGFzIG5vcm1hbCBkaXNwbGF5IGlu CnBnX3dhbGR1bXAsIHdoaWNoIG1lYW5zIHRoYXQgeW91IGNhbiBpc29sYXRlIHRoZSBmdWxsIHBh Z2Ugd3JpdGVzIHRvIGEKdGFyZ2V0IHJlbGF0aW9uLCBhbW9uZyBvdGhlciB0aGluZ3MuCgpGaWxl cyBhcmUgc2F2ZWQgd2l0aCB0aGUgZmlsZW5hbWU6IDxsc24+Ljx0cz4uPGRiPi48cmVsPi48Ymxr Pl88Zm9yaz4gd2l0aApmb3JtYXR0aW5nIHRvIG1ha2UgdGhpbmdzIHNvbWV3aGF0IHNvcnRhYmxl OyBmb3IgaW5zdGFuY2U6CgowMDAwMDAwMC0wMTAwMDBDMC4xNjYzLjEuNjExNy4wX21haW4KMDAw MDAwMDAtMDEwMDAxNTAuMTY2NC4wLjYxMTUuMF9tYWluCjAwMDAwMDAwLTAxMDAwMUUwLjE2NjQu MC42MTE0LjBfbWFpbgowMDAwMDAwMC0wMTAwMDI3MC4xNjYzLjEuNjExNi4wX21haW4KMDAwMDAw MDAtMDEwMDAzMDAuMTY2My4xLjYxMTMuMF9tYWluCjAwMDAwMDAwLTAxMDAwMzkwLjE2NjMuMS42 MTEyLjBfbWFpbgowMDAwMDAwMC0wMTAwMDQyMC4xNjYzLjEuODkwMy4wX21haW4KMDAwMDAwMDAt MDEwMDA0QjAuMTY2My4xLjg5MDIuMF9tYWluCjAwMDAwMDAwLTAxMDAwNTQwLjE2NjMuMS42MTEx LjBfbWFpbgowMDAwMDAwMC0wMTAwMDVEMC4xNjYzLjEuNjExMC4wX21haW4KCkl0J3Mgbm90ZXdv cnRoeSB0aGF0IHRoZSByYXcgYmxvY2sgaW1hZ2VzIGRvIG5vdCBoYXZlIHRoZSBjdXJyZW50IExT TgpzdG9yZWQgd2l0aCB0aGVtIGluIHRoZSBXQUwgc3RyZWFtIChhcyB3b3VsZCBiZSB0cnVlIGZv ciBvbi1oZWFwCnZlcnNpb25zIG9mIHRoZSBibG9ja3MpLCBub3Igd291bGQgdGhlIGNoZWNrc3Vt IGJlIHVwZGF0ZWQgaW4KdGhlbSAodGhvdWdoIFdBTCBpdHNlbGYgaGFzIGNoZWNrc3Vtcywgc28g dGhlcmUgaXMgc29tZSBwcm90ZWN0aW9uCnRoZXJlKS4KClRoZXNlIGltYWdlcyBjb3VsZCBiZSBs b2FkZWQvaW5zcGVjdGVkIHZpYSBgcGdfcmVhZF9iaW5hcnlfZmlsZSgpYCBhbmQKdXNlZCBpbiB0 aGUgYHBhZ2VpbnNwZWN0YCBzdWl0ZSBvZiB0b29scyB0byBwZXJmb3JtIGRldGFpbGVkIGFuYWx5 c2lzIG9uCnRoZSBwYWdlcyBpbiBxdWVzdGlvbiwgYmFzZWQgb24gaGlzdG9yaWNhbCBpbmZvcm1h dGlvbiwgYW5kIG1heSBjb21lIGluCmhhbmR5IGZvciBmb3JlbnNpY3Mgd29yay4KLS0tCiBkb2Mv c3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCAgICAgfCAgNjkgKysrKysrKysrKysrKysrKysr CiBzcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuYyAgICAgIHwgIDg3ICsrKysrKysrKysrKysrKysrKysrKy0K IHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMl9zYXZlX2ZwaS5wbCB8IDEwNCArKysrKysrKysrKysr KysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjYwIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDJfc2F2 ZV9mcGkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCmluZGV4IGQ1NTlmMDkxZTUuLjA5MDIw NWUxMjIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBAIC0yNDAsNiArMjQwLDc1IEBAIFBv c3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+PG9wdGlvbj4tVyA8 cmVwbGFjZWFibGU+c2F2ZV9wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAg ICAgPHRlcm0+PG9wdGlvbj4tLXNhdmUtZnVsbHBhZ2U9PHJlcGxhY2VhYmxlPnNhdmVfcGF0aDwv cmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgU2F2ZSBmdWxsIHBhZ2UgaW1hZ2VzIHNlZW4gaW4gdGhlIFdBTCBzdHJl YW0gdG8gdGhlCisgICAgICAgIDxyZXBsYWNlYWJsZT5zYXZlX3BhdGg8L3JlcGxhY2VhYmxlPiBk aXJlY3RvcnksIHdoaWNoIHdpbGwgYmUgY3JlYXRlZAorICAgICAgICBpZiBpdCBkb2VzIG5vdCBl eGlzdC4gIFRoZSBpbWFnZXMgc2F2ZWQgd2lsbCBiZSBzdWJqZWN0IHRvIHRoZSBzYW1lCisgICAg ICAgIGZpbHRlcmluZyBhbmQgbGltaXRpbmcgY3JpdGVyaWEgYXMgZGlzcGxheSByZWNvcmRzLCBi dXQgaW4gdGhpcworICAgICAgICBtb2RlIDxhcHBsaWNhdGlvbj5wZ193YWxkdW1wPC9hcHBsaWNh dGlvbj4gd2lsbCBub3Qgb3V0cHV0IGFueSBvdGhlcgorICAgICAgICBpbmZvcm1hdGlvbi4KKyAg ICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBwYWdlIGltYWdlcyB3aWxs IGJlIHNhdmVkIHdpdGggdGhlIGZpbGUKKyAgICAgICAgZm9ybWF0OiA8bGl0ZXJhbD48cmVwbGFj ZWFibGU+TFNOPC9yZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlPlJFTFRBQkxFU1BBQ0U8L3JlcGxh Y2VhYmxlPi48cmVwbGFjZWFibGU+REFUT0lEPC9yZXBsYWNlYWJsZT4uPHJlcGxhY2VhYmxlPlJF TE5PREU8L3JlcGxhY2VhYmxlPi48cmVwbGFjZWFibGU+QkxLTk88L3JlcGxhY2VhYmxlPjxyZXBs YWNlYWJsZT5GT1JLPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+CisKKyAgICAgICAgVGhlIGRvdC1z ZXBhcmF0ZWQgY29tcG9uZW50cyBhcmUgKGluIG9yZGVyKToKKworICAgICAgICA8aW5mb3JtYWx0 YWJsZT4KKyAgICAgICAgIDx0Z3JvdXAgY29scz0iMiI+CisgICAgICAgICAgPHRoZWFkPgorICAg ICAgICAgICA8cm93PgorICAgICAgICAgICAgPGVudHJ5PkNvbXBvbmVudDwvZW50cnk+CisgICAg ICAgICAgICA8ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICAgICAgICA8L3Jvdz4KKyAg ICAgICAgICA8L3RoZWFkPgorCisgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICA8cm93Pgor ICAgICAgICAgICAgPGVudHJ5PkxTTjwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+VGhlIExT TiBvZiB0aGUgcmVjb3JkIHdpdGggdGhpcyBibG9jaywgZm9ybWF0dGVkCisgICAgICAgICAgICAg YXMgdHdvIDgtY2hhcmFjdGVyIGhleGFkZWNpbWFsIG51bWJlcnMgPGxpdGVyYWw+JTA4WC0lMDhY PC9saXRlcmFsPjwvZW50cnk+CisgICAgICAgICAgIDwvcm93PgorCisgICAgICAgICAgIDxyb3c+ CisgICAgICAgICAgICA8ZW50cnk+UkVMVEFCTEVTUEFDRTwvZW50cnk+CisgICAgICAgICAgICA8 ZW50cnk+dGFibGVzcGFjZSBPSUQgZm9yIHRoZSBibG9jazwvZW50cnk+CisgICAgICAgICAgIDwv cm93PgorCisgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICA8ZW50cnk+REFUT0lEPC9lbnRy eT4KKyAgICAgICAgICAgIDxlbnRyeT5kYXRhYmFzZSBPSUQgZm9yIHRoZSBibG9jazwvZW50cnk+ CisgICAgICAgICAgIDwvcm93PgorCisgICAgICAgICAgIDxyb3c+CisgICAgICAgICAgICA8ZW50 cnk+UkVMTk9ERTwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+cmVsbm9kZSBpZCBmb3IgdGhl IGJsb2NrPC9lbnRyeT4KKyAgICAgICAgICAgPC9yb3c+CisKKyAgICAgICAgICAgPHJvdz4KKyAg ICAgICAgICAgIDxlbnRyeT5CTEtOTzwvZW50cnk+CisgICAgICAgICAgICA8ZW50cnk+dGhlIGJs b2NrIG51bWJlciBvZiB0aGlzIGJsb2NrPC9lbnRyeT4KKyAgICAgICAgICAgPC9yb3c+CisKKyAg ICAgICAgICAgPHJvdz4KKyAgICAgICAgICAgIDxlbnRyeT5GT1JLPC9lbnRyeT4KKyAgICAgICAg ICAgIDxlbnRyeT4KKyAgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgZm9yayB0aGUgZnVsbCBw YWdlIGltYWdlIGNhbWUgZnJvbS4gIE9uZQorICAgICAgICAgICAgIG9mIDxsaXRlcmFsPl9tYWlu PC9saXRlcmFsPiwgPGxpdGVyYWw+X2ZzbTwvbGl0ZXJhbD4sCisgICAgICAgICAgICAgPGxpdGVy YWw+X3ZtPC9saXRlcmFsPiwgb3IgPGxpdGVyYWw+X2luaXQ8L2xpdGVyYWw+LgorICAgICAgICAg ICAgPC9lbnRyeT4KKyAgICAgICAgICAgPC9yb3c+CisgICAgICAgICAgPC90Ym9keT4KKyAgICAg ICAgIDwvdGdyb3VwPgorICAgICAgICA8L2luZm9ybWFsdGFibGU+CisgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDx2YXJsaXN0 ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi14IDxyZXBsYWNlYWJsZT54aWQ8L3JlcGxhY2Vh YmxlPjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDx0ZXJtPjxvcHRpb24+LS14aWQ9PHJlcGxhY2Vh YmxlPnhpZDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ193YWxkdW1wL21lc29uLmJ1aWxkIGIvc3JjL2Jpbi9wZ193YWxkdW1wL21lc29uLmJ1aWxk CmluZGV4IDNmYTFiNTNlNzEuLjk4YzZkZTFhODAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2Fs ZHVtcC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKQEAg LTMxLDYgKzMxLDcgQEAgdGVzdHMgKz0gewogICAndGFwJzogewogICAgICd0ZXN0cyc6IFsKICAg ICAgICd0LzAwMV9iYXNpYy5wbCcsCisgICAgICAndC8wMDJfc2F2ZV9mcGkucGwnLAogICAgIF0s CiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIv c3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCA5OTkzMzc4Y2E1Li44MWFlZWYz Yjk3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTIzLDkgKzIzLDEzIEBACiAjaW5jbHVk ZSAiYWNjZXNzL3hsb2dyZWNvcmQuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3N0YXRzLmgiCiAj aW5jbHVkZSAiY29tbW9uL2ZlX21lbXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVy bS5oIgorI2luY2x1ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xv Z2dpbmcuaCIKKyNpbmNsdWRlICJjb21tb24vcmVscGF0aC5oIgogI2luY2x1ZGUgImdldG9wdF9s b25nLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2Uu aCIKIAogLyoKICAqIE5PVEU6IEZvciBhbnkgY29kZSBjaGFuZ2Ugb3IgaXNzdWUgZml4IGhlcmUs IGl0IGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0bwpAQCAtNzAsNiArNzQsOSBAQCB0eXBlZGVmIHN0 cnVjdCBYTG9nRHVtcENvbmZpZwogCWJvb2wJCWZpbHRlcl9ieV9yZWxhdGlvbl9ibG9ja19lbmFi bGVkOwogCUZvcmtOdW1iZXIJZmlsdGVyX2J5X3JlbGF0aW9uX2ZvcmtudW07CiAJYm9vbAkJZmls dGVyX2J5X2ZwdzsKKworCS8qIHNhdmUgb3B0aW9ucyAqLworCWNoYXIJICAgKnNhdmVfZnBpX3Bh dGg7CiB9IFhMb2dEdW1wQ29uZmlnOwogCiAKQEAgLTQzOSw2ICs0NDYsNjEgQEAgWExvZ1JlY29y ZEhhc0ZQVyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8q CisgKiBGdW5jdGlvbiB0byBleHRlcm5hbGx5IHNhdmUgYWxsIEZQSXMgc3RvcmVkIGluIHRoZSBn aXZlbiBXQUwgcmVjb3JkCisgKi8KK3N0YXRpYyB2b2lkCitYTG9nUmVjb3JkU2F2ZUZQSXMoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQsIGNvbnN0IGNoYXIgKnNhdmVwYXRoKQoreworCWludAkJCWJs b2NrX2lkOworCisJZm9yIChibG9ja19pZCA9IDA7IGJsb2NrX2lkIDw9IFhMb2dSZWNNYXhCbG9j a0lkKHJlY29yZCk7IGJsb2NrX2lkKyspCisJeworCQlQR0FsaWduZWRCbG9jayBidWY7CisJCVBh Z2UJCXBhZ2U7CisJCWNoYXIJCWZpbGVuYW1lW01BWFBHUEFUSF07CisJCWNoYXIJCWZvcmtuYW1l W0ZPUktOQU1FQ0hBUlMgKyAyXTsJLyogXyArIFwwICovCisJCUZJTEUJICAgKk9QRjsKKwkJQmxv Y2tOdW1iZXIgYmxrOworCQlSZWxGaWxlTG9jYXRvciBybm9kZTsKKwkJRm9ya051bWJlcglmb3Jr OworCisJCWlmICghWExvZ1JlY0hhc0Jsb2NrUmVmKHJlY29yZCwgYmxvY2tfaWQpKQorCQkJY29u dGludWU7CisKKwkJaWYgKCFYTG9nUmVjSGFzQmxvY2tJbWFnZShyZWNvcmQsIGJsb2NrX2lkKSkK KwkJCWNvbnRpbnVlOworCisJCXBhZ2UgPSAoUGFnZSkgYnVmLmRhdGE7CisKKwkJaWYgKCFSZXN0 b3JlQmxvY2tJbWFnZShyZWNvcmQsIGJsb2NrX2lkLCBwYWdlKSkKKwkJCWNvbnRpbnVlOworCisJ CS8qIHdlIGhhdmUgb3VyIGV4dHJhY3RlZCBGUEksIGxldCdzIHNhdmUgaXQgbm93ICovCisKKwkJ WExvZ1JlY0dldEJsb2NrVGFnRXh0ZW5kZWQocmVjb3JkLCBibG9ja19pZCwKKwkJCQkJCQkJICAg JnJub2RlLCAmZm9yaywgJmJsaywgTlVMTCk7CisKKwkJaWYgKGZvcmsgPj0gMCAmJiBmb3JrIDw9 IE1BWF9GT1JLTlVNKQorCQkJc3ByaW50Zihmb3JrbmFtZSwgIl8lcyIsIGZvcmtOYW1lc1tmb3Jr XSk7CisJCWVsc2UKKwkJCXBnX2ZhdGFsKCJmb3VuZCBpbnZhbGlkIGZvcmsgbnVtYmVyOiAldSIs IGZvcmspOworCisJCXNucHJpbnRmKGZpbGVuYW1lLCBNQVhQR1BBVEgsICIlcy8lMDhYLSUwOFgu JXUuJXUuJXUuJXUlcyIsIHNhdmVwYXRoLAorCQkJCSBMU05fRk9STUFUX0FSR1MocmVjb3JkLT5S ZWFkUmVjUHRyKSwKKwkJCQkgcm5vZGUuc3BjT2lkLCBybm9kZS5kYk9pZCwgcm5vZGUucmVsTnVt YmVyLCBibGssIGZvcmtuYW1lKTsKKworCQlPUEYgPSBmb3BlbihmaWxlbmFtZSwgUEdfQklOQVJZ X1cpOworCQlpZiAoIU9QRikKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IiIsIGZpbGVuYW1lKTsKKworCQlpZiAoZndyaXRlKHBhZ2UsIEJMQ0tTWiwgMSwgT1BGKSAhPSAx KQorCQkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSBmaWxlIFwiJXNcIiIsIGZpbGVuYW1lKTsK KworCQlmY2xvc2UoT1BGKTsKKwl9Cit9CisKIC8qCiAgKiBQcmludCBhIHJlY29yZCB0byBzdGRv dXQKICAqLwpAQCAtNjc5LDYgKzc0MSw4IEBAIHVzYWdlKHZvaWQpCiAJCQkgIiAgICAgICAgICAg ICAgICAgICAgICAgICAoZGVmYXVsdDogMSBvciB0aGUgdmFsdWUgdXNlZCBpbiBTVEFSVFNFRylc biIpKTsKIAlwcmludGYoXygiICAtViwgLS12ZXJzaW9uICAgICAgICAgIG91dHB1dCB2ZXJzaW9u IGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYoXygiICAtdywgLS1mdWxscGFn ZSAgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIHdpdGggYSBmdWxsIHBhZ2Ugd3JpdGVcbiIpKTsK KwlwcmludGYoXygiICAtVywgLS1zYXZlLWZ1bGxwYWdlPXBhdGggICAgc2F2ZSBmdWxsIHBhZ2Ug aW1hZ2VzIHRvIGdpdmVuIHBhdGggYXNcbiIKKwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTFNOLlQuRC5SLkJfRlxuIikpOwogCXByaW50ZihfKCIgIC14LCAtLXhpZD1YSUQgICAg ICAgICAgb25seSBzaG93IHJlY29yZHMgd2l0aCB0cmFuc2FjdGlvbiBJRCBYSURcbiIpKTsKIAlw cmludGYoXygiICAteiwgLS1zdGF0c1s9cmVjb3JkXSAgIHNob3cgc3RhdGlzdGljcyBpbnN0ZWFk IG9mIHJlY29yZHNcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25hbGx5 LCBzaG93IHBlci1yZWNvcmQgc3RhdGlzdGljcylcbiIpKTsKQEAgLTcxMiw2ICs3NzYsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJeyJsaW1pdCIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCAnbid9LAogCQl7InBhdGgiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwK IAkJeyJxdWlldCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LAorCQl7InNhdmUtZnVsbHBhZ2Ui LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1cnfSwKIAkJeyJyZWxhdGlvbiIsIHJlcXVpcmVk X2FyZ3VtZW50LCBOVUxMLCAnUid9LAogCQl7InJtZ3IiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVM TCwgJ3InfSwKIAkJeyJzdGFydCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LApAQCAt NzcyLDYgKzgzNyw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWNvbmZpZy5maWx0 ZXJfYnlfZnB3ID0gZmFsc2U7CiAJY29uZmlnLnN0YXRzID0gZmFsc2U7CiAJY29uZmlnLnN0YXRz X3Blcl9yZWNvcmQgPSBmYWxzZTsKKwljb25maWcuc2F2ZV9mcGlfcGF0aCA9IE5VTEw7CiAKIAlz dGF0cy5zdGFydHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXN0YXRzLmVuZHB0ciA9IEludmFs aWRYTG9nUmVjUHRyOwpAQCAtNzgyLDcgKzg0OCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCQlnb3RvIGJhZF9hcmd1bWVudDsKIAl9CiAKLQl3aGlsZSAoKG9wdGlvbiA9IGdldG9w dF9sb25nKGFyZ2MsIGFyZ3YsICJiQjplOmZGOm46cDpxcjpSOnM6dDp3eDp6IiwKKwl3aGlsZSAo KG9wdGlvbiA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJiQjplOmZGOm46cDpxcjpSOnM6dDp3 Vzp4OnoiLAogCQkJCQkJCQkgbG9uZ19vcHRpb25zLCAmb3B0aW5kZXgpKSAhPSAtMSkKIAl7CiAJ CXN3aXRjaCAob3B0aW9uKQpAQCAtOTE4LDYgKzk4NCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCQkJY2FzZSAndyc6CiAJCQkJY29uZmlnLmZpbHRlcl9ieV9mcHcgPSB0cnVlOwog CQkJCWJyZWFrOworCQkJY2FzZSAnVyc6CisJCQkJY29uZmlnLnNhdmVfZnBpX3BhdGggPSBwZ19z dHJkdXAob3B0YXJnKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgJ3gnOgogCQkJCWlmIChzc2NhbmYo b3B0YXJnLCAiJXUiLCAmY29uZmlnLmZpbHRlcl9ieV94aWQpICE9IDEpCiAJCQkJewpAQCAtOTcy LDYgKzEwNDEsMTcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCX0KIAl9CiAKKwlp ZiAoY29uZmlnLnNhdmVfZnBpX3BhdGggIT0gTlVMTCkKKwl7CisJCS8qIENyZWF0ZSB0aGUgZGly IGlmIGl0IGRvZXNuJ3QgZXhpc3QgKi8KKwkJaWYgKHBnX21rZGlyX3AoY29uZmlnLnNhdmVfZnBp X3BhdGgsIHBnX2Rpcl9jcmVhdGVfbW9kZSkgPCAwKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoImNv dWxkIG5vdCBjcmVhdGUgb3V0cHV0IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKKwkJCQkJCSBjb25m aWcuc2F2ZV9mcGlfcGF0aCk7CisJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJfQorCX0KKwogCS8q IHBhcnNlIGZpbGVzIGFzIHN0YXJ0L2VuZCBib3VuZGFyaWVzLCBleHRyYWN0IHBhdGggaWYgbm90 IHNwZWNpZmllZCAqLwogCWlmIChvcHRpbmQgPCBhcmdjKQogCXsKQEAgLTExNTAsNiArMTIzMCwx MSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlYTG9nUmVjU3RvcmVTdGF0cygm c3RhdHMsIHhsb2dyZWFkZXJfc3RhdGUpOwogCQkJCXN0YXRzLmVuZHB0ciA9IHhsb2dyZWFkZXJf c3RhdGUtPkVuZFJlY1B0cjsKIAkJCX0KKwkJCWVsc2UgaWYgKGNvbmZpZy5zYXZlX2ZwaV9wYXRo ICE9IE5VTEwpCisJCQl7CisJCQkJaWYgKFhMb2dSZWNvcmRIYXNGUFcoeGxvZ3JlYWRlcl9zdGF0 ZSkpCisJCQkJCVhMb2dSZWNvcmRTYXZlRlBJcyh4bG9ncmVhZGVyX3N0YXRlLCBjb25maWcuc2F2 ZV9mcGlfcGF0aCk7CisJCQl9CiAJCQllbHNlCiAJCQkJWExvZ0R1bXBEaXNwbGF5UmVjb3JkKCZj b25maWcsIHhsb2dyZWFkZXJfc3RhdGUpOwogCQl9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dh bGR1bXAvdC8wMDJfc2F2ZV9mcGkucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDJfc2F2ZV9m cGkucGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMjQ0NjkyMzIwZgot LS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMl9zYXZlX2ZwaS5wbApA QCAtMCwwICsxLDEwNCBAQAorCisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBG aWxlOjpCYXNlbmFtZTsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlJlY3Vyc2l2ZUNvcHk7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgKCRibG9ja3NpemUsICR3YWxmaWxlX25hbWUpOworCisj IEZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIExTTiBmcm9tIHRoZSBnaXZlbiBibG9jayBzdHJ1Y3R1 cmUKK3N1YiBnZXRfYmxvY2tfaW5mbworeworCW15ICRwYXRoID0gc2hpZnQ7CisJbXkgJGJsb2Nr OworCisJb3BlbiBteSAkZmgsICc8JywgJHBhdGggb3IgZGllICJjb3VsZG4ndCBvcGVuIGZpbGU6 ICRwYXRoXG4iOworCWRpZSAiY291bGRuJ3QgcmVhZCBmdWxsIGJsb2NrXG4iIGlmICRibG9ja3Np emUgIT0gcmVhZCAkZmgsICRibG9jaywgJGJsb2Nrc2l6ZTsKKwlteSAoJGxzbl9oaSwgJGxzbl9s bykgPSB1bnBhY2soJ1ZWJywgJGJsb2NrKTsKKworCSRsc25faGkgPSBzcHJpbnRmKCclMDhYJywg JGxzbl9oaSk7CisJJGxzbl9sbyA9IHNwcmludGYoJyUwOFgnLCAkbHNuX2xvKTsKKworCXJldHVy biAoJGxzbl9oaSwgJGxzbl9sbyk7Cit9CisKK215ICRub2RlID0gIFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygnbWFpbicpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+YXBwZW5kX2NvbmYo CisJJ3Bvc3RncmVzcWwuY29uZicsIHF7Cit3YWxfbGV2ZWwgPSAncmVwbGljYScKK21heF93YWxf c2VuZGVycyA9IDQKK30pOworJG5vZGUtPnN0YXJ0OworCisjIFNhbml0eSBjaGVja3MgZm9yIGNv bW1hbmQgbGluZSBvcHRpb25zLgorJG5vZGUtPmNvbW1hbmRfZmFpbHMoCisJWyAncGdfd2FsZHVt cCcsICctLXNhdmUtZnVsbHBhZ2UnIF0sCisJJy0tc2F2ZS1mdWxscGFnZSBmYWlscyB3aXRob3V0 IHBhdGgnKTsKKworIyBHZW5lcmF0ZSBkYXRhL1dBTCB0byBleGFtaW5lIHRoYXQgd2lsbCBoYXZl IEZQSXMgaW4gdGhlbQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUICdpbml0 JyBGUk9NIHBnX2NyZWF0ZV9waHlzaWNhbF9yZXBsaWNhdGlvbl9zbG90KCdyZWdyZXNzX3BnX3dh bGR1bXBfc2xvdCcsIHRydWUsIGZhbHNlKTsKK0NSRUFURSBUQUJMRSB0ZXN0X3RhYmxlIEFTIFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApIGE7CitDSEVDS1BPSU5UOyAtLSByZXF1aXJlZCB0 byBmb3JjZSBGUEkgZm9yIG5leHQgd3JpdGVzCitVUERBVEUgdGVzdF90YWJsZSBTRVQgYSA9IGEg KyAxOworIik7CisKKygkd2FsZmlsZV9uYW1lLCAkYmxvY2tzaXplKSA9IHNwbGl0ICdcfCcgPT4g JG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCJTRUxFQ1QgcGdfd2FsZmlsZV9uYW1lKHBnX3N3 aXRjaF93YWwoKSksIGN1cnJlbnRfc2V0dGluZygnYmxvY2tfc2l6ZScpIik7CisKKyMgR2V0IHRo ZSByZWxhdGlvbiBub2RlLCBldGMgZm9yIHRoZSBuZXcgdGFibGUKK215ICRyZWxhdGlvbiA9ICRu b2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBmb3JtYXQoCisgICAgICAgICcl cy8lcy8lcycsCisgICAgICAgIENBU0UgV0hFTiByZWx0YWJsZXNwYWNlID0gMCBUSEVOIGRhdHRh Ymxlc3BhY2UgRUxTRSByZWx0YWJsZXNwYWNlIEVORCwKKyAgICAgICAgcGdfZGF0YWJhc2Uub2lk LAorICAgICAgICBwZ19yZWxhdGlvbl9maWxlbm9kZShwZ19jbGFzcy5vaWQpKQorICAgIEZST00g cGdfY2xhc3MsIHBnX2RhdGFiYXNlCisgICAgV0hFUkUgcmVsbmFtZSA9ICd0ZXN0X3RhYmxlJyBB TkQKKyAgICAgICAgZGF0bmFtZSA9IGN1cnJlbnRfZGF0YWJhc2UoKX0KKyk7CisKK215ICR3YWxm aWxlID0gJG5vZGUtPmRhdGFfZGlyIC4gJy9wZ193YWwvJyAuICR3YWxmaWxlX25hbWU7CitteSAk dG1wX2ZvbGRlciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyOworCitvaygtZiAk d2FsZmlsZSwgIkdvdCBhIFdBTCBmaWxlIik7CisKKyRub2RlLT5jb21tYW5kX29rKFsncGdfd2Fs ZHVtcCcsICctLXNhdmUtZnVsbHBhZ2UnLCAiJHRtcF9mb2xkZXIvcmF3IiwgJy0tcmVsYXRpb24n LCAkcmVsYXRpb24sICR3YWxmaWxlXSk7CisKKyMgVGhpcyByZWdleHAgd2lsbCBtYXRjaCBmaWxl bmFtZXMgb2YgdGhlIGZvcm1hdCBYWFhYWFhYWC1YWFhYWFhYWC5kZC5kZC5kZC5kZF9mb3JrCisj IHdpdGggdGhlIGNvbXBvbmVudHMgYmVpbmc6CisjIC0gV0FMIExTTiBpbiBoZXggZm9ybWF0LAor IyAtIERlY2ltYWwgZGF0YWJhc2Ugb2lkCisjIC0gRGVjaW1hbCB0YWJsZXNwYWNlIG9pZCBvciAw IGZvciBnbG9iYWwKKyMgLSBEZWNpbWFsIHJlbGZpbGVudW1iZXIKKyMgLSBEZWNpbWFsIGJsb2Nr IG51bWJlcgorIyAtIGZvcmsgdGhpcyBibG9jayBjYW1lIGZyb20gKG9uZSBvZiB2bSwgaW5pdCwg ZnNtLCBvciBtYWluKQorbXkgJGZpbGVfcmUgPQorICBxci9eKFswLTlBLUZdezh9KS0oWzAtOUEt Rl17OH0pWy5dWzAtOV0rWy5dWzAtOV0rWy5dWzAtOV0rWy5dWzAtOV0rKD86X3ZtfF9pbml0fF9m c218X21haW4pPyQvOworCitteSAkZmlsZV9jb3VudCA9IDA7CisKKyMgVmVyaWZ5IGZpbGVuYW1l IGZvcm1hdHMgbWF0Y2hlcyB3Ly0tc2F2ZS1mdWxscGFnZQorZm9yIG15ICRmdWxscGF0aCAoZ2xv YiAiJHRtcF9mb2xkZXIvcmF3LyoiKQoreworCW15ICRmaWxlID0gRmlsZTo6QmFzZW5hbWU6OmJh c2VuYW1lKCRmdWxscGF0aCk7CisKKwlsaWtlKCRmaWxlLCAkZmlsZV9yZSwgInZlcmlmeSBmaWxl bmFtZSBmb3JtYXQgZm9yIGZpbGUgJGZpbGUiKTsKKwkkZmlsZV9jb3VudCsrOworCisJbXkgKCRo aV9sc25fZm4sICRsb19sc25fZm4pID0gKCRmaWxlID1+ICRmaWxlX3JlKTsKKwlteSAoJGhpX2xz bl9iaywgJGxvX2xzbl9iaykgPSBnZXRfYmxvY2tfaW5mbygkZnVsbHBhdGgpOworCisJIyBWZXJp ZnkgdGhlIGxzbiBpbiB0aGUgYmxvY2sgY29tZXMgYmVmb3JlIHRoZSBmaWxlJ3MgbHNuCisJb2so ICRoaV9sc25fZm4gLiAkbG9fbHNuX2ZuIGd0ICRoaV9sc25fYmsgLiAkbG9fbHNuX2JrLAorCQkn dmVyaWZ5IGZpbGUtYmFzZWQgTFNOIHByZWNlZGVzIGJsb2NrLWJhc2VkIG9uZScpOworfQorCisj IFZhbGlkYXRlIHRoYXQgd2UgZW5kZWQgdXAgd2l0aCBzb21lIEZQSXMgc2F2ZWQKK29rKCRmaWxl X2NvdW50ID4gMCwgJ3ZlcmlmeSB3ZSBwcm9jZXNzZWQgc29tZSBmaWxlcycpOworCitkb25lX3Rl c3RpbmcoKTsKLS0gCjIuMzQuMQoK --0000000000004a94a305f092648a--