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 1sSOQr-006rQR-Oq for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jul 2024 22:08:01 +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 1sSOQp-00CBfJ-Am for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Jul 2024 22:07:59 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sSOQo-00CBfB-VL for pgsql-hackers@lists.postgresql.org; Fri, 12 Jul 2024 22:07:59 +0000 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sSOQh-001pxS-PV for pgsql-hackers@lists.postgresql.org; Fri, 12 Jul 2024 22:07:58 +0000 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-4266ea6a488so19410985e9.1 for ; Fri, 12 Jul 2024 15:07:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720822070; x=1721426870; darn=lists.postgresql.org; h=to:content-language:subject:from:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=TO4lPYXd+7QQFkoDKEQSr0PIC+UvfBcRfjPSZBWemes=; b=JbuUqKV/LSmc3/FxsQyYxyHXpHbBs/gJllyYi7YQ3iUKhbHNAdPtA6cgr/SzP57Gy5 kN+rGThXlqF+PIf9+pcw+CA/FLTTA7WvNGBMbZt70wgMywz33XBFu4dB2quqleTb66Z9 /FyWad7Fp9A4P0/BS4K1+POb3jRhJ/CAs4BRAt8TmJw8J8J0qMZ8tbn+F08/jMtyiDzI oMrI0SSnx175L1jYsFGaoYUiENcYNpu18bsdhaebliv8y5B4Z7frfpHvo1JaAuW0KPv1 Nc4fFUPK3nlIqS2hFv2gex55Y5HVvKp6vpv4byuQNdSCTeVg0Byd7DDMyJfXMJLyGXLv uI0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720822070; x=1721426870; h=to:content-language:subject:from:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TO4lPYXd+7QQFkoDKEQSr0PIC+UvfBcRfjPSZBWemes=; b=bmV/YJiEUZaJeAUWfc8yESSkG7xTF5vAZfloph+7f8Lu0oHGx/EvVD7VFzbw/2OplO WntyQu5JQy1fhpt40C5L8ucRUhLfd3LwzHuat9trsWp3eILeugV0sn3aViciJjcr+o6V VD/7MOFts6K6myudGRSEb7qEURnvkyCJe49S5bsqgURg2fmlDx1hhm12BkLboRJDLKhB gcqNqqhKYSdjyQvRuNAgWGYU6xT0jvXuG3A/kVrYfr1759LZx1UR2XXfbB0C9+EnqeoE XK1dJeDcBPhwoR0DrJq1Qri4dydp0VyDtrvBfxfUtKFFvMqtXAaVyeTzkPMdKHl2hNp1 pRlg== X-Gm-Message-State: AOJu0Yx+CER9MMjRGkn4xh/VIF8ESy7u5DN7twRA7291gTFXHel3H70x jz2w56b4iHyr04QPlMFURpjPlUc7y2EwrvP70JzRrfeYB/oPUE0LqVFXoA== X-Google-Smtp-Source: AGHT+IH1pEEr2E6c4JfSg6k5Yg3onaHmbNICyCuwWcB9NJHodEDbUug2Ay3Yzy/xkxuNhwknits+8g== X-Received: by 2002:a05:600c:4ecc:b0:427:9db3:35c8 with SMTP id 5b1f17b1804b1-4279db3363bmr31258255e9.20.1720822069920; Fri, 12 Jul 2024 15:07:49 -0700 (PDT) Received: from ?IPV6:2a01:4b00:c00c:a500:1fc:f872:b19:ed59? ([2a01:4b00:c00c:a500:1fc:f872:b19:ed59]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-427a5e9a809sm304435e9.28.2024.07.12.15.07.49 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 12 Jul 2024 15:07:49 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Lg0yjrgjQCSKZGNuomsIJcgS" Message-ID: Date: Fri, 12 Jul 2024 23:07:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Ilya Gladyshev Subject: REINDEX not updating partition progress Content-Language: en-US To: pgsql-hackers@lists.postgresql.org List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Lg0yjrgjQCSKZGNuomsIJcgS Content-Type: multipart/alternative; boundary="------------mxgI8xFOPAuvpxc6kyesfBBy" --------------mxgI8xFOPAuvpxc6kyesfBBy Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi, While working on CIC for partitioned tables [1], I noticed that REINDEX for partitioned tables is not tracking keeping progress of partitioned tables, so I'm creating a separate thread for this fix as suggested. The way REINDEX for partitioned tables works now ReindexMultipleInternal treats every partition as an independent table without keeping track of partition_done/total counts, because this is just generic code for processing multiple tables. The patch addresses that by passing down the knowledge a flag to distinguish partitions from independent tables in ReindexMultipleInternal and its callees. I also noticed that the partitioned CREATE INDEX progress tracking could also benefit from progress_index_partition_done function that zeroizes params in addition to incrementing the counter, so I applied it there as well. [1] https://www.postgresql.org/message-id/55cfae76-2ffa-43ed-a7e7-901bffbebee4%40gmail.com --------------mxgI8xFOPAuvpxc6kyesfBBy Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit

Hi,

While working on CIC for partitioned tables [1], I noticed that REINDEX for partitioned tables is not tracking keeping progress of partitioned tables, so I'm creating a separate thread for this fix as suggested. 

The way REINDEX for partitioned tables works now ReindexMultipleInternal treats every partition as an independent table without keeping track of partition_done/total counts, because this is just generic code for processing multiple tables. The patch addresses that by passing down the knowledge a flag to distinguish partitions from independent tables in ReindexMultipleInternal and its callees. I also noticed that the partitioned CREATE INDEX progress tracking could also benefit from progress_index_partition_done function that zeroizes params in addition to incrementing the counter, so I applied it there as well.

[1] https://www.postgresql.org/message-id/55cfae76-2ffa-43ed-a7e7-901bffbebee4%40gmail.com

--------------mxgI8xFOPAuvpxc6kyesfBBy-- --------------Lg0yjrgjQCSKZGNuomsIJcgS Content-Type: text/x-patch; charset=UTF-8; name="0001-make-REINDEX-track-partition-progress.patch" Content-Disposition: attachment; filename="0001-make-REINDEX-track-partition-progress.patch" Content-Transfer-Encoding: base64 RnJvbSAxOGJhYTAyOGUxY2M1YzM5MzQ3YjkxMjZlYzFhOTZlYjk5ZThlM2UxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hl dkBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMTEgSnVuIDIwMjQgMTc6NDg6MDggKzAxMDAKU3Vi amVjdDogW1BBVENIXSBtYWtlIFJFSU5ERVggdHJhY2sgcGFydGl0aW9uIHByb2dyZXNzCgot LS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyAgICAgIHwgMTEgKysrKy0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyB8IDYxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICB8ICAxICsK IDMgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggYTgxOWI0MTk3Yy4uOTA0ODhmOTE0MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtMzU2MCw2ICszNTYwLDcgQEAgcmVpbmRleF9pbmRleChjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJdm9sYXRpbGUgYm9vbCBza2lwcGVk X2NvbnN0cmFpbnQgPSBmYWxzZTsKIAlQR1JVc2FnZQlydTA7CiAJYm9vbAkJcHJvZ3Jlc3Mg PSAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRfUkVQT1JUX1BST0dSRVNTKSAhPSAw KTsKKwlib29sCQlwYXJ0aXRpb24gPSAoKHBhcmFtcy0+b3B0aW9ucyAmIFJFSU5ERVhPUFRf UEFSVElUSU9OKSAhPSAwKTsKIAlib29sCQlzZXRfdGFibGVzcGFjZSA9IGZhbHNlOwogCiAJ cGdfcnVzYWdlX2luaXQoJnJ1MCk7CkBAIC0zNjA1LDggKzM2MDYsOSBAQCByZWluZGV4X2lu ZGV4KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgaW5kZXhJZCwKIAkJCWluZGV4SWQK IAkJfTsKIAotCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01N QU5EX0NSRUFURV9JTkRFWCwKLQkJCQkJCQkJCSAgaGVhcElkKTsKKwkJaWYgKCFwYXJ0aXRp b24pCisJCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5E X0NSRUFURV9JTkRFWCwKKwkJCQkJCQkJCQkgIGhlYXBJZCk7CiAJCXBnc3RhdF9wcm9ncmVz c191cGRhdGVfbXVsdGlfcGFyYW0oMiwgcHJvZ3Jlc3NfY29scywgcHJvZ3Jlc3NfdmFscyk7 CiAJfQogCkBAIC0zODQ2LDggKzM4NDgsMTEgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWlu ZGV4U3RtdCAqc3RtdCwgT2lkIGluZGV4SWQsCiAJaW5kZXhfY2xvc2UoaVJlbCwgTm9Mb2Nr KTsKIAl0YWJsZV9jbG9zZShoZWFwUmVsYXRpb24sIE5vTG9jayk7CiAKLQlpZiAocHJvZ3Jl c3MpCisJaWYgKHByb2dyZXNzICYmICFwYXJ0aXRpb24pCisJeworCQkvKiBwcm9ncmVzcyBm b3IgcGFydGl0aW9ucyBpcyB0cmFja2VkIGluIHRoZSBjYWxsZXIgKi8KIAkJcGdzdGF0X3By b2dyZXNzX2VuZF9jb21tYW5kKCk7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRl eGNtZHMuYwppbmRleCAyY2FhYjg4YWE1Li4yMTk2Mjc5MTA4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9pbmRleGNtZHMuYwpAQCAtMTEzLDYgKzExMyw3IEBAIHN0YXRpYyBib29sIFJlaW5kZXhS ZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwKIAkJCQkJCQkJ CQljb25zdCBSZWluZGV4UGFyYW1zICpwYXJhbXMpOwogc3RhdGljIHZvaWQgdXBkYXRlX3Jl bGlzcGFydGl0aW9uKE9pZCByZWxhdGlvbklkLCBib29sIG5ld3ZhbCk7CiBzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X2luZGV4c2FmZV9wcm9jZmxhZ3Modm9pZCk7CitzdGF0aWMgaW5saW5l IHZvaWQgcHJvZ3Jlc3NfaW5kZXhfcGFydGl0aW9uX2RvbmUodm9pZCk7CiAKIC8qCiAgKiBj YWxsYmFjayBhcmd1bWVudCB0eXBlIGZvciBSYW5nZVZhckNhbGxiYWNrRm9yUmVpbmRleElu ZGV4KCkKQEAgLTE1NjksNyArMTU3MCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CQllbHNlCiAJCXsKIAkJCS8qIFVwZGF0ZSBwcm9ncmVzcyBmb3IgYW4gaW50ZXJtZWRpYXRl IHBhcnRpdGlvbmVkIGluZGV4IGl0c2VsZiAqLwotCQkJcGdzdGF0X3Byb2dyZXNzX2luY3Jf cGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfRE9ORSwgMSk7CisJCQlwcm9n cmVzc19pbmRleF9wYXJ0aXRpb25fZG9uZSgpOwogCQl9CiAKIAkJcmV0dXJuIGFkZHJlc3M7 CkBAIC0xNTkwLDcgKzE1OTEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJaWYg KCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4SWQpKQogCQkJcGdzdGF0X3Byb2dyZXNzX2VuZF9j b21tYW5kKCk7CiAJCWVsc2UKLQkJCXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dS RVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsIDEpOworCQkJcHJvZ3Jlc3NfaW5kZXhf cGFydGl0aW9uX2RvbmUoKTsKIAogCQlyZXR1cm4gYWRkcmVzczsKIAl9CkBAIC0zMjEzLDYg KzMyMTQsMTQgQEAgUmVpbmRleFBhcnRpdGlvbnMoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQs IE9pZCByZWxpZCwgY29uc3QgUmVpbmRleFBhcmFtcyAqcGFyYW0KIAlMaXN0Q2VsbCAgICps YzsKIAlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKIAlSZWluZGV4RXJyb3JJ bmZvIGVycmluZm87CisJUmVpbmRleFBhcmFtcyBuZXdwYXJhbXM7CisJaW50CQkJcHJvZ3Jl c3NfcGFyYW1zWzNdID0geworCQlQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORCwKKwkJUFJP R1JFU1NfQ1JFQVRFSURYX1BIQVNFLAorCQlQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9O U19UT1RBTAorCX07CisJaW50NjQJCXByb2dyZXNzX3ZhbHVlc1szXTsKKwlPaWQJCQloZWFw SWQgPSByZWxpZDsKIAogCUFzc2VydChSRUxLSU5EX0hBU19QQVJUSVRJT05TKHJlbGtpbmQp KTsKIApAQCAtMzI3NCwxMSArMzI4MywyOCBAQCBSZWluZGV4UGFydGl0aW9ucyhjb25zdCBS ZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGlkLCBjb25zdCBSZWluZGV4UGFyYW1zICpwYXJh bQogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkX2NvbnRleHQpOwogCX0KIAorCWlmIChy ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJeworCQloZWFwSWQgPSBJ bmRleEdldFJlbGF0aW9uKHJlbGlkLCB0cnVlKTsKKwl9CisKKwlwcm9ncmVzc192YWx1ZXNb MF0gPSAocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpICE9IDAg PworCQlQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRMWSA6 CisJCVBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5EX1JFSU5ERVg7CisJcHJvZ3Jlc3NfdmFs dWVzWzFdID0gMDsKKwlwcm9ncmVzc192YWx1ZXNbMl0gPSBsaXN0X2xlbmd0aChwYXJ0aXRp b25zKTsKKwlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5E X0NSRUFURV9JTkRFWCwgaGVhcElkKTsKKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRp X3BhcmFtKDMsIHByb2dyZXNzX3BhcmFtcywgcHJvZ3Jlc3NfdmFsdWVzKTsKKwogCS8qCiAJ ICogUHJvY2VzcyBlYWNoIHBhcnRpdGlvbiBsaXN0ZWQgaW4gYSBzZXBhcmF0ZSB0cmFuc2Fj dGlvbi4gIE5vdGUgdGhhdAogCSAqIHRoaXMgY29tbWl0cyBhbmQgdGhlbiBzdGFydHMgYSBu ZXcgdHJhbnNhY3Rpb24gaW1tZWRpYXRlbHkuCiAJICovCi0JUmVpbmRleE11bHRpcGxlSW50 ZXJuYWwoc3RtdCwgcGFydGl0aW9ucywgcGFyYW1zKTsKKwluZXdwYXJhbXMgPSAqcGFyYW1z OworCW5ld3BhcmFtcy5vcHRpb25zIHw9IFJFSU5ERVhPUFRfUEFSVElUSU9OOworCVJlaW5k ZXhNdWx0aXBsZUludGVybmFsKHN0bXQsIHBhcnRpdGlvbnMsICZuZXdwYXJhbXMpOworCisJ cGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CiAKIAkvKgogCSAqIENsZWFuIHVwIHdv cmtpbmcgc3RvcmFnZSAtLS0gbm90ZSB3ZSBtdXN0IGRvIHRoaXMgYWZ0ZXIKQEAgLTMyOTks NiArMzMyNSw3IEBAIHN0YXRpYyB2b2lkCiBSZWluZGV4TXVsdGlwbGVJbnRlcm5hbChjb25z dCBSZWluZGV4U3RtdCAqc3RtdCwgY29uc3QgTGlzdCAqcmVsaWRzLCBjb25zdCBSZWluZGV4 UGFyYW1zICpwYXJhbXMpCiB7CiAJTGlzdENlbGwgICAqbDsKKwlib29sCQlwYXJ0aXRpb25z ID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1BBUlRJVElPTikgIT0gMCk7CiAK IAlQb3BBY3RpdmVTbmFwc2hvdCgpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpA QCAtMzM5Miw2ICszNDE5LDkgQEAgUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIGNvbnN0IExpc3QgKnJlbGlkcywgY29uc3QgUmVpbmQKIAkJfQog CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChwYXJ0aXRpb25zKQor CQkJcHJvZ3Jlc3NfaW5kZXhfcGFydGl0aW9uX2RvbmUoKTsKIAl9CiAKIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwpAQCAtMzQ0NCw2ICszNDc0LDcgQEAgUmVpbmRleFJlbGF0aW9u Q29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQs IGNvbnN0IFJlaW4KIAljaGFyCSAgICpyZWxhdGlvbk5hbWUgPSBOVUxMOwogCWNoYXIJICAg KnJlbGF0aW9uTmFtZXNwYWNlID0gTlVMTDsKIAlQR1JVc2FnZQlydTA7CisJYm9vbAkJcGFy dGl0aW9uID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1BBUlRJVElPTikgIT0g MCk7CiAJY29uc3QgaW50CXByb2dyZXNzX2luZGV4W10gPSB7CiAJCVBST0dSRVNTX0NSRUFU RUlEWF9DT01NQU5ELAogCQlQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0UsCkBAIC0zNzg3LDcg KzM4MTgsOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVpbmRleFN0 bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlpZiAoaW5kZXhSZWwt PnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKIAkJCWVs b2coRVJST1IsICJjYW5ub3QgcmVpbmRleCBhIHRlbXBvcmFyeSB0YWJsZSBjb25jdXJyZW50 bHkiKTsKIAotCQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01N QU5EX0NSRUFURV9JTkRFWCwgaWR4LT50YWJsZUlkKTsKKwkJaWYgKCFwYXJ0aXRpb24pCisJ CQlwZ3N0YXRfcHJvZ3Jlc3Nfc3RhcnRfY29tbWFuZChQUk9HUkVTU19DT01NQU5EX0NSRUFU RV9JTkRFWCwgaWR4LT50YWJsZUlkKTsKIAogCQlwcm9ncmVzc192YWxzWzBdID0gUFJPR1JF U1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7CiAJCXByb2dyZXNz X3ZhbHNbMV0gPSAwOwkvKiBpbml0aWFsaXppbmcgKi8KQEAgLTQyNjEsNyArNDI5Myw4IEBA IFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlNZW1vcnlDb250ZXh0RGVsZXRlKHBy aXZhdGVfY29udGV4dCk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKKwlp ZiAoIXBhcnRpdGlvbikKKwkJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5kKCk7CiAKIAly ZXR1cm4gdHJ1ZTsKIH0KQEAgLTQ0NTQsMyArNDQ4NywyMSBAQCBzZXRfaW5kZXhzYWZlX3By b2NmbGFncyh2b2lkKQogCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW015UHJvYy0+cGd4YWN0 b2ZmXSA9IE15UHJvYy0+c3RhdHVzRmxhZ3M7CiAJTFdMb2NrUmVsZWFzZShQcm9jQXJyYXlM b2NrKTsKIH0KKworc3RhdGljIGlubGluZSB2b2lkCitwcm9ncmVzc19pbmRleF9wYXJ0aXRp b25fZG9uZSh2b2lkKQoreworCWludAkJCW5wYXJhbSA9IDY7CisJY29uc3QgaW50CXByb2dy ZXNzX2lkeFtdID0geworCQlQUk9HUkVTU19DUkVBVEVJRFhfSU5ERVhfT0lELAorCQlQUk9H UkVTU19DUkVBVEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCisJCVBST0dSRVNTX0NSRUFURUlE WF9QSEFTRSwKKwkJUFJPR1JFU1NfQ1JFQVRFSURYX1NVQlBIQVNFLAorCQlQUk9HUkVTU19D UkVBVEVJRFhfVFVQTEVTX1RPVEFMLAorCQlQUk9HUkVTU19DUkVBVEVJRFhfVFVQTEVTX0RP TkUKKwl9OworCWNvbnN0IGludDY0IHByb2dyZXNzX3ZhbHNbXSA9IHswLCAwLCAwLCAwLCAw LCAwfTsKKworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0obnBhcmFtLCBw cm9ncmVzc19pZHgsIHByb2dyZXNzX3ZhbHMpOworCXBnc3RhdF9wcm9ncmVzc19pbmNyX3Bh cmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05TX0RPTkUsIDEpOworfQpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9pbmRleC5oCmluZGV4IDdkNDM0ZjhlNjUuLmNjYmE2NWZiYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2lu ZGV4LmgKQEAgLTQyLDYgKzQyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleFBhcmFtcwog I2RlZmluZSBSRUlOREVYT1BUX1JFUE9SVF9QUk9HUkVTUyAweDAyIC8qIHJlcG9ydCBwZ3N0 YXQgcHJvZ3Jlc3MgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9NSVNTSU5HX09LIAkweDA0CS8q IHNraXAgbWlzc2luZyByZWxhdGlvbnMgKi8KICNkZWZpbmUgUkVJTkRFWE9QVF9DT05DVVJS RU5UTFkJMHgwOAkvKiBjb25jdXJyZW50IG1vZGUgKi8KKyNkZWZpbmUgUkVJTkRFWE9QVF9Q QVJUSVRJT04gMHgxMCAvKiByZWluZGV4aW5nIGlzIGRvbmUgYXMgcGFydCBvZiBwYXJ0aXRp b25lZCB0YWJsZS9pbmRleCByZWluZGV4ICovCiAKIC8qIHN0YXRlIGluZm8gZm9yIHZhbGlk YXRlX2luZGV4IGJ1bGtkZWxldGUgY2FsbGJhY2sgKi8KIHR5cGVkZWYgc3RydWN0IFZhbGlk YXRlSW5kZXhTdGF0ZQotLSAKMi40My4wCgo= --------------Lg0yjrgjQCSKZGNuomsIJcgS--