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 1pY0J2-0003d2-QW for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Mar 2023 07:58:21 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pY0J1-0001K4-CY for pgsql-hackers@arkaria.postgresql.org; Fri, 03 Mar 2023 07:58:19 +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 1pY0J0-0001Jp-TP for pgsql-hackers@lists.postgresql.org; Fri, 03 Mar 2023 07:58:19 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pY0Iu-0000Q7-U7 for pgsql-hackers@postgresql.org; Fri, 03 Mar 2023 07:58:18 +0000 Received: by mail-pl1-x631.google.com with SMTP id p20so1847375plw.13 for ; Thu, 02 Mar 2023 23:58:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20210112.gappssmtp.com; s=20210112; t=1677830290; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=fB5GLOfnN4Z+xAXcwQJba1L+cHB7vg1LUPDbUhCR2tQ=; b=M2YcmaSFASuU8EmDjtMZOr6atqAYpVC08VitL2Q83TUFZu21FkYWCXonUMvO2mN+Tz k8cv8MmMOPweiizgjjvuSAQdh8L5CgT/HLbdKxda3iPK2ar4UpOTL2Pod32IxVgNul9C Ofx83PaFl8plDLRtll8t0lQuTVK27F149l4t+UkIcUI7xQ+EExuHSg0bmAarobuvuJtc EBPspqRReOPeHg+KslHh+UL9fxp3ir6+q+mAQaEIfx3R4yGtiX2rTQwHYrcQFtoDaJd8 tVzIhGR4vS+JGhilNmTWqBVd8BrkmonXeDTnQF54f53A4YXrbzH53KQNFDDRm2uoWbiK pdZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677830290; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=fB5GLOfnN4Z+xAXcwQJba1L+cHB7vg1LUPDbUhCR2tQ=; b=gqRuBxKF2kVHAeuk5fMEhC1DB77/z/Uj3hTY9wCfN5qnTlmVqB7aixj8VVMt2rLH5+ nn6LhhxCAGXnLc5ut9PIAuCpNhBCJ61tX1rlvSmzzZdjOjS1FxS/GiSgf/fyPnOpuwmy Z7fIYbSrF/Kos8p19B/Ng376Tm0TNOf9tQmixBWR1mXjQq5f9O1nTNuCjSYAR66AJHEB d3eWEKnhhQjVe2OUTS7JAi6cqRpiv8zT0YyzdYez/JZ8HjJcYDtDfhaAjnYSAWpO6qrB GWhi+vOkCa8HXMEjLtoS+LYsnAnUwYOSP3YP0+ArxdzWloGS1dDrcv//zuS0Wg70OmWB sshw== X-Gm-Message-State: AO0yUKXV8lwPK5pFLNtZrFUymcVdwTDHtjji8kv14cHwaZQPkSkPdNGb bX1V0ZKDooaMa5Lc6YkLxbFSkQ== X-Google-Smtp-Source: AK7set9K0o9MNgsJ02DMIY3WnDEo6Qi8qijAE88e6COJZ5PMkfYBhv1zocXSvrsvI/0jniweTd4Dfg== X-Received: by 2002:a17:902:e844:b0:19c:d97f:5d28 with SMTP id t4-20020a170902e84400b0019cd97f5d28mr1412848plg.32.1677830290485; Thu, 02 Mar 2023 23:58:10 -0800 (PST) Received: from jeff-laptop.lan (c-73-231-146-4.hsd1.ca.comcast.net. [73.231.146.4]) by smtp.gmail.com with ESMTPSA id km12-20020a17090327cc00b0019e30e3068bsm889471plb.168.2023.03.02.23.58.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Mar 2023 23:58:09 -0800 (PST) Message-ID: <6ab352de1553c1e3d0c7d97c038dc470ca51e772.camel@j-davis.com> Subject: Re: Minimal logical decoding on standbys From: Jeff Davis To: "Drouvot, Bertrand" , Andres Freund Cc: Robert Haas , Thomas Munro , Alvaro Herrera , Ibrar Ahmed , Amit Khandekar , fabriziomello@gmail.com, tushar , Rahila Syed , pgsql-hackers Date: Thu, 02 Mar 2023 23:58:07 -0800 In-Reply-To: References: <1f2ad9fd-53ff-74cc-a602-72d45423bcab@gmail.com> <05c0c4f3-82eb-bc6d-c876-5a265c05927b@gmail.com> <20230106034036.2m4qnn7ep7b5ipet@awork3.anarazel.de> <490206c5-bcde-e558-628a-dc67dae4d439@gmail.com> <20230119024617.jzsgpcrgjdc6ysge@awork3.anarazel.de> <94d9d47e-72f4-393a-246e-e3fe8db7b741@gmail.com> <2d314c22b9e03415aa1c7d8fd1f698dae60effa7.camel@j-davis.com> <061eeb26-156e-6011-02b6-b4b1422e2aa6@gmail.com> <8a7da0c2-b7fe-1c78-4e47-a16239bf4839@gmail.com> Content-Type: multipart/mixed; boundary="=-8VilUbKoICzmX5hnbAG3" User-Agent: Evolution 3.44.4-0ubuntu1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-8VilUbKoICzmX5hnbAG3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, 2023-03-02 at 11:45 -0800, Jeff Davis wrote: > In this case it looks easier to add the right API than to be sure > about > whether it's needed or not. I attached a sketch of one approach. I'm not very confident that it's the right API or even that it works as I intended it, but if others like the approach I can work on it some more. --=20 Jeff Davis PostgreSQL Contributor Team - AWS --=-8VilUbKoICzmX5hnbAG3 Content-Disposition: attachment; filename="v1-0001-Introduce-ConditionVariableEventSleep.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v1-0001-Introduce-ConditionVariableEventSleep.patch"; charset="UTF-8" RnJvbSBhZGExYzhmMzczY2FhOTcxZGMwZDhlZjIxNDRmMWUwMTEwMGQzMzVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBX ZWQsIDEgTWFyIDIwMjMgMjA6MDI6NDIgLTA4MDAKU3ViamVjdDogW1BBVENIIHYxXSBJbnRyb2R1 Y2UgQ29uZGl0aW9uVmFyaWFibGVFdmVudFNsZWVwKCkuCgpUaGUgbmV3IEFQSSB0YWtlcyBhIFdh aXRFdmVudFNldCB3aGljaCBjYW4gaW5jbHVkZSBzb2NrZXQgZXZlbnRzLiBUaGUKV2FpdEV2ZW50 U2V0IG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkKQ29uZGl0aW9uVmFyaWFibGVXYWl0U2V0Q3Jl YXRlKCksIGFub3RoZXIgbmV3IGZ1bmN0aW9uLCBzbyB0aGF0IGl0CmluY2x1ZGVzIHRoZSB3YWl0 IGV2ZW50cyBuZWNlc3NhcnkgZm9yIGEgY29uZGl0aW9uIHZhcmlhYmxlLgotLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9jb25kaXRpb25fdmFyaWFibGUuYyB8IDEwMiArKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICAgICAgICB8ICAg NiArKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmggICAgICB8ICAxMCAr KwogNCBmaWxlcyBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvY29uZGl0aW9uX3ZhcmlhYmxlLmMKaW5kZXggN2Uy YmJmNDZkOS4uNGRjNjEwOTc4NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L2NvbmRpdGlvbl92YXJpYWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9jb25k aXRpb25fdmFyaWFibGUuYwpAQCAtMjcsOSArMjcsMjkgQEAKICNpbmNsdWRlICJzdG9yYWdlL3Nw aW4uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogCisjZGVmaW5lIENvbmRpdGlvblZh cmlhYmxlV2FpdFNldExhdGNoUG9zCTAKKwogLyogSW5pdGlhbGx5LCB3ZSBhcmUgbm90IHByZXBh cmVkIHRvIHNsZWVwIG9uIGFueSBjb25kaXRpb24gdmFyaWFibGUuICovCiBzdGF0aWMgQ29uZGl0 aW9uVmFyaWFibGUgKmN2X3NsZWVwX3RhcmdldCA9IE5VTEw7CiAKKy8qIFVzZWQgYnkgQ29uZGl0 aW9uVmFyaWFibGVTbGVlcCgpIGFuZCBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoKS4gKi8K K3N0YXRpYyBXYWl0RXZlbnRTZXQgKkNvbmRpdGlvblZhcmlhYmxlV2FpdFNldCA9IE5VTEw7CisK Ky8qCisgKiBJbml0aWFsaXplIHRoZSBwcm9jZXNzLWxvY2FsIGNvbmRpdGlvbiB2YXJpYWJsZSBX YWl0RXZlbnRTZXQuCisgKgorICogVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIGR1cmluZyBzdGFy dHVwIG9mIGFueSBwcm9jZXNzIHRoYXQgY2FuIHdhaXQgb24KKyAqIGNvbmRpdGlvbiB2YXJpYWJs ZXMsIGJlZm9yZSBpdCBpc3N1ZXMgYW55IENvbmRpdGlvblZhcmlhYmxlSW5pdCgpIGNhbGxzLgor ICovCit2b2lkCitJbml0aWFsaXplQ29uZGl0aW9uVmFyaWFibGVXYWl0U2V0KHZvaWQpCit7CisJ QXNzZXJ0KENvbmRpdGlvblZhcmlhYmxlV2FpdFNldCA9PSBOVUxMKTsKKworCUNvbmRpdGlvblZh cmlhYmxlV2FpdFNldCA9IENvbmRpdGlvblZhcmlhYmxlV2FpdFNldENyZWF0ZSgKKwkJVG9wTWVt b3J5Q29udGV4dCwgMCk7Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIGEgY29uZGl0aW9uIHZhcmlh YmxlLgogICovCkBAIC00MCw2ICs2MCw1MSBAQCBDb25kaXRpb25WYXJpYWJsZUluaXQoQ29uZGl0 aW9uVmFyaWFibGUgKmN2KQogCXByb2NsaXN0X2luaXQoJmN2LT53YWtldXApOwogfQogCisvKgor ICogQ3JlYXRlIGEgV2FpdEV2ZW50U2V0IGZvciBDb25kaXRpb25WYXJpYWJsZUV2ZW50U2xlZXAo KS4gVGhpcyBzaG91bGQgYmUKKyAqIHVzZWQgd2hlbiB0aGUgY2FsbGVyIG9mIENvbmRpdGlvblZh cmlhYmxlRXZlbnRTbGVlcCgpIHdvdWxkIGxpa2UgdG8gd2FrZSB1cAorICogb24gZWl0aGVyIHRo ZSBjb25kaXRpb24gdmFyaWFibGUgc2lnbmFsIG9yIGEgc29ja2V0IGV2ZW50LiBGb3IgZXhhbXBs ZToKKyAqCisgKiAgIENvbmRpdGlvblZhcmlhYmxlSW5pdCgmY3YpOworICogICB3YWl0c2V0ID0g Q29uZGl0aW9uVmFyaWFibGVXYWl0U2V0Q3JlYXRlKG1jeHQsIDEpOworICogICBldmVudF9wb3Mg PSBBZGRXYWl0RXZlbnRUb1NldCh3YWl0c2V0LCAwLCBzb2NrLCBOVUxMLCBOVUxMKTsKKyAqICAg Li4uCisgKiAgIENvbmRpdGlvblZhcmlhYmxlUHJlcGFyZVRvU2xlZXAoJmN2KTsKKyAqICAgd2hp bGUgKC4uLmNvbmRpdGlvbiBub3QgbWV0Li4uKQorICogICB7CisgKiAgICAgICBzb2NrZXRfd2Fp dF9ldmVudHMgPSAuLi4KKyAqICAgICAgIE1vZGlmeVdhaXRFdmVudCh3YWl0c2V0LCBldmVudF9w b3MsIHNvY2tldF93YWl0X2V2ZW50cywgTlVMTCk7CisgKiAgICAgICBDb25kaXRpb25WYXJpYWJs ZUV2ZW50U2xlZXAoJmN2LCB3YWl0c2V0LCAuLi4pOworICogICB9CisgKiAgIENvbmRpdGlvblZh cmlhYmxlQ2FuY2VsU2xlZXAoKTsKKyAqCisgKiBUaGUgd2FpdHNldCBpcyBjcmVhdGVkIHdpdGgg dGhlIHN0YW5kYXJkIGV2ZW50cyBmb3IgYSBjb25kaXRpb24gdmFyaWFibGUsCisgKiBhbmQgcm9v bSBmb3IgYWRkaW5nIG5fc29ja2V0X2V2ZW50cyBhZGRpdGlvbmFsIHNvY2tldCBldmVudHMuIFRo ZQorICogaW5pdGlhbGx5LWZpbGxlZCBldmVudCBwb3NpdGlvbnMgc2hvdWxkIG5vdCBiZSBtb2Rp ZmllZCwgYnV0IGFkZGVkIHNvY2tldAorICogZXZlbnRzIGNhbiBiZSBtb2RpZmllZC4gVGhlIHNh bWUgd2FpdHNldCBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgY29uZGl0aW9uCisgKiB2YXJpYWJs ZXMgYXMgbG9uZyBhcyB0aGUgY2FsbGVycyBvZiBDb25kaXRpb25WYXJpYWJsZUV2ZW50U2xlZXAo KSBhcmUKKyAqIGludGVyZXN0ZWQgaW4gdGhlIHNhbWUgc29ja2V0cy4KKyAqLworV2FpdEV2ZW50 U2V0ICoKK0NvbmRpdGlvblZhcmlhYmxlV2FpdFNldENyZWF0ZShNZW1vcnlDb250ZXh0IG1jeHQs IGludCBuX3NvY2tldF9ldmVudHMpCit7CisJaW50CQkJCSBsYXRjaF9wb3MgICBQR19VU0VEX0ZP Ul9BU1NFUlRTX09OTFk7CisJaW50CQkJCSBuX2N2X2V2ZW50cyA9IElzVW5kZXJQb3N0bWFzdGVy ID8gMiA6IDE7CisJaW50CQkJCSBuZXZlbnRzCSA9IG5fY3ZfZXZlbnRzICsgbl9zb2NrZXRfZXZl bnRzOworCVdhaXRFdmVudFNldCAgICAqd2FpdHNldAkgPSBDcmVhdGVXYWl0RXZlbnRTZXQobWN4 dCwgbmV2ZW50cyk7CisKKwlsYXRjaF9wb3MgPSBBZGRXYWl0RXZlbnRUb1NldCh3YWl0c2V0LCBX TF9MQVRDSF9TRVQsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkJCSAgTXlMYXRjaCwgTlVMTCk7 CisKKwlpZiAoSXNVbmRlclBvc3RtYXN0ZXIpCisJCUFkZFdhaXRFdmVudFRvU2V0KHdhaXRzZXQs IFdMX0VYSVRfT05fUE1fREVBVEgsIFBHSU5WQUxJRF9TT0NLRVQsCisJCQkJCQkgIE5VTEwsIE5V TEwpOworCisJQXNzZXJ0KGxhdGNoX3BvcyA9PSBDb25kaXRpb25WYXJpYWJsZVdhaXRTZXRMYXRj aFBvcyk7CisKKwlyZXR1cm4gd2FpdHNldDsKK30KKwogLyoKICAqIFByZXBhcmUgdG8gd2FpdCBv biBhIGdpdmVuIGNvbmRpdGlvbiB2YXJpYWJsZS4KICAqCkBAIC05Nyw3ICsxNjIsOCBAQCBDb25k aXRpb25WYXJpYWJsZVByZXBhcmVUb1NsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdikKIHZvaWQK IENvbmRpdGlvblZhcmlhYmxlU2xlZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCB1aW50MzIgd2Fp dF9ldmVudF9pbmZvKQogewotCSh2b2lkKSBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xlZXAoY3Ys IC0xIC8qIG5vIHRpbWVvdXQgKi8gLAorCSh2b2lkKSBDb25kaXRpb25WYXJpYWJsZUV2ZW50U2xl ZXAoY3YsIENvbmRpdGlvblZhcmlhYmxlV2FpdFNldCwKKwkJCQkJCQkJCSAgIC0xIC8qIG5vIHRp bWVvdXQgKi8gLAogCQkJCQkJCQkJICAgd2FpdF9ldmVudF9pbmZvKTsKIH0KIApAQCAtMTExLDEx ICsxNzcsMjcgQEAgQ29uZGl0aW9uVmFyaWFibGVTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3Ys IHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pCiBib29sCiBDb25kaXRpb25WYXJpYWJsZVRpbWVkU2xl ZXAoQ29uZGl0aW9uVmFyaWFibGUgKmN2LCBsb25nIHRpbWVvdXQsCiAJCQkJCQkJdWludDMyIHdh aXRfZXZlbnRfaW5mbykKK3sKKwlyZXR1cm4gQ29uZGl0aW9uVmFyaWFibGVFdmVudFNsZWVwKGN2 LCBDb25kaXRpb25WYXJpYWJsZVdhaXRTZXQsIHRpbWVvdXQsCisJCQkJCQkJCQkgICB3YWl0X2V2 ZW50X2luZm8pOworfQorCisvKgorICogV2FpdCBmb3IgYSBjb25kaXRpb24gdmFyaWFibGUgdG8g YmUgc2lnbmFsZWQsIGEgdGltZW91dCB0byBiZSByZWFjaGVkLCBvciBhCisgKiBzb2NrZXQgZXZl bnQgaW4gdGhlIGdpdmVuIHdhaXRzZXQuIFRoZSB3YWl0c2V0IG11c3QgaGF2ZSBiZWVuIGNyZWF0 ZWQgYnkKKyAqIENvbmRpdGlvblZhcmlhYmxlV2FpdFNldENyZWF0ZSgpLgorICoKKyAqIFJldHVy bnMgdHJ1ZSB3aGVuIHRpbWVvdXQgZXhwaXJlcywgb3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisg KgorICogU2VlIENvbmRpdGlvblZhcmlhYmxlU2xlZXAoKSBmb3IgZ2VuZXJhbCB1c2FnZS4KKyAq LworYm9vbAorQ29uZGl0aW9uVmFyaWFibGVFdmVudFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpj diwgV2FpdEV2ZW50U2V0ICp3YWl0c2V0LAorCQkJCQkJCWxvbmcgdGltZW91dCwgdWludDMyIHdh aXRfZXZlbnRfaW5mbykKIHsKIAlsb25nCQljdXJfdGltZW91dCA9IC0xOwogCWluc3RyX3RpbWUJ c3RhcnRfdGltZTsKIAlpbnN0cl90aW1lCWN1cl90aW1lOwotCWludAkJCXdhaXRfZXZlbnRzOwog CiAJLyoKIAkgKiBJZiB0aGUgY2FsbGVyIGRpZG4ndCBwcmVwYXJlIHRvIHNsZWVwIGV4cGxpY2l0 bHksIHRoZW4gZG8gc28gbm93IGFuZApAQCAtMTQ3LDI0ICsyMjksMjggQEAgQ29uZGl0aW9uVmFy aWFibGVUaW1lZFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQlJ TlNUUl9USU1FX1NFVF9DVVJSRU5UKHN0YXJ0X3RpbWUpOwogCQlBc3NlcnQodGltZW91dCA+PSAw ICYmIHRpbWVvdXQgPD0gSU5UX01BWCk7CiAJCWN1cl90aW1lb3V0ID0gdGltZW91dDsKLQkJd2Fp dF9ldmVudHMgPSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFU SDsKIAl9Ci0JZWxzZQotCQl3YWl0X2V2ZW50cyA9IFdMX0xBVENIX1NFVCB8IFdMX0VYSVRfT05f UE1fREVBVEg7CiAKIAl3aGlsZSAodHJ1ZSkKIAl7CiAJCWJvb2wJCWRvbmUgPSBmYWxzZTsKKwkJ V2FpdEV2ZW50CWN2RXZlbnQ7CisJCWludAkJCW5ldmVudHM7CiAKIAkJLyoKLQkJICogV2FpdCBm b3IgbGF0Y2ggdG8gYmUgc2V0LiAgKElmIHdlJ3JlIGF3YWtlbmVkIGZvciBzb21lIG90aGVyCi0J CSAqIHJlYXNvbiwgdGhlIGNvZGUgYmVsb3cgd2lsbCBjb3BlIGFueXdheS4pCisJCSAqIFdhaXQg Zm9yIGxhdGNoIHRvIGJlIHNldCwgb3Igb3RoZXIgZXZlbnRzIHdoaWNoIHdpbGwgYmUgaGFuZGxl ZAorCQkgKiBiZWxvdy4KIAkJICovCi0JCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwgd2FpdF9l dmVudHMsIGN1cl90aW1lb3V0LCB3YWl0X2V2ZW50X2luZm8pOworCQluZXZlbnRzID0gV2FpdEV2 ZW50U2V0V2FpdCh3YWl0c2V0LCBjdXJfdGltZW91dCwgJmN2RXZlbnQsCisJCQkJCQkJCSAgIDEs IHdhaXRfZXZlbnRfaW5mbyk7CiAKIAkJLyogUmVzZXQgbGF0Y2ggYmVmb3JlIGV4YW1pbmluZyB0 aGUgc3RhdGUgb2YgdGhlIHdhaXQgbGlzdC4gKi8KIAkJUmVzZXRMYXRjaChNeUxhdGNoKTsKIAor CQkvKiBJZiBhIHNvY2tldCBldmVudCBvY2N1cnJlZCwgbm8gbmVlZCB0byBjaGVjayB3YWl0IGxp c3QuICovCisJCWlmIChuZXZlbnRzID09IDEgJiYgKGN2RXZlbnQuZXZlbnRzICYgV0xfU09DS0VU X01BU0spICE9IDApCisJCQlyZXR1cm4gdHJ1ZTsKKwogCQkvKgogCQkgKiBJZiB0aGlzIHByb2Nl c3MgaGFzIGJlZW4gdGFrZW4gb3V0IG9mIHRoZSB3YWl0IGxpc3QsIHRoZW4gd2Uga25vdwogCQkg KiB0aGF0IGl0IGhhcyBiZWVuIHNpZ25hbGVkIGJ5IENvbmRpdGlvblZhcmlhYmxlU2lnbmFsIChv cgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggMjJiNDI3ODYxMC4uYWU0YTdhZWNkNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC00NDAsNiArNDQwLDkgQEAgSW5pdFByb2Nlc3Modm9p ZCkKIAlPd25MYXRjaCgmTXlQcm9jLT5wcm9jTGF0Y2gpOwogCVN3aXRjaFRvU2hhcmVkTGF0Y2go KTsKIAorCS8qIEluaXRpYWxpemUgcHJvY2Vzcy1sb2NhbCBjb25kaXRpb24gdmFyaWFibGUgc3Vw cG9ydCAqLworCUluaXRpYWxpemVDb25kaXRpb25WYXJpYWJsZVdhaXRTZXQoKTsKKwogCS8qIG5v dyB0aGF0IHdlIGhhdmUgYSBwcm9jLCByZXBvcnQgd2FpdCBldmVudHMgdG8gc2hhcmVkIG1lbW9y eSAqLwogCXBnc3RhdF9zZXRfd2FpdF9ldmVudF9zdG9yYWdlKCZNeVByb2MtPndhaXRfZXZlbnRf aW5mbyk7CiAKQEAgLTU5Niw2ICs1OTksOSBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vzcyh2b2lkKQog CU93bkxhdGNoKCZNeVByb2MtPnByb2NMYXRjaCk7CiAJU3dpdGNoVG9TaGFyZWRMYXRjaCgpOwog CisJLyogSW5pdGlhbGl6ZSBwcm9jZXNzLWxvY2FsIGNvbmRpdGlvbiB2YXJpYWJsZSBzdXBwb3J0 ICovCisJSW5pdGlhbGl6ZUNvbmRpdGlvblZhcmlhYmxlV2FpdFNldCgpOworCiAJLyogbm93IHRo YXQgd2UgaGF2ZSBhIHByb2MsIHJlcG9ydCB3YWl0IGV2ZW50cyB0byBzaGFyZWQgbWVtb3J5ICov CiAJcGdzdGF0X3NldF93YWl0X2V2ZW50X3N0b3JhZ2UoJk15UHJvYy0+d2FpdF9ldmVudF9pbmZv KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9taXNjaW5pdC5jCmluZGV4IDU5NTMyYmJkODAuLjg3MzFkMDc2 Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvbWlzY2luaXQuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L21pc2Npbml0LmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs dWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgogI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNo LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9wb3N0bWFzdGVyLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaAppbmRleCA1ODliZGQzMjNjLi45NGFkYjU0Yjkx IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oCisr KyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgKQEAgLTIyLDYgKzIy LDcgQEAKICNpZm5kZWYgQ09ORElUSU9OX1ZBUklBQkxFX0gKICNkZWZpbmUgQ09ORElUSU9OX1ZB UklBQkxFX0gKIAorI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNsdWRlICJzdG9yYWdl L3Byb2NsaXN0X3R5cGVzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKQEAgLTQyLDkg KzQzLDE0IEBAIHR5cGVkZWYgdW5pb24gQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFsbHlQYWRkZWQK IAljaGFyCQlwYWRbQ1ZfTUlOSU1BTF9TSVpFXTsKIH0gQ29uZGl0aW9uVmFyaWFibGVNaW5pbWFs bHlQYWRkZWQ7CiAKK2V4dGVybiB2b2lkIEluaXRpYWxpemVDb25kaXRpb25WYXJpYWJsZVdhaXRT ZXQodm9pZCk7CisKIC8qIEluaXRpYWxpemUgYSBjb25kaXRpb24gdmFyaWFibGUuICovCiBleHRl cm4gdm9pZCBDb25kaXRpb25WYXJpYWJsZUluaXQoQ29uZGl0aW9uVmFyaWFibGUgKmN2KTsKIAor ZXh0ZXJuIFdhaXRFdmVudFNldCAqQ29uZGl0aW9uVmFyaWFibGVXYWl0U2V0Q3JlYXRlKE1lbW9y eUNvbnRleHQgbWN4dCwKKwkJCQkJCQkJCQkJCQlpbnQgbl9zb2NrZXRfZXZlbnRzKTsKKwogLyoK ICAqIFRvIHNsZWVwIG9uIGEgY29uZGl0aW9uIHZhcmlhYmxlLCBhIHByb2Nlc3Mgc2hvdWxkIHVz ZSBhIGxvb3Agd2hpY2ggZmlyc3QKICAqIGNoZWNrcyB0aGUgY29uZGl0aW9uLCBleGl0aW5nIHRo ZSBsb29wIGlmIGl0IGlzIG1ldCwgYW5kIHRoZW4gY2FsbHMKQEAgLTU2LDYgKzYyLDEwIEBAIGV4 dGVybiB2b2lkIENvbmRpdGlvblZhcmlhYmxlSW5pdChDb25kaXRpb25WYXJpYWJsZSAqY3YpOwog ZXh0ZXJuIHZvaWQgQ29uZGl0aW9uVmFyaWFibGVTbGVlcChDb25kaXRpb25WYXJpYWJsZSAqY3Ys IHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIGJvb2wgQ29uZGl0aW9uVmFyaWFibGVU aW1lZFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwgbG9uZyB0aW1lb3V0LAogCQkJCQkJCQkJ CXVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOworZXh0ZXJuIGJvb2wgQ29uZGl0aW9uVmFyaWFibGVF dmVudFNsZWVwKENvbmRpdGlvblZhcmlhYmxlICpjdiwKKwkJCQkJCQkJCQlXYWl0RXZlbnRTZXQg KmN2RXZlbnRTZXQsCisJCQkJCQkJCQkJbG9uZyB0aW1lb3V0LAorCQkJCQkJCQkJCXVpbnQzMiB3 YWl0X2V2ZW50X2luZm8pOwogZXh0ZXJuIHZvaWQgQ29uZGl0aW9uVmFyaWFibGVDYW5jZWxTbGVl cCh2b2lkKTsKIAogLyoKLS0gCjIuMzQuMQoK --=-8VilUbKoICzmX5hnbAG3--