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 1vAiCP-005GdE-WB for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Oct 2025 05:12:49 +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 1vAiCM-00EKQ0-W4 for pgsql-hackers@arkaria.postgresql.org; Mon, 20 Oct 2025 05:12:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vAiCM-00EKPr-9x for pgsql-hackers@lists.postgresql.org; Mon, 20 Oct 2025 05:12:45 +0000 Received: from fhigh-b3-smtp.messagingengine.com ([202.12.124.154]) by makus.postgresql.org with smtp (Exim 4.96) (envelope-from ) id 1vAiCG-002j8L-1S for pgsql-hackers@postgresql.org; Mon, 20 Oct 2025 05:12:44 +0000 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfhigh.stl.internal (Postfix) with ESMTP id 4011D7A002B; Mon, 20 Oct 2025 01:12:39 -0400 (EDT) Received: from phl-imap-03 ([10.202.2.93]) by phl-compute-04.internal (MEProxy); Mon, 20 Oct 2025 01:12:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=compiler.org; h= cc:cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1760937159; x=1761023559; bh=gTPa/16rKu Q61GBPwep915fxOGNfhD+5mVWhaphcczg=; b=j8HfX+IGg07ZCVpwNNJVPcN6VJ BFZGZGtktpIf27HqzpOTzAFIKfv9441A0zEnpErra0kjzJYEoP94aDN6zVNpjNQY GTNLYjJIP512enoEXgjG96jVKEhdb571li7SubjVAi9LfIdM5VS+YdtmamxIq8+c VawmHnuzzWb0IULtZuljp2YiR9JVayUAzeBKvIcqhHjTaTxcON/NcHgYz2u4Nuxv UbnE8PP1/+60qpmjgMrl04j8ClcgHAHS3BuKe9WeGBRpqJK3S06YHnTg5/Yn5GMF hKvOWFugXBwg0yqpTV2NlQbMt+21julJvz21hzDVPCwocTdcmiz2pmAl3uEQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1760937159; x=1761023559; bh=gTPa/16rKuQ61GBPwep915fxOGNfhD+5mVW haphcczg=; b=Zg2Kv1GUXXFMbA6tIfWd+HaV9jlIm4roYarhOHzZqldrG+4IdCD 6YJDtI4wJutOuccf5pN8JsQD30vgM4jgLbaG7iI/ozyM/rIJ0YfagKtuoUoa2Bao 6MFubaFIgDAhZ241EUeVf6kfgR93TDbjl3dJy4lBdzizTlFds8BFWFzTTDecvA6W p++JrmG2/nwchpVt7zLAzM7scOMqVfNHJS5gFzZxPkK3vwVBx6GR/+kdIUgKl4jv /vUsCZr0/bj7Alem3aKoRY1UMDvz0cKeKvQNP0mycTWc9dhKBukpcG32qdnBW6Ko y4uSAEw/T5hSpvneiEhuV5qfAqRLS7AwtOw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtdeggddufeeileehucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucenucfjughrpefoggffhffvvefkjghfufgtsehmtderre ertddtnecuhfhrohhmpedflfhovghlucflrggtohgsshhonhdfuceojhhovghlsegtohhm phhilhgvrhdrohhrgheqnecuggftrfgrthhtvghrnhepfffgleffffdvhefhieegfeeije dujedvieeuveeugefgveeukeevieethefhteeinecuvehluhhsthgvrhfuihiivgeptden ucfrrghrrghmpehmrghilhhfrhhomhepjhhovghlsegtohhmphhilhgvrhdrohhrghdpnh gspghrtghpthhtohepfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheplhhirdgv vhgrnhdrtghhrghosehgmhgrihhlrdgtohhmpdhrtghpthhtohepphhgshhqlhdqhhgrtg hkvghrshesphhoshhtghhrvghsqhhlrdhorhhgpdhrtghpthhtohepthhglhesshhsshdr phhghhdrphgrrdhush X-ME-Proxy: Feedback-ID: ic6394509:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 672A518E0054; Mon, 20 Oct 2025 01:12:38 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface MIME-Version: 1.0 X-ThreadId: AE1r89ybsZ1g Date: Mon, 20 Oct 2025 07:12:18 +0200 From: "Joel Jacobson" To: "Tom Lane" Cc: "Chao Li" , pgsql-hackers Message-Id: <839e38ff-a9d0-47f2-a9cf-70808f4f5b0d@app.fastmail.com> In-Reply-To: <2701b873-46ca-4844-a892-a166ee101af9@app.fastmail.com> References: <6899c044-4a82-49be-8117-e6f669765f7e@app.fastmail.com> <165530.1752362320@sss.pgh.pa.us> <02a7cd37-e2fc-4212-8b19-f8c239c95fb8@app.fastmail.com> <96f00bf1-cc9d-4520-9d02-9e14e7767c88@app.fastmail.com> <30c2aa7d-dd6c-4b68-a2e4-f217a1a34acf@app.fastmail.com> <0b4d402a-9ac2-4aa8-acf8-8231dbe579ea@app.fastmail.com> <3095599.1758644879@sss.pgh.pa.us> <0dc6a2cc-5216-4dc1-9dd2-430cafc6095b@app.fastmail.com> <52CC167F-763B-4ECA-B0B4-DAB381816828@gmail.com> <9186C6D0-F7A9-482A-9183-89E530B57E36@gmail.com> <1073593.1759423179@sss.pgh.pa.us> <4bd5e6c4-6fa7-44bb-869d-59a32a331fa8@app.fastmail.com> <85828f29-e72e-4400-94f3-9a69bc8dc239@app.fastmail.com> <2495353.1759860890@sss.pgh.pa.us> <8aeae418-92a6-4bbd-9c06-9574c79e59f7@app.fastmail.com> <2531672.1759868124@sss.pgh.pa.us> <474efa78-337c-41cd-a73a-f845a0115109@app.fastmail.com> <2749343.1759949176@sss.pgh.pa.us> <8bfca2be-1ec0-4e15-aafb-0b7b661fe936@app.fastmail.com> <9eba307f-f2fb-48f0-9507-2e197f39ef9e@app.fastmail.com> <8c71183a-0d28-4bcf-a806-78446ff95404@app.fastmail.com> <1009807.1760476747@sss.pgh.pa.us> <1F7227F5-C33D-4E2C-8511-33F1468590D0@gmail.com> <0a5a20d3-4621-46b3-b2ab-903f63a20dea@app.fastmail.com> <6F913129-ABEF-4004-AAF3-F22FC34!29AE8@gmail.com> <1547585.1760645808@sss.pgh.pa.us> <2701b873-46ca-4844-a892-a166ee101af9@app.fastmail.com> Subject: Re: Optimize LISTEN/NOTIFY Content-Type: multipart/mixed; boundary=a1dffb08de694124a766fe314e1428db List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --a1dffb08de694124a766fe314e1428db Content-Type: text/plain Content-Transfer-Encoding: 7bit On Mon, Oct 20, 2025, at 00:10, Joel Jacobson wrote: > Attachments: > * 0001-optimize_listen_notify-v20.patch > * 0002-optimize_listen_notify-v20.patch > * 0002-optimize_listen_notify-v20-alt1.txt > * 0002-optimize_listen_notify-v20-alt3.txt > * 0002-optimize_listen_notify-v20-alt2.txt Attaching a new alt1 version, that fixes the mistake of using max(pos, advisoryPos) for lag calculation, which is wrong, since in alt1 it's the backend itself that updates its 'pos' when it wakes up, and it's 'pos' that asyncQueueAdvanceTail looks at, in alt1. /Joel --a1dffb08de694124a766fe314e1428db Content-Disposition: attachment; filename*0="0002-optimize_listen_notify-v20-alt1-v2.txt" Content-Type: text/plain; name="0002-optimize_listen_notify-v20-alt1-v2.txt" Content-Transfer-Encoding: base64 RnJvbSA0OTNmMDUxMzBmZWJiZDhjNGJjMGJjMjUzM2UyMmVjNmRkZjZkNWY1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2VsIEphY29ic29uIDxqb2VsQGNvbXBpbGVyLm9y Zz4KRGF0ZTogU3VuLCAxOSBPY3QgMjAyNSAwODowODowNSArMDIwMApTdWJqZWN0OiBbUEFU Q0hdIEltcGxlbWVudHMgaWRlYSAjMTogYWR2aXNvcnlQb3MKCi0tLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvYXN5bmMuYyB8IDY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQogMSBmaWxlIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMKaW5kZXggNGU2NTU2ZmI4ZDEuLjRhOGE2ZjViZjFiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2FzeW5jLmMKQEAgLTI2NCw2ICsyNjQsMTEgQEAgdHlwZWRlZiBzdHJ1 Y3QgUXVldWVQb3NpdGlvbgogCSAoeCkucGFnZSAhPSAoeSkucGFnZSA/ICh4KSA6IFwKIAkg KHgpLm9mZnNldCA+ICh5KS5vZmZzZXQgPyAoeCkgOiAoeSkpCiAKKy8qIHJldHVybnMgdHJ1 ZSBpZiB4IGNvbWVzIGJlZm9yZSB5IGluIHF1ZXVlIG9yZGVyICovCisjZGVmaW5lIFFVRVVF X1BPU19QUkVDRURFUyh4LHkpIFwKKwkoYXN5bmNRdWV1ZVBhZ2VQcmVjZWRlcygoeCkucGFn ZSwgKHkpLnBhZ2UpIHx8IFwKKwkgKCh4KS5wYWdlID09ICh5KS5wYWdlICYmICh4KS5vZmZz ZXQgPCAoeSkub2Zmc2V0KSkKKwogLyoKICAqIFBhcmFtZXRlciBkZXRlcm1pbmluZyBob3cg b2Z0ZW4gd2UgdHJ5IHRvIGFkdmFuY2UgdGhlIHRhaWwgcG9pbnRlcjoKICAqIHdlIGRvIHRo YXQgYWZ0ZXIgZXZlcnkgUVVFVUVfQ0xFQU5VUF9ERUxBWSBwYWdlcyBvZiBOT1RJRlkgZGF0 YS4gIFRoaXMgaXMKQEAgLTI4Niw2ICsyOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBRdWV1ZUJh Y2tlbmRTdGF0dXMKIAlPaWQJCQlkYm9pZDsJCQkvKiBiYWNrZW5kJ3MgZGF0YWJhc2UgT0lE LCBvciBJbnZhbGlkT2lkICovCiAJUHJvY051bWJlcgluZXh0TGlzdGVuZXI7CS8qIGlkIG9m IG5leHQgbGlzdGVuZXIsIG9yIElOVkFMSURfUFJPQ19OVU1CRVIgKi8KIAlRdWV1ZVBvc2l0 aW9uIHBvczsJCQkvKiBiYWNrZW5kIGhhcyByZWFkIHF1ZXVlIHVwIHRvIGhlcmUgKi8KKwlR dWV1ZVBvc2l0aW9uIGFkdmlzb3J5UG9zOwkvKiBiYWNrZW5kIGNvdWxkIHNraXAgcXVldWUg dG8gaGVyZSAqLwogCWJvb2wJCXdha2V1cFBlbmRpbmc7CS8qIHNpZ25hbCBzZW50IGJ1dCBu b3QgeWV0IHByb2Nlc3NlZCAqLwogfSBRdWV1ZUJhY2tlbmRTdGF0dXM7CiAKQEAgLTM0Nyw2 ICszNTMsNyBAQCBzdGF0aWMgZHNoYXNoX3RhYmxlICpjaGFubmVsSGFzaCA9IE5VTEw7CiAj ZGVmaW5lIFFVRVVFX0JBQ0tFTkRfREJPSUQoaSkJCShhc3luY1F1ZXVlQ29udHJvbC0+YmFj a2VuZFtpXS5kYm9pZCkKICNkZWZpbmUgUVVFVUVfTkVYVF9MSVNURU5FUihpKQkJKGFzeW5j UXVldWVDb250cm9sLT5iYWNrZW5kW2ldLm5leHRMaXN0ZW5lcikKICNkZWZpbmUgUVVFVUVf QkFDS0VORF9QT1MoaSkJCShhc3luY1F1ZXVlQ29udHJvbC0+YmFja2VuZFtpXS5wb3MpCisj ZGVmaW5lIFFVRVVFX0JBQ0tFTkRfQURWSVNPUllfUE9TKGkpCShhc3luY1F1ZXVlQ29udHJv bC0+YmFja2VuZFtpXS5hZHZpc29yeVBvcykKICNkZWZpbmUgUVVFVUVfQkFDS0VORF9XQUtF VVBfUEVORElORyhpKQkoYXN5bmNRdWV1ZUNvbnRyb2wtPmJhY2tlbmRbaV0ud2FrZXVwUGVu ZGluZykKIAogLyoKQEAgLTY3NCw2ICs2ODEsNyBAQCBBc3luY1NobWVtSW5pdCh2b2lkKQog CQkJUVVFVUVfQkFDS0VORF9EQk9JRChpKSA9IEludmFsaWRPaWQ7CiAJCQlRVUVVRV9ORVhU X0xJU1RFTkVSKGkpID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKIAkJCVNFVF9RVUVVRV9QT1Mo UVVFVUVfQkFDS0VORF9QT1MoaSksIDAsIDApOworCQkJU0VUX1FVRVVFX1BPUyhRVUVVRV9C QUNLRU5EX0FEVklTT1JZX1BPUyhpKSwgMCwgMCk7CiAJCQlRVUVVRV9CQUNLRU5EX1dBS0VV UF9QRU5ESU5HKGkpID0gZmFsc2U7CiAJCX0KIAl9CkBAIC0xMzEyLDYgKzEzMjAsNyBAQCBF eGVjX0xpc3RlblByZUNvbW1pdCh2b2lkKQogCQkJcHJldkxpc3RlbmVyID0gaTsKIAl9CiAJ UVVFVUVfQkFDS0VORF9QT1MoTXlQcm9jTnVtYmVyKSA9IG1heDsKKwlRVUVVRV9CQUNLRU5E X0FEVklTT1JZX1BPUyhNeVByb2NOdW1iZXIpID0gbWF4OwogCVFVRVVFX0JBQ0tFTkRfUElE KE15UHJvY051bWJlcikgPSBNeVByb2NQaWQ7CiAJUVVFVUVfQkFDS0VORF9EQk9JRChNeVBy b2NOdW1iZXIpID0gTXlEYXRhYmFzZUlkOwogCS8qIEluc2VydCBiYWNrZW5kIGludG8gbGlz dCBvZiBsaXN0ZW5lcnMgYXQgY29ycmVjdCBwb3NpdGlvbiAqLwpAQCAtMjAzMSw5ICsyMDQw LDEzIEBAIFNpZ25hbEJhY2tlbmRzKHZvaWQpCiAJICogRXZlbiB0aG91Z2ggd2UgbWF5IHRh a2UgYW5kIHJlbGVhc2UgTm90aWZ5UXVldWVMb2NrIG11bHRpcGxlIHRpbWVzCiAJICogd2hp bGUgd3JpdGluZywgdGhlIGhlYXZ5d2VpZ2h0IGxvY2sgZ3VhcmFudGVlcyB0aGlzIHJlZ2lv biBjb250YWlucwogCSAqIG9ubHkgb3VyIG1lc3NhZ2VzLiAgVGhlcmVmb3JlLCBhbnkgYmFj a2VuZCBzdGlsbCBwb3NpdGlvbmVkIGF0IHRoZQotCSAqIHF1ZXVlIGhlYWQgZnJvbSBiZWZv cmUgb3VyIHdyaXRlIGNhbiBiZSBzYWZlbHkgYWR2YW5jZWQgdG8gdGhlIGN1cnJlbnQKKwkg KiBxdWV1ZSBoZWFkIGZyb20gYmVmb3JlIG91ciB3cml0ZSBjYW4gYmUgYWR2aXNlZCB0byBz a2lwIHRvIHRoZSBjdXJyZW50CiAJICogcXVldWUgaGVhZCB3aXRob3V0IHdha2luZyBpdC4K IAkgKgorCSAqIFdlIHVzZSB0aGUgYWR2aXNvcnlQb3MgZmllbGQgcmF0aGVyIHRoYW4gZGly ZWN0bHkgbW9kaWZ5aW5nIHBvcy4KKwkgKiBUaGUgYmFja2VuZCBjb250cm9scyBpdHMgb3du IHBvcyBmaWVsZCBhbmQgd2lsbCBjaGVjayBhZHZpc29yeVBvcworCSAqIHdoZW4gaXQncyBz YWZlIHRvIGRvIHNvLgorCSAqCiAJICogRmFsc2UtcG9zaXRpdmUgcG9zc2liaWxpdHk6IGlm IGEgYmFja2VuZCB3YXMgcHJldmlvdXNseSBzaWduYWxlZCBidXQKIAkgKiBoYXNuJ3QgeWV0 IGF3b2tlbiwgd2UnbGwgc2tpcCBhZHZhbmNpbmcgaXQgKGJlY2F1c2Ugd2FrZXVwUGVuZGlu ZyBpcwogCSAqIHRydWUpLiAgVGhpcyBpcyBzYWZlIC0gdGhlIGJhY2tlbmQgd2lsbCBhZHZh bmNlIGl0cyBwb2ludGVyIHdoZW4gaXQKQEAgLTIwNDgsNiArMjA2MSw3IEBAIFNpZ25hbEJh Y2tlbmRzKHZvaWQpCiAJCSBpID0gUVVFVUVfTkVYVF9MSVNURU5FUihpKSkKIAl7CiAJCVF1 ZXVlUG9zaXRpb24gcG9zOworCQlRdWV1ZVBvc2l0aW9uIGFkdmlzb3J5UG9zOwogCQlpbnQ2 NAkJbGFnOwogCQlpbnQzMgkJcGlkOwogCkBAIC0yMDU1LDEzICsyMDY5LDIyIEBAIFNpZ25h bEJhY2tlbmRzKHZvaWQpCiAJCQljb250aW51ZTsKIAogCQlwb3MgPSBRVUVVRV9CQUNLRU5E X1BPUyhpKTsKKwkJYWR2aXNvcnlQb3MgPSBRVUVVRV9CQUNLRU5EX0FEVklTT1JZX1BPUyhp KTsKIAotCQkvKiBEaXJlY3QgYWR2YW5jZW1lbnQgZm9yIGlkbGUgYmFja2VuZHMgYXQgdGhl IG9sZCBoZWFkICovCisJCS8qCisJCSAqIERpcmVjdCBhZHZhbmNlbWVudCBmb3IgaWRsZSBi YWNrZW5kcyBhdCB0aGUgb2xkIGhlYWQuCisJCSAqCisJCSAqIFdlIGNoZWNrIGFkdmlzb3J5 UG9zIHJhdGhlciB0aGFuIHBvcyB0byBhbGxvdyBhY2N1bXVsYXRpbmcgYWR2YW5jZXMKKwkJ ICogZnJvbSBtdWx0aXBsZSBjb25zZWN1dGl2ZSBub3RpZnlpbmcgYmFja2VuZHMuICBJZiB3 ZSBjaGVja2VkIHBvcywKKwkJICogb25seSB0aGUgZmlyc3Qgbm90aWZpZXIgY291bGQgYWR2 YW5jZSBpZGxlIGJhY2tlbmRzOyBzdWJzZXF1ZW50CisJCSAqIG5vdGlmaWVycyB3b3VsZCBm aW5kIHBvcyB1bmNoYW5nZWQgKHNpbmNlIHRoZSBiYWNrZW5kIGhhc24ndCB3b2tlbgorCQkg KiB1cCB5ZXQpIGFuZCBmYWlsIHRvIGFkdmFuY2UgZnVydGhlci4KKwkJICovCiAJCWlmIChw ZW5kaW5nTm90aWZpZXMgIT0gTlVMTCAmJgotCQkJUVVFVUVfUE9TX0VRVUFMKHBvcywgcXVl dWVIZWFkQmVmb3JlV3JpdGUpKQorCQkJUVVFVUVfUE9TX0VRVUFMKGFkdmlzb3J5UG9zLCBx dWV1ZUhlYWRCZWZvcmVXcml0ZSkpCiAJCXsKLQkJCVFVRVVFX0JBQ0tFTkRfUE9TKGkpID0g cXVldWVIZWFkQWZ0ZXJXcml0ZTsKLQkJCXBvcyA9IHF1ZXVlSGVhZEFmdGVyV3JpdGU7CisJ CQlRVUVVRV9CQUNLRU5EX0FEVklTT1JZX1BPUyhpKSA9IHF1ZXVlSGVhZEFmdGVyV3JpdGU7 CisJCQlhZHZpc29yeVBvcyA9IHF1ZXVlSGVhZEFmdGVyV3JpdGU7CiAJCX0KIAogCQkvKiBT aWduYWwgYmFja2VuZHMgdGhhdCBoYXZlIGZhbGxlbiB0b28gZmFyIGJlaGluZCAqLwpAQCAt MjMwMiw2ICsyMzI1LDcgQEAgc3RhdGljIHZvaWQKIGFzeW5jUXVldWVSZWFkQWxsTm90aWZp Y2F0aW9ucyh2b2lkKQogewogCXZvbGF0aWxlIFF1ZXVlUG9zaXRpb24gcG9zOworCVF1ZXVl UG9zaXRpb24gYWR2aXNvcnlQb3M7CiAJUXVldWVQb3NpdGlvbiBoZWFkOwogCVNuYXBzaG90 CXNuYXBzaG90OwogCkBAIC0yMzE5LDExICsyMzQzLDM1IEBAIGFzeW5jUXVldWVSZWFkQWxs Tm90aWZpY2F0aW9ucyh2b2lkKQogCVFVRVVFX0JBQ0tFTkRfV0FLRVVQX1BFTkRJTkcoTXlQ cm9jTnVtYmVyKSA9IGZhbHNlOwogCXBvcyA9IFFVRVVFX0JBQ0tFTkRfUE9TKE15UHJvY051 bWJlcik7CiAJaGVhZCA9IFFVRVVFX0hFQUQ7CisKKwkvKgorCSAqIENoZWNrIGlmIGFub3Ro ZXIgYmFja2VuZCBoYXMgc2V0IGFuIGFkdmlzb3J5IHBvc2l0aW9uIGZvciB1cy4KKwkgKiBJ ZiBzbywgYW5kIGlmIHdlIGhhdmVuJ3QgeWV0IHJlYWQgcGFzdCB0aGF0IHBvaW50LCB3ZSBj YW4gc2FmZWx5CisJICogYWRvcHQgdGhlIGFkdmlzb3J5IHBvc2l0aW9uIGFuZCBza2lwIHRo ZSBpbnRlcnZlbmluZyBub3RpZmljYXRpb25zLgorCSAqLworCWFkdmlzb3J5UG9zID0gUVVF VUVfQkFDS0VORF9BRFZJU09SWV9QT1MoTXlQcm9jTnVtYmVyKTsKKworCWlmICghUVVFVUVf UE9TX0VRVUFMKGFkdmlzb3J5UG9zLCBwb3MpICYmCisJCVFVRVVFX1BPU19QUkVDRURFUyhw b3MsIGFkdmlzb3J5UG9zKSkKKwl7CisJCXBvcyA9IGFkdmlzb3J5UG9zOworCQlRVUVVRV9C QUNLRU5EX1BPUyhNeVByb2NOdW1iZXIpID0gcG9zOworCX0KKwogCUxXTG9ja1JlbGVhc2Uo Tm90aWZ5UXVldWVMb2NrKTsKIAogCWlmIChRVUVVRV9QT1NfRVFVQUwocG9zLCBoZWFkKSkK IAl7Ci0JCS8qIE5vdGhpbmcgdG8gZG8sIHdlIGhhdmUgcmVhZCBhbGwgbm90aWZpY2F0aW9u cyBhbHJlYWR5LiAqLworCQkvKgorCQkgKiBOb3RoaW5nIHRvIGRvLCB3ZSBoYXZlIHJlYWQg YWxsIG5vdGlmaWNhdGlvbnMgYWxyZWFkeS4KKwkJICogQmVmb3JlIHJldHVybmluZywgdXBk YXRlIGFkdmlzb3J5UG9zIGlmIGl0IGhhcyBmYWxsZW4gYmVoaW5kIG91cgorCQkgKiBjdXJy ZW50IHBvc2l0aW9uLCBzaW5jZSB3ZSdyZSBieXBhc3NpbmcgdGhlIFBHX0ZJTkFMTFkgYmxv Y2sgdGhhdAorCQkgKiB3b3VsZCBub3JtYWxseSBkbyB0aGlzLgorCQkgKi8KKwkJTFdMb2Nr QWNxdWlyZShOb3RpZnlRdWV1ZUxvY2ssIExXX1NIQVJFRCk7CisJCVFVRVVFX0JBQ0tFTkRf QURWSVNPUllfUE9TKE15UHJvY051bWJlcikgPQorCQkJUVVFVUVfUE9TX01BWChwb3MsIFFV RVVFX0JBQ0tFTkRfQURWSVNPUllfUE9TKE15UHJvY051bWJlcikpOworCQlMV0xvY2tSZWxl YXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTI0NDAsNiArMjQ4 OCwxMyBAQCBhc3luY1F1ZXVlUmVhZEFsbE5vdGlmaWNhdGlvbnModm9pZCkKIAkJLyogVXBk YXRlIHNoYXJlZCBzdGF0ZSAqLwogCQlMV0xvY2tBY3F1aXJlKE5vdGlmeVF1ZXVlTG9jaywg TFdfU0hBUkVEKTsKIAkJUVVFVUVfQkFDS0VORF9QT1MoTXlQcm9jTnVtYmVyKSA9IHBvczsK KwkJLyoKKwkJICogQWR2YW5jZSBhZHZpc29yeVBvcyB0byBvdXIgY3VycmVudCBwb3NpdGlv biBpZiBpdCBoYXMgZmFsbGVuIGJlaGluZCwKKwkJICogYnV0IHByZXNlcnZlIGFueSBuZXdl ciBhZHZpc29yeSBwb3NpdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gc2V0IGJ5CisJCSAqIGFu b3RoZXIgYmFja2VuZCB3aGlsZSB3ZSB3ZXJlIHByb2Nlc3Npbmcgbm90aWZpY2F0aW9ucy4K KwkJICovCisJCVFVRVVFX0JBQ0tFTkRfQURWSVNPUllfUE9TKE15UHJvY051bWJlcikgPQor CQkJUVVFVUVfUE9TX01BWChwb3MsIFFVRVVFX0JBQ0tFTkRfQURWSVNPUllfUE9TKE15UHJv Y051bWJlcikpOwogCQlMV0xvY2tSZWxlYXNlKE5vdGlmeVF1ZXVlTG9jayk7CiAJfQogCVBH X0VORF9UUlkoKTsKLS0gCjIuNTAuMQoK --a1dffb08de694124a766fe314e1428db--