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.96) (envelope-from ) id 1wi5R8-0000WY-29 for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 07:14:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wi5R6-00GUE0-2i for pgsql-hackers@arkaria.postgresql.org; Fri, 10 Jul 2026 07:14:13 +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.96) (envelope-from ) id 1wi5R6-00GUDs-1P for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 07:14:13 +0000 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wi5R5-00000000RFE-0fT8 for pgsql-hackers@lists.postgresql.org; Fri, 10 Jul 2026 07:14:12 +0000 Received: by mail-oi1-x235.google.com with SMTP id 5614622812f47-49ff971e903so1208422b6e.0 for ; Fri, 10 Jul 2026 00:14:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1783667651; cv=none; d=google.com; s=arc-20260327; b=LboWj5e4Gz4quk1H7IDr/p0x9DuvLDpnQnzt4Y1iJBCVE4iWOhNg4fsCnhGZgsD2Ia xkdFQtZSLZLjZYbtc9S7UqmhSIradSbiw7mi4if2LkDedYBlr5gWVf6b9Bhxub24XWiU pd6LQDG2mKf8EmuasGAyZO+IULmLU0EGq8imMSoSW1aSK+aPEKDZ9Q3Jz0Ky/mG2rJRH 0uWTl1tietb6yUYrNofi3lPLeDuPj6I5gXV27FGybUQjpDRtVQVewdIVhQYkINUrVd+x Uv6FwU0ZpogDUsIZwVBT6cUn6K+6gj2ElVhWaoxyYH5zP4QyRaqZ/Osvo2V2AbUvmtwI BW6Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=T1oZ2nMKMNmzQZ5WBHltgAv8E6mSpe697frXsfY34zk=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=h/C/z61HjXY2thRExwd2Hvm9vjokx0RH0M/MOe3+h11Zf7nZmqCMzfdEajuP3ClZ1x P7idP3gq0Ph+s4Snwiii5pvOUPHhiPV2qnxK1WbIy+tuxquLhHxC4v3k8afx8D1SqOfZ sgPzdZnUpXbMXJozoU9cTn0oNJfKLFpuUOzTvcPcF6O6utPv39ZtJ8MyCudIyRTTsXUh u7srciy8Erfqe7+K3lD9KzwPKrafRQbJ7E7ZChO+o7i0VhgdeRTgIhUXgqSuiYvAZn6H fFxzYP98C5f2QqYOc2xpAWznDehVAr+QAjKGclCbL88lJKoQ6+nA5YAhl1pXVuolhh5R s+tw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783667651; x=1784272451; darn=lists.postgresql.org; h=content-type:to:subject:message-id:date:from:mime-version:from:to :cc:subject:date:message-id:reply-to:content-type; bh=T1oZ2nMKMNmzQZ5WBHltgAv8E6mSpe697frXsfY34zk=; b=JYLmrETTWjr0Q8N7wq9TZpM99TTz/x4DXF+dzIUWvqYW6sUJhzxuJOOSBZ5LE02v68 q2yvI23DRaw5AmhbivS3E583cDviCEzU7l8+Zc3b5S/P1WaB1Gc/gonIxq/sYlwD+mLb L0G76k7lUf/UKmMoRc11HjCixzmtJMtOSWziqSdnxP8VrkUtBaXx5U0yoLkXWZoEseFz nVrCYaHUPfajFnRfq210Fhzg6tAjx73tRQFV6ISCAj/Np3iXWBPDBqexvRvGF5grauaF pLENhbkGv+oJX0HLoJIp84Z8kHdlBJXAcBFUqHvl81wXuShHAx/l1xGAAsyM0lGk0ey7 iJgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783667651; x=1784272451; h=content-type:to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=T1oZ2nMKMNmzQZ5WBHltgAv8E6mSpe697frXsfY34zk=; b=M/gqjm78EnZQeFcvofDYZaRw2jGDDssPcIbGMN096TTaQl6wTrr0E8cph3xnqGD6sS zCIcx1HOBP+zYIO5dRmG56E1k7x1JQyb8J/MvM42tH3VCuy46pip+oSiJaCIcw9aEzBQ CltjSRxalwFA8SISPvucJaXwFQPsKpnBpdsPzfYknG3Cm0PfTUWBDVEimqNOnrXXyolp CZs5SSuwpm6dfPgj2KWojTrLmfyec3MW1ZediPhbMS3Ri7ZkneQBVmVxV30dB1P/kMMS kZfbUwxzT+74x4RYbJ1aJ34CW0Db4nrEml0dQpEroOs/HU5ovs739zzKgvKs9zuLHPkH qTgw== X-Gm-Message-State: AOJu0Yw8t4SVNK1ruC6ixElsE3aOx2ELgqJ9sA1fVoLAv88ujYZh17JC gVcj8whw2okzqVq2W6WAmh69T4d+PyJk0RteiampSapZhh0ZklrdlR66noxcTPZrfYz7ZjT0xhE Vq5uTNab5J06s+vxAGmN9AfcTnY/d8Qxt8A5Mduc= X-Gm-Gg: AfdE7cntuig4uhqzkvhk3B0H3RNkbV6/thizQ0Yj6p6ZTFRZ1UVYvnQfW05CuTfkXkg u1Fsvc5HkVOEOAXnQtQ0tV5OewPkr90jVeqbz/lbS9SAWwHy8Ijewb44etBAOM2SpbraKBijx1p 7K7JgxHRPDqSzEvPmixc2IsJbaOg2RaV/Rn/gIGgnS2afvE71UPq7INVpMbcogRjuTNr3x2TE+6 wLl1B+CulheyyGKwHv66E6bVu2eTWLikoYOaVSzlhMGlhMQ61N7FsaxNwUZLpRY+LBORnksLF2w +tjCA5PgklHs45o/uaI7FTpSVPyb8usf0MfCg0OcjsGVPHmtGxUOMtAmeeJ2bZqTEM+ypW8OWW/ hBkC1/wpVx0X2 X-Received: by 2002:a05:6808:168b:b0:49a:7714:ed25 with SMTP id 5614622812f47-4a40ecb7ab7mr1587192b6e.3.1783667650840; Fri, 10 Jul 2026 00:14:10 -0700 (PDT) MIME-Version: 1.0 From: Fujii Masao Date: Fri, 10 Jul 2026 16:13:56 +0900 X-Gm-Features: AUfX_mx9RRltN7DcdppPP4flyowKt2EUSbOb-QTuSa-bj7hprK9dzY0vKY3psEA Message-ID: Subject: Fix pg_stat_progress_data_checksums counter initialization To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000b9e50506563c7c24" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b9e50506563c7c24 Content-Type: text/plain; charset="UTF-8" Hi, The pg_stat_progress_data_checksums docs says that databases_total and databases_done are reported as NULL for workers, but I observed that they are reported as 0 instead: =# select * from pg_stat_progress_data_checksums; pid | datid | datname | phase | databases_total | databases_done | relations_total | relations_done | blocks_total | blocks_done -------+-------+----------+----------+-----------------+----------------+-----------------+----------------+--------------+------------- 34873 | 0 | (null) | enabling | 3 | 0 | (null) | (null) | (null) | (null) 34874 | 5 | postgres | enabling | 0 | 0 | 297 | 0 | 163935 | 427 (2 rows) The cause is that pg_stat_progress_data_checksums uses -1 as the sentinel value displayed as NULL, but pgstat_progress_start_command() initializes all progress counters to zero. Data checksum progress did not consistently reset those counters to -1, so some counters could incorrectly appear as 0 instead of NULL. The attached patch fixes this by initializing all data checksum progress counters to -1 immediately after progress reporting starts for both launcher and worker processes. While looking at this code, I also found that blocks_done is not reset when a worker starts processing a new relation fork. As a result, blocks_done can temporarily exceed blocks_total, or a stale blocks_done value can remain visible for an empty relation fork. The attached patch resets blocks_done together with blocks_total when starting each relation fork. Regards, -- Fujii Masao --000000000000b9e50506563c7c24 Content-Type: application/octet-stream; name="v1-0001-Fix-data-checksum-progress-counter-initialization.patch" Content-Disposition: attachment; filename="v1-0001-Fix-data-checksum-progress-counter-initialization.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mreln48h0 RnJvbSA3NzhiNTAwYzI0NmM0MTBlYTQ3MjYzODNkYjk2NWVjMGIzZDEwYTcxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBGdWppaSBNYXNhbyA8ZnVqaWlAcG9zdGdyZXNxbC5vcmc+CkRh dGU6IEZyaSwgMTAgSnVsIDIwMjYgMTU6MTU6MjQgKzA5MDAKU3ViamVjdDogW1BBVENIIHYxXSBG aXggZGF0YSBjaGVja3N1bSBwcm9ncmVzcyBjb3VudGVyIGluaXRpYWxpemF0aW9uCgpwZ19zdGF0 X3Byb2dyZXNzX2RhdGFfY2hlY2tzdW1zIHVzZXMgLTEgYXMgYSBzZW50aW5lbCB2YWx1ZSB0aGF0 IGlzCmRpc3BsYXllZCBhcyBOVUxMIGZvciBwcm9ncmVzcyBjb3VudGVycy4gSG93ZXZlciwgYWZ0 ZXIKcGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoKSBpbml0aWFsaXplZCBhbGwgcHJvZ3Jl c3MgY291bnRlcnMgdG8KemVybywgZGF0YSBjaGVja3N1bSBwcm9ncmVzcyBkaWQgbm90IHJlc2V0 IHRob3NlIGNvdW50ZXJzIHRvIC0xLgpBcyBhIHJlc3VsdCwgc29tZSBjb3VudGVycyBjb3VsZCBp bmNvcnJlY3RseSBhcHBlYXIgYXMgemVybyBpbnN0ZWFkCm9mIE5VTEwuIEZvciBleGFtcGxlLCB3 b3JrZXJzIGNvdWxkIHJlcG9ydCB6ZXJvIGRhdGFiYXNlIGNvdW50ZXJzLAphbmQgdGhlIGRpc2Fi bGluZyBsYXVuY2hlciBjb3VsZCByZXBvcnQgemVybyByZWxhdGlvbiBhbmQgYmxvY2sgY291bnRl cnMuCgpBbHNvLCBibG9ja3NfZG9uZSB3YXMgbm90IHJlc2V0IHdoZW4gYSB3b3JrZXIgc3RhcnRl ZCBwcm9jZXNzaW5nCmEgbmV3IHJlbGF0aW9uIGZvcmsuIEFzIGEgcmVzdWx0LCBpdCBjb3VsZCB0 ZW1wb3JhcmlseSBleGNlZWQgYmxvY2tzX3RvdGFsCm9yIHJlcG9ydCBhIHN0YWxlIHZhbHVlIGZv ciBhbiBlbXB0eSByZWxhdGlvbiBmb3JrLgoKRml4IHRoaXMgYnkgaW5pdGlhbGl6aW5nIHRoZSBk YXRhIGNoZWNrc3VtIHByb2dyZXNzIGNvdW50ZXJzIHRvIC0xCndoZW4gcHJvZ3Jlc3MgcmVwb3J0 aW5nIHN0YXJ0cyBmb3IgYm90aCBsYXVuY2hlciBhbmQgd29ya2VyIHByb2Nlc3Nlcy4KQWxzbyBy ZXNldCBibG9ja3NfZG9uZSB0b2dldGhlciB3aXRoIGJsb2Nrc190b3RhbCB3aGVuIHN0YXJ0aW5n IGVhY2gKcmVsYXRpb24gZm9yay4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAg ICAgICAgICAgICAgIHwgIDggKystLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9z dGF0ZS5jIHwgNTMgKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dCAgICAgICAgIHwgIDUgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNTAgaW5zZXJ0 aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0 b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggODU4Nzg4YjIy N2MuLmQxYTIwZDAwMWU5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTgwOTUsOCArODA5NSw4IEBA IEZST00gcGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgICA8 L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWJh c2VzIHdoaWNoIHdpbGwgYmUgcHJvY2Vzc2VkLiBPbmx5IHRoZQotICAgICAgICBsYXVuY2hlciBw cm9jZXNzIGhhcyB0aGlzIHZhbHVlIHNldCwgdGhlIHdvcmtlciBwcm9jZXNzZXMgaGF2ZSB0aGlz Ci0gICAgICAgIHNldCB0byA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPi4KKyAgICAgICAgbGF1bmNo ZXIgcHJvY2VzcyBoYXMgdGhpcyB2YWx1ZSBzZXQgd2hlbiBlbmFibGluZyBkYXRhIGNoZWNrc3Vt czsKKyAgICAgICAgb3RoZXJ3aXNlIHRoaXMgaXMgc2V0IHRvIDxsaXRlcmFsPk5VTEw8L2xpdGVy YWw+LgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvZW50cnk+CiAgICAgIDwvcm93PgpAQCAtODEw OCw4ICs4MTA4LDggQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2Vu ZGlkOwogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KICAgICAgICAgVGhlIG51bWJlciBv ZiBkYXRhYmFzZXMgd2hpY2ggaGF2ZSBiZWVuIHByb2Nlc3NlZC4gT25seSB0aGUgbGF1bmNoZXIK LSAgICAgICAgcHJvY2VzcyBoYXMgdGhpcyB2YWx1ZSBzZXQsIHRoZSB3b3JrZXIgcHJvY2Vzc2Vz IGhhdmUgdGhpcyBzZXQgdG8KLSAgICAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4uCisgICAg ICAgIHByb2Nlc3MgaGFzIHRoaXMgdmFsdWUgc2V0IHdoZW4gZW5hYmxpbmcgZGF0YSBjaGVja3N1 bXM7IG90aGVyd2lzZQorICAgICAgICB0aGlzIGlzIHNldCB0byA8bGl0ZXJhbD5OVUxMPC9saXRl cmFsPi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCA2YzFjNTU0NWNiNS4uMDkwMjgxYTAzZGQg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTE0OTMsNyArMTQ5Myw3IEBA IENSRUFURSBWSUVXIHBnX3N0YXRfcHJvZ3Jlc3NfZGF0YV9jaGVja3N1bXMgQVMKICAgICAgICAg ICAgICAgICAgICAgICBXSEVOIDQgVEhFTiAnZG9uZScKICAgICAgICAgICAgICAgICAgICAgICBF TkQgQVMgcGhhc2UsCiAgICAgICAgIENBU0UgUy5wYXJhbTIgV0hFTiAtMSBUSEVOIE5VTEwgRUxT RSBTLnBhcmFtMiBFTkQgQVMgZGF0YWJhc2VzX3RvdGFsLAotICAgICAgICBTLnBhcmFtMyBBUyBk YXRhYmFzZXNfZG9uZSwKKyAgICAgICAgQ0FTRSBTLnBhcmFtMyBXSEVOIC0xIFRIRU4gTlVMTCBF TFNFIFMucGFyYW0zIEVORCBBUyBkYXRhYmFzZXNfZG9uZSwKICAgICAgICAgQ0FTRSBTLnBhcmFt NCBXSEVOIC0xIFRIRU4gTlVMTCBFTFNFIFMucGFyYW00IEVORCBBUyByZWxhdGlvbnNfdG90YWws CiAgICAgICAgIENBU0UgUy5wYXJhbTUgV0hFTiAtMSBUSEVOIE5VTEwgRUxTRSBTLnBhcmFtNSBF TkQgQVMgcmVsYXRpb25zX2RvbmUsCiAgICAgICAgIENBU0UgUy5wYXJhbTYgV0hFTiAtMSBUSEVO IE5VTEwgRUxTRSBTLnBhcmFtNiBFTkQgQVMgYmxvY2tzX3RvdGFsLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKaW5kZXggNjg1NTdjMTZjYjkuLmJlYzExMDEw NWRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0 ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMKQEAg LTM5MSw2ICszOTEsNyBAQCBzdGF0aWMgdm9pZCBGcmVlRGF0YWJhc2VMaXN0KExpc3QgKmRibGlz dCk7CiBzdGF0aWMgRGF0YUNoZWNrc3Vtc1dvcmtlclJlc3VsdCBQcm9jZXNzRGF0YWJhc2UoRGF0 YUNoZWNrc3Vtc1dvcmtlckRhdGFiYXNlICpkYik7CiBzdGF0aWMgYm9vbCBQcm9jZXNzQWxsRGF0 YWJhc2VzKHZvaWQpOwogc3RhdGljIGJvb2wgUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhSZWxh dGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0 ZWd5KTsKK3N0YXRpYyB2b2lkIFJlc2V0RGF0YUNoZWNrc3Vtc1Byb2dyZXNzQ291bnRlcnModm9p ZCk7CiBzdGF0aWMgdm9pZCBsYXVuY2hlcl9jYW5jZWxfaGFuZGxlcihTSUdOQUxfQVJHUyk7CiBz dGF0aWMgdm9pZCBXYWl0Rm9yQWxsVHJhbnNhY3Rpb25zVG9GaW5pc2godm9pZCk7CiAKQEAgLTY5 OCw3ICs2OTksMTkgQEAgUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhSZWxhdGlvbiByZWxuLCBG b3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckFjY2Vzc1N0cmF0ZWcKIAlzbnByaW50ZihhY3Rpdml0 eSwgc2l6ZW9mKGFjdGl2aXR5KSAtIDEsICJwcm9jZXNzaW5nOiAlcy4lcyAoJXMsICV1IGJsb2Nr cykiLAogCQkJIChyZWxucyA/IHJlbG5zIDogIiIpLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxuKSwgZm9ya05hbWVzW2ZvcmtOdW1dLCBudW1ibG9ja3MpOwogCXBnc3RhdF9yZXBvcnRfYWN0 aXZpdHkoU1RBVEVfUlVOTklORywgYWN0aXZpdHkpOwotCXBnc3RhdF9wcm9ncmVzc191cGRhdGVf cGFyYW0oUFJPR1JFU1NfREFUQUNIRUNLU1VNU19CTE9DS1NfVE9UQUwsIG51bWJsb2Nrcyk7CisJ eworCQljb25zdCBpbnQJaW5kZXhbXSA9IHsKKwkJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfQkxP Q0tTX1RPVEFMLAorCQkJUFJPR1JFU1NfREFUQUNIRUNLU1VNU19CTE9DS1NfRE9ORQorCQl9Owor CisJCWludDY0CQl2YWxzWzJdOworCisJCXZhbHNbMF0gPSBudW1ibG9ja3M7CisJCXZhbHNbMV0g PSAwOworCisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMiwgaW5kZXgsIHZh bHMpOworCX0KIAlpZiAocmVsbnMpCiAJCXBmcmVlKHJlbG5zKTsKIApAQCAtNzY0LDYgKzc3Nywy OSBAQCBQcm9jZXNzU2luZ2xlUmVsYXRpb25Gb3JrKFJlbGF0aW9uIHJlbG4sIEZvcmtOdW1iZXIg Zm9ya051bSwgQnVmZmVyQWNjZXNzU3RyYXRlZwogCXJldHVybiB0cnVlOwogfQogCisvKgorICog SW5pdGlhbGl6ZSBhbGwgZGF0YSBjaGVja3N1bSBwcm9ncmVzcyBjb3VudGVycyB0byBiZSBkaXNw bGF5ZWQgYXMgTlVMTC4KKyAqLworc3RhdGljIHZvaWQKK1Jlc2V0RGF0YUNoZWNrc3Vtc1Byb2dy ZXNzQ291bnRlcnModm9pZCkKK3sKKwljb25zdCBpbnQJaW5kZXhbXSA9IHsKKwkJUFJPR1JFU1Nf REFUQUNIRUNLU1VNU19EQlNfVE9UQUwsCisJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfREJTX0RP TkUsCisJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUkVMU19UT1RBTCwKKwkJUFJPR1JFU1NfREFU QUNIRUNLU1VNU19SRUxTX0RPTkUsCisJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfQkxPQ0tTX1RP VEFMLAorCQlQUk9HUkVTU19EQVRBQ0hFQ0tTVU1TX0JMT0NLU19ET05FLAorCX07CisKKwlpbnQ2 NAkJdmFsc1tsZW5ndGhvZihpbmRleCldOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGhv ZihpbmRleCk7IGkrKykKKwkJdmFsc1tpXSA9IC0xOworCisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0 ZV9tdWx0aV9wYXJhbShsZW5ndGhvZihpbmRleCksIGluZGV4LCB2YWxzKTsKK30KKwogLyoKICAq IFByb2Nlc3NTaW5nbGVSZWxhdGlvbkJ5T2lkCiAgKgkJUHJvY2VzcyBhIHNpbmdsZSByZWxhdGlv biBiYXNlZCBvbiBvaWQuCkBAIC0xMTQyLDYgKzExNzgsNyBAQCBhZ2FpbjoKIAogCXBnc3RhdF9w cm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfREFUQUNIRUNLU1VNUywKIAkJ CQkJCQkJICBJbnZhbGlkT2lkKTsKKwlSZXNldERhdGFDaGVja3N1bXNQcm9ncmVzc0NvdW50ZXJz KCk7CiAKIAlpZiAob3BlcmF0aW9uID09IEVOQUJMRV9EQVRBQ0hFQ0tTVU1TKQogCXsKQEAgLTEy NjksMjMgKzEzMDYsMTQgQEAgUHJvY2Vzc0FsbERhdGFiYXNlcyh2b2lkKQogCQljb25zdCBpbnQJ aW5kZXhbXSA9IHsKIAkJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfREJTX1RPVEFMLAogCQkJUFJP R1JFU1NfREFUQUNIRUNLU1VNU19EQlNfRE9ORSwKLQkJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNf UkVMU19UT1RBTCwKLQkJCVBST0dSRVNTX0RBVEFDSEVDS1NVTVNfUkVMU19ET05FLAotCQkJUFJP R1JFU1NfREFUQUNIRUNLU1VNU19CTE9DS1NfVE9UQUwsCi0JCQlQUk9HUkVTU19EQVRBQ0hFQ0tT VU1TX0JMT0NLU19ET05FLAogCQl9OwogCi0JCWludDY0CQl2YWxzWzZdOworCQlpbnQ2NAkJdmFs c1syXTsKIAogCQl2YWxzWzBdID0gbGlzdF9sZW5ndGgoRGF0YWJhc2VMaXN0KTsKIAkJdmFsc1sx XSA9IDA7Ci0JCS8qIHRyYW5zbGF0ZWQgdG8gTlVMTCAqLwotCQl2YWxzWzJdID0gLTE7Ci0JCXZh bHNbM10gPSAtMTsKLQkJdmFsc1s0XSA9IC0xOwotCQl2YWxzWzVdID0gLTE7CiAKLQkJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg2LCBpbmRleCwgdmFscyk7CisJCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oMiwgaW5kZXgsIHZhbHMpOwogCX0KIAogCWZvcmVh Y2hfcHRyKERhdGFDaGVja3N1bXNXb3JrZXJEYXRhYmFzZSwgZGIsIERhdGFiYXNlTGlzdCkKQEAg LTE1ODEsNiArMTYwOSw3IEBAIERhdGFDaGVja3N1bXNXb3JrZXJNYWluKERhdHVtIGFyZykKIAkv KiB3b3JrZXIgd2lsbCBoYXZlIGEgc2VwYXJhdGUgZW50cnkgaW4gcGdfc3RhdF9wcm9ncmVzc19k YXRhX2NoZWNrc3VtcyAqLwogCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNT X0NPTU1BTkRfREFUQUNIRUNLU1VNUywKIAkJCQkJCQkJICBJbnZhbGlkT2lkKTsKKwlSZXNldERh dGFDaGVja3N1bXNQcm9ncmVzc0NvdW50ZXJzKCk7CiAKIAkvKgogCSAqIEdldCBhIGxpc3Qgb2Yg YWxsIHRlbXAgdGFibGVzIHByZXNlbnQgYXMgd2Ugc3RhcnQgaW4gdGhpcyBkYXRhYmFzZS4gV2UK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggMzk5MDVjMmRlMTQuLjZhMzM0MTM1 NmRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjEyMyw3ICsyMTIzLDEw IEBAIHBnX3N0YXRfcHJvZ3Jlc3NfZGF0YV9jaGVja3N1bXN8IFNFTEVDVCBzLnBpZCwKICAgICAg ICAgICAgIFdIRU4gJy0xJzo6aW50ZWdlciBUSEVOIE5VTEw6OmJpZ2ludAogICAgICAgICAgICAg RUxTRSBzLnBhcmFtMgogICAgICAgICBFTkQgQVMgZGF0YWJhc2VzX3RvdGFsLAotICAgIHMucGFy YW0zIEFTIGRhdGFiYXNlc19kb25lLAorICAgICAgICBDQVNFIHMucGFyYW0zCisgICAgICAgICAg ICBXSEVOICctMSc6OmludGVnZXIgVEhFTiBOVUxMOjpiaWdpbnQKKyAgICAgICAgICAgIEVMU0Ug cy5wYXJhbTMKKyAgICAgICAgRU5EIEFTIGRhdGFiYXNlc19kb25lLAogICAgICAgICBDQVNFIHMu cGFyYW00CiAgICAgICAgICAgICBXSEVOICctMSc6OmludGVnZXIgVEhFTiBOVUxMOjpiaWdpbnQK ICAgICAgICAgICAgIEVMU0Ugcy5wYXJhbTQKLS0gCjIuNTUuMAoK --000000000000b9e50506563c7c24--