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 1l7gAr-0007UE-Uc for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Feb 2021 15:04:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1l7gAq-0007du-U3 for pgsql-hackers@arkaria.postgresql.org; Thu, 04 Feb 2021 15:04:00 +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 1l7gAq-0007dn-KS for pgsql-hackers@lists.postgresql.org; Thu, 04 Feb 2021 15:04:00 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1l7gAm-0007ZN-Ij for pgsql-hackers@postgresql.org; Thu, 04 Feb 2021 15:04:00 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTP id D50CA62794; Fri, 5 Feb 2021 00:03:51 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.102.3 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_c0550261cfc6a5bf8b77aa38047bd515" Date: Fri, 05 Feb 2021 00:03:51 +0900 From: torikoshia To: Fujii Masao Cc: Ian Lawrence Barwick , Robert Haas , Justin Pryzby , pgsql-hackers Subject: Re: adding wait_start column to pg_locks In-Reply-To: <3db333a9-31f7-a225-8038-eeb835ba8f37@oss.nttdata.com> References: <20210101214930.GH25152@telsasoft.com> <9e958478d8bcea814e7ce16511a18912@oss.nttdata.com> <23d39ee9c31643fad8f9ba9c5cf3aaf4@oss.nttdata.com> <0fd375a53e306566cea7f451cc8cfcde@oss.nttdata.com> <7b1bb07a-73ec-1fcc-2f65-41101adf0080@oss.nttdata.com> <8002219d-b999-12fa-2327-49afe40e5fbb@oss.nttdata.com> <88c451c7-2729-4329-fbae-6ed7664adea1@oss.nttdata.com> <3db333a9-31f7-a225-8038-eeb835ba8f37@oss.nttdata.com> Message-ID: X-Sender: torikoshia@oss.nttdata.com User-Agent: Roundcube Webmail/1.1.9 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --=_c0550261cfc6a5bf8b77aa38047bd515 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII; format=flowed On 2021-02-03 11:23, Fujii Masao wrote: >> 64-bit fetches are not atomic on some platforms. So spinlock is >> necessary when updating "waitStart" without holding the partition >> lock? Also GetLockStatusData() needs spinlock when reading >> "waitStart"? > > Also it might be worth thinking to use 64-bit atomic operations like > pg_atomic_read_u64(), for that. Thanks for your suggestion and advice! In the attached patch I used pg_atomic_read_u64() and pg_atomic_write_u64(). waitStart is TimestampTz i.e., int64, but it seems pg_atomic_read_xxx and pg_atomic_write_xxx only supports unsigned int, so I cast the type. I may be using these functions not correctly, so if something is wrong, I would appreciate any comments. About the documentation, since your suggestion seems better than v6, I used it as is. Regards, -- Atsushi Torikoshi --=_c0550261cfc6a5bf8b77aa38047bd515 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v7-0001-To-examine-the-duration-of-locks-we-did-join-on-p.patch Content-Disposition: attachment; filename=v7-0001-To-examine-the-duration-of-locks-we-did-join-on-p.patch; size=12127 RnJvbSAzOGEzZDg5OTZjNGIxNjkwY2YxOGNkYjEwMTVlMjcwMjAxZDM0MzMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgNCBGZWIgMjAyMSAyMzoyMzozNiArMDkwMApTdWJqZWN0OiBb UEFUQ0ggdjddIFRvIGV4YW1pbmUgdGhlIGR1cmF0aW9uIG9mIGxvY2tzLCB3ZSBkaWQgam9pbiBv biBwZ19sb2NrcwogYW5kIHBnX3N0YXRfYWN0aXZpdHkgYW5kIHVzZWQgY29sdW1ucyBzdWNoIGFz IHF1ZXJ5X3N0YXJ0IG9yIHN0YXRlX2NoYW5nZS4KIEhvd2V2ZXIsIHNpbmNlIHRoZXkgYXJlIHRo ZSBtb21lbnQgd2hlbiBxdWVyaWVzIGhhdmUgc3RhcnRlZCBvciB0aGVpciBzdGF0ZQogaGFzIGNo YW5nZWQsIHdlIGNvdWxkIG5vdCBnZXQgdGhlIGxvY2sgZHVyYXRpb24gaW4gdGhpcyB3YXkuIFRo aXMgcGF0Y2ggYWRkcwogYSBuZXcgZmllbGQgIndhaXRzdGFydCIgcHJlc2VydmluZyBsb2NrIGFj cXVpc2l0aW9uIHdhaXQgc3RhcnQgdGltZS4KCk5vdGUgdGhhdCB1cGRhdGluZyB0aGlzIGZpZWxk IGFuZCBsb2NrIGFjcXVpc2l0aW9uIGFyZSBub3QgcGVyZm9ybWVkCnN5bmNocm9ub3VzbHkgZm9y IHBlcmZvcm1hbmNlIHJlYXNvbnMuICBUaGVyZWZvcmUsIGRlcGVuZGluZyBvbiB0aGUKdGltaW5n LCBpdCBjYW4gaGFwcGVuIHRoYXQgd2FpdHN0YXJ0IGlzIE5VTEwgZXZlbiB0aG91Z2ggZ3JhbnRl ZCBpcwpmYWxzZS4KCkF1dGhvcjogQXRzdXNoaSBUb3Jpa29zaGkKUmV2aWV3ZWQtYnk6IElhbiBM YXdyZW5jZSBCYXJ3aWNrLCBSb2JlcnQgSGFhcywgRnVqaWkgTWFzYW8KRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9hOTYwMTNkYzUxY2RjNTZiMmEyYjg0ZmE4YTE2YTk5M0Bvc3MubnR0 ZGF0YS5jb20KCm1vZGlmaWVzCi0tLQogY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0 cmVlLm91dCB8ICA0ICsrLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAg ICAgfCAxMyArKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMg ICAgICAgIHwgMTcgKysrKysrKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s b2NrLmMgICAgICAgICAgfCAgOCArKysrKysrKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By b2MuYyAgICAgICAgICB8IDE0ICsrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC91dGlscy9hZHQv bG9ja2Z1bmNzLmMgICAgICAgIHwgIDkgKysrKysrKystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2su aCAgICAgICAgICAgICAgIHwgIDIgKysKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5oICAgICAg ICAgICAgICAgfCAgMSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCAgICAg IHwgIDUgKysrLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDEwIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3RlZC9jaGVja19idHJl ZS5vdXQgYi9jb250cmliL2FtY2hlY2svZXhwZWN0ZWQvY2hlY2tfYnRyZWUub3V0CmluZGV4IDEz ODQ4Yjc0NDkuLjVhM2YxZWY3MzcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYW1jaGVjay9leHBlY3Rl ZC9jaGVja19idHJlZS5vdXQKKysrIGIvY29udHJpYi9hbWNoZWNrL2V4cGVjdGVkL2NoZWNrX2J0 cmVlLm91dApAQCAtOTcsOCArOTcsOCBAQCBTRUxFQ1QgYnRfaW5kZXhfcGFyZW50X2NoZWNrKCdi dHRlc3RfYl9pZHgnKTsKIFNFTEVDVCAqIEZST00gcGdfbG9ja3MKIFdIRVJFIHJlbGF0aW9uID0g QU5ZKEFSUkFZWydidHRlc3RfYScsICdidHRlc3RfYV9pZHgnLCAnYnR0ZXN0X2InLCAnYnR0ZXN0 X2JfaWR4J106OnJlZ2NsYXNzW10pCiAgICAgQU5EIHBpZCA9IHBnX2JhY2tlbmRfcGlkKCk7Ci0g bG9ja3R5cGUgfCBkYXRhYmFzZSB8IHJlbGF0aW9uIHwgcGFnZSB8IHR1cGxlIHwgdmlydHVhbHhp ZCB8IHRyYW5zYWN0aW9uaWQgfCBjbGFzc2lkIHwgb2JqaWQgfCBvYmpzdWJpZCB8IHZpcnR1YWx0 cmFuc2FjdGlvbiB8IHBpZCB8IG1vZGUgfCBncmFudGVkIHwgZmFzdHBhdGggCi0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tCisgbG9ja3R5cGUgfCBkYXRhYmFz ZSB8IHJlbGF0aW9uIHwgcGFnZSB8IHR1cGxlIHwgdmlydHVhbHhpZCB8IHRyYW5zYWN0aW9uaWQg fCBjbGFzc2lkIHwgb2JqaWQgfCBvYmpzdWJpZCB8IHZpcnR1YWx0cmFuc2FjdGlvbiB8IHBpZCB8 IG1vZGUgfCBncmFudGVkIHwgZmFzdHBhdGggfCB3YWl0c3RhcnQgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0rLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiAoMCByb3dzKQogCiBD T01NSVQ7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDg2NWU4MjZmYjAuLjdkZjRjMzBhNjUgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9n cy5zZ21sCkBAIC0xMDU5Miw2ICsxMDU5MiwxOSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJs ZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAog ICAgICAgIGxvY2sgdGFibGUKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKwor ICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJh IHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+d2FpdHN0YXJ0 PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wdHo8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBUaW1lIHdoZW4gdGhlIHNlcnZlciBwcm9jZXNzIHN0YXJ0ZWQg d2FpdGluZyBmb3IgdGhpcyBsb2NrLAorICAgICAgIG9yIG51bGwgaWYgdGhlIGxvY2sgaXMgaGVs ZC4KKyAgICAgICBOb3RlIHRoYXQgdGhpcyBjYW4gYmUgbnVsbCBmb3IgYSB2ZXJ5IHNob3J0IHBl cmlvZCBvZiB0aW1lIGFmdGVyCisgICAgICAgdGhlIHdhaXQgc3RhcnRlZCBldmVuIHRob3VnaCA8 c3RydWN0ZmllbGQ+Z3JhbnRlZDwvc3RydWN0ZmllbGQ+CisgICAgICAgaXMgPGxpdGVyYWw+ZmFs c2U8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnku YwppbmRleCAzOWEzMGMwMGY3Li4xYzgxMzViYTc0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9zdGFuZGJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRi eS5jCkBAIC01MzksMTMgKzUzOSwyNiBAQCBSZXNvbHZlUmVjb3ZlcnlDb25mbGljdFdpdGhEYXRh YmFzZShPaWQgZGJpZCkKIHZvaWQKIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aExvY2soTE9D S1RBRyBsb2NrdGFnLCBib29sIGxvZ2dpbmdfY29uZmxpY3QpCiB7Ci0JVGltZXN0YW1wVHogbHRp bWU7CisJVGltZXN0YW1wVHogbHRpbWUsIG5vdzsKIAogCUFzc2VydChJbkhvdFN0YW5kYnkpOwog CiAJbHRpbWUgPSBHZXRTdGFuZGJ5TGltaXRUaW1lKCk7CisJbm93ID0gR2V0Q3VycmVudFRpbWVz dGFtcCgpOwogCi0JaWYgKEdldEN1cnJlbnRUaW1lc3RhbXAoKSA+PSBsdGltZSAmJiBsdGltZSAh PSAwKQorCS8qCisJICogUmVjb3JkIHdhaXRTdGFydCB1c2luZyB0aGUgY3VycmVudCB0aW1lIG9i dGFpbmVkIGZvciBjb21wYXJpc29uCisJICogd2l0aCBsdGltZS4KKwkgKgorCSAqIEl0IHdvdWxk IGJlIGlkZWFsIHRoaXMgY2FuIGJlIHN5bmNocm9ub3VzbHkgZG9uZSB3aXRoIHVwZGF0aW5nCisJ ICogbG9jayBpbmZvcm1hdGlvbi4gSG93ZXJ2ZXIsIHNpbmNlIGl0IGdpdmVzIHBlcmZvcm1hbmNl IGltcGFjdHMKKwkgKiB0byBob2xkIHBhcnRpdGlvbkxvY2sgbG9uZ2VyIHRpbWUsIHdlIGRvIGl0 IGhlcmUgYXN5bmNocm9ub3VzbHkuCisJICovCisJaWYgKHBnX2F0b21pY19yZWFkX3U2NCgmTXlQ cm9jLT53YWl0U3RhcnQpID09IDApCisJCXBnX2F0b21pY193cml0ZV91NjQoJk15UHJvYy0+d2Fp dFN0YXJ0LAorCQkJCQkJCXBnX2F0b21pY19yZWFkX3U2NCgocGdfYXRvbWljX3VpbnQ2NCAqKSAm bm93KSk7CisKKwlpZiAobm93ID49IGx0aW1lICYmIGx0aW1lICE9IDApCiAJewogCQkvKgogCQkg KiBXZSdyZSBhbHJlYWR5IGJlaGluZCwgc28gY2xlYXIgYSBwYXRoIGFzIHF1aWNrbHkgYXMgcG9z c2libGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCA3OWMxY2Y5YjhiLi4xMDhiNGQ5MDIz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTM2MTksNiArMzYxOSwxMiBAQCBHZXRMb2Nr U3RhdHVzRGF0YSh2b2lkKQogCQkJaW5zdGFuY2UtPmxlYWRlclBpZCA9IHByb2MtPnBpZDsKIAkJ CWluc3RhbmNlLT5mYXN0cGF0aCA9IHRydWU7CiAKKwkJCS8qCisJCQkgKiBTdWNjZXNzZnVsbHkg dGFraW5nIGZhc3QgcGF0aCBsb2NrIG1lYW5zIHRoZXJlIHdlcmUgbm8KKwkJCSAqIGNvbmZsaWN0 aW5nIGxvY2tzLgorCQkJICovCisJCQlpbnN0YW5jZS0+d2FpdFN0YXJ0ID0gMDsKKwogCQkJZWwr KzsKIAkJfQogCkBAIC0zNjQ2LDYgKzM2NTIsNyBAQCBHZXRMb2NrU3RhdHVzRGF0YSh2b2lkKQog CQkJaW5zdGFuY2UtPnBpZCA9IHByb2MtPnBpZDsKIAkJCWluc3RhbmNlLT5sZWFkZXJQaWQgPSBw cm9jLT5waWQ7CiAJCQlpbnN0YW5jZS0+ZmFzdHBhdGggPSB0cnVlOworCQkJaW5zdGFuY2UtPndh aXRTdGFydCA9IDA7CiAKIAkJCWVsKys7CiAJCX0KQEAgLTM2OTgsNiArMzcwNSw3IEBAIEdldExv Y2tTdGF0dXNEYXRhKHZvaWQpCiAJCWluc3RhbmNlLT5waWQgPSBwcm9jLT5waWQ7CiAJCWluc3Rh bmNlLT5sZWFkZXJQaWQgPSBwcm9jbG9jay0+Z3JvdXBMZWFkZXItPnBpZDsKIAkJaW5zdGFuY2Ut PmZhc3RwYXRoID0gZmFsc2U7CisJCWluc3RhbmNlLT53YWl0U3RhcnQgPSAoVGltZXN0YW1wVHop IHBnX2F0b21pY19yZWFkX3U2NCgmcHJvYy0+d2FpdFN0YXJ0KTsKIAogCQllbCsrOwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IGM4N2ZmYzY1NDkuLmRjOTIxMmNmODkgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYwpAQCAtNDAyLDYgKzQwMiw3IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAJ TXlQcm9jLT5sd1dhaXRNb2RlID0gMDsKIAlNeVByb2MtPndhaXRMb2NrID0gTlVMTDsKIAlNeVBy b2MtPndhaXRQcm9jTG9jayA9IE5VTEw7CisJcGdfYXRvbWljX2luaXRfdTY0KCZNeVByb2MtPndh aXRTdGFydCwgMCk7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCXsKIAkJaW50CQkJaTsK QEAgLTEyNDgsNiArMTI0OSw4IEBAIFByb2NTbGVlcChMT0NBTExPQ0sgKmxvY2FsbG9jaywgTG9j a01ldGhvZCBsb2NrTWV0aG9kVGFibGUpCiAJICovCiAJaWYgKCFJbkhvdFN0YW5kYnkpCiAJewor CQlUaW1lc3RhbXBUeiBkZWFkbG9ja1N0YXJ0OworCiAJCWlmIChMb2NrVGltZW91dCA+IDApCiAJ CXsKIAkJCUVuYWJsZVRpbWVvdXRQYXJhbXMgdGltZW91dHNbMl07CkBAIC0xMjYyLDYgKzEyNjUs MTYgQEAgUHJvY1NsZWVwKExPQ0FMTE9DSyAqbG9jYWxsb2NrLCBMb2NrTWV0aG9kIGxvY2tNZXRo b2RUYWJsZSkKIAkJfQogCQllbHNlCiAJCQllbmFibGVfdGltZW91dF9hZnRlcihERUFETE9DS19U SU1FT1VULCBEZWFkbG9ja1RpbWVvdXQpOworCQkvKgorCQkgKiBSZWNvcmQgd2FpdFN0YXJ0IHJl dXNpbmcgdGhlIGRlYWRsb2NrIHRpbWVvdXQgdGltZXIuCisJCSAqCisJCSAqIEl0IHdvdWxkIGJl IGlkZWFsIHRoaXMgY2FuIGJlIHN5bmNocm9ub3VzbHkgZG9uZSB3aXRoIHVwZGF0aW5nCisJCSAq IGxvY2sgaW5mb3JtYXRpb24uIEhvd2VydmVyLCBzaW5jZSBpdCBnaXZlcyBwZXJmb3JtYW5jZSBp bXBhY3RzCisJCSAqIHRvIGhvbGQgcGFydGl0aW9uTG9jayBsb25nZXIgdGltZSwgd2UgZG8gaXQg aGVyZSBhc3luY2hyb25vdXNseS4KKwkJICovCisJCWRlYWRsb2NrU3RhcnQgPSBnZXRfdGltZW91 dF9zdGFydF90aW1lKERFQURMT0NLX1RJTUVPVVQpOworCQlwZ19hdG9taWNfd3JpdGVfdTY0KCZN eVByb2MtPndhaXRTdGFydCwKKwkJCQkJcGdfYXRvbWljX3JlYWRfdTY0KChwZ19hdG9taWNfdWlu dDY0ICopICZkZWFkbG9ja1N0YXJ0KSk7CiAJfQogCWVsc2UgaWYgKGxvZ19yZWNvdmVyeV9jb25m bGljdF93YWl0cykKIAl7CkBAIC0xNjc4LDYgKzE2OTEsNyBAQCBQcm9jV2FrZXVwKFBHUFJPQyAq cHJvYywgUHJvY1dhaXRTdGF0dXMgd2FpdFN0YXR1cykKIAlwcm9jLT53YWl0TG9jayA9IE5VTEw7 CiAJcHJvYy0+d2FpdFByb2NMb2NrID0gTlVMTDsKIAlwcm9jLT53YWl0U3RhdHVzID0gd2FpdFN0 YXR1czsKKwlwZ19hdG9taWNfaW5pdF91NjQoJk15UHJvYy0+d2FpdFN0YXJ0LCAwKTsKIAogCS8q IEFuZCBhd2FrZW4gaXQgKi8KIAlTZXRMYXRjaCgmcHJvYy0+cHJvY0xhdGNoKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9sb2NrZnVuY3MuYwppbmRleCBiMWNmNWI3OWE3Li45N2YwMjY1YzEyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L2xvY2tmdW5jcy5jCkBAIC02Myw3ICs2Myw3IEBAIHR5cGVkZWYgc3RydWN0CiB9IFBH X0xvY2tfU3RhdHVzOwogCiAvKiBOdW1iZXIgb2YgY29sdW1ucyBpbiBwZ19sb2NrcyBvdXRwdXQg Ki8KLSNkZWZpbmUgTlVNX0xPQ0tfU1RBVFVTX0NPTFVNTlMJCTE1CisjZGVmaW5lIE5VTV9MT0NL X1NUQVRVU19DT0xVTU5TCQkxNgogCiAvKgogICogVlhJREdldERhdHVtIC0gQ29uc3RydWN0IGEg dGV4dCByZXByZXNlbnRhdGlvbiBvZiBhIFZYSUQKQEAgLTE0Miw2ICsxNDIsOCBAQCBwZ19sb2Nr X3N0YXR1cyhQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJICAgQk9PTE9JRCwgLTEsIDApOwogCQlU dXBsZURlc2NJbml0RW50cnkodHVwZGVzYywgKEF0dHJOdW1iZXIpIDE1LCAiZmFzdHBhdGgiLAog CQkJCQkJICAgQk9PTE9JRCwgLTEsIDApOworCQlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywg KEF0dHJOdW1iZXIpIDE2LCAid2FpdHN0YXJ0IiwKKwkJCQkJCSAgIFRJTUVTVEFNUFRaT0lELCAt MSwgMCk7CiAKIAkJZnVuY2N0eC0+dHVwbGVfZGVzYyA9IEJsZXNzVHVwbGVEZXNjKHR1cGRlc2Mp OwogCkBAIC0zMzYsNiArMzM4LDEwIEBAIHBnX2xvY2tfc3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1Mp CiAJCXZhbHVlc1sxMl0gPSBDU3RyaW5nR2V0VGV4dERhdHVtKEdldExvY2ttb2RlTmFtZShpbnN0 YW5jZS0+bG9ja3RhZy5sb2NrdGFnX2xvY2ttZXRob2RpZCwgbW9kZSkpOwogCQl2YWx1ZXNbMTNd ID0gQm9vbEdldERhdHVtKGdyYW50ZWQpOwogCQl2YWx1ZXNbMTRdID0gQm9vbEdldERhdHVtKGlu c3RhbmNlLT5mYXN0cGF0aCk7CisJCWlmICghZ3JhbnRlZCAmJiBpbnN0YW5jZS0+d2FpdFN0YXJ0 ICE9IDApCisJCQl2YWx1ZXNbMTVdID0gVGltZXN0YW1wVHpHZXREYXR1bShpbnN0YW5jZS0+d2Fp dFN0YXJ0KTsKKwkJZWxzZQorCQkJbnVsbHNbMTVdID0gdHJ1ZTsKIAogCQl0dXBsZSA9IGhlYXBf Zm9ybV90dXBsZShmdW5jY3R4LT50dXBsZV9kZXNjLCB2YWx1ZXMsIG51bGxzKTsKIAkJcmVzdWx0 ID0gSGVhcFR1cGxlR2V0RGF0dW0odHVwbGUpOwpAQCAtNDA2LDYgKzQxMiw3IEBAIHBnX2xvY2tf c3RhdHVzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXZhbHVlc1sxMl0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKCJTSVJlYWRMb2NrIik7CiAJCXZhbHVlc1sxM10gPSBCb29sR2V0RGF0dW0odHJ1ZSk7CiAJ CXZhbHVlc1sxNF0gPSBCb29sR2V0RGF0dW0oZmFsc2UpOworCQludWxsc1sxNV0gPSB0cnVlOwog CiAJCXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKGZ1bmNjdHgtPnR1cGxlX2Rlc2MsIHZhbHVlcywg bnVsbHMpOwogCQlyZXN1bHQgPSBIZWFwVHVwbGVHZXREYXR1bSh0dXBsZSk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAppbmRleCBmODE3NDA2MWVmLi5hMWE5OWM5ZWY0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKQEAgLTU5ODYsOSArNTk4Niw5IEBACiB7IG9pZCA9PiAnMTM3MScsIGRlc2NyID0+ ICd2aWV3IHN5c3RlbSBsb2NrIGluZm9ybWF0aW9uJywKICAgcHJvbmFtZSA9PiAncGdfbG9ja19z dGF0dXMnLCBwcm9yb3dzID0+ICcxMDAwJywgcHJvcmV0c2V0ID0+ICd0JywKICAgcHJvdm9sYXRp bGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICdyZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnJywKLSAg cHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LG9pZCxvaWQsaW50NCxpbnQyLHRleHQseGlkLG9pZCxv aWQsaW50Mix0ZXh0LGludDQsdGV4dCxib29sLGJvb2x9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tv LG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9hcmduYW1lcyA9PiAne2xvY2t0 eXBlLGRhdGFiYXNlLHJlbGF0aW9uLHBhZ2UsdHVwbGUsdmlydHVhbHhpZCx0cmFuc2FjdGlvbmlk LGNsYXNzaWQsb2JqaWQsb2Jqc3ViaWQsdmlydHVhbHRyYW5zYWN0aW9uLHBpZCxtb2RlLGdyYW50 ZWQsZmFzdHBhdGh9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3t0ZXh0LG9pZCxvaWQsaW50NCxp bnQyLHRleHQseGlkLG9pZCxvaWQsaW50Mix0ZXh0LGludDQsdGV4dCxib29sLGJvb2wsdGltZXN0 YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxvLG8sbyxvLG8sbyxvLG8sbyxvLG8s byxvfScsCisgIHByb2FyZ25hbWVzID0+ICd7bG9ja3R5cGUsZGF0YWJhc2UscmVsYXRpb24scGFn ZSx0dXBsZSx2aXJ0dWFseGlkLHRyYW5zYWN0aW9uaWQsY2xhc3NpZCxvYmppZCxvYmpzdWJpZCx2 aXJ0dWFsdHJhbnNhY3Rpb24scGlkLG1vZGUsZ3JhbnRlZCxmYXN0cGF0aCx3YWl0c3RhcnR9JywK ICAgcHJvc3JjID0+ICdwZ19sb2NrX3N0YXR1cycgfSwKIHsgb2lkID0+ICcyNTYxJywKICAgZGVz Y3IgPT4gJ2dldCBhcnJheSBvZiBQSURzIG9mIHNlc3Npb25zIGJsb2NraW5nIHNwZWNpZmllZCBi YWNrZW5kIFBJRCBmcm9tIGFjcXVpcmluZyBhIGhlYXZ5d2VpZ2h0IGxvY2snLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2su aAppbmRleCA2OGEzNDg3ZDQ5Li44NDY0ODdmOTRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtMjIsNiAr MjIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbG9ja2RlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdl L2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJ1dGlscy90 aW1lc3RhbXAuaCIKIAogLyogc3RydWN0IFBHUFJPQyBpcyBkZWNsYXJlZCBpbiBwcm9jLmgsIGJ1 dCBtdXN0IGZvcndhcmQtcmVmZXJlbmNlIGl0ICovCiB0eXBlZGVmIHN0cnVjdCBQR1BST0MgUEdQ Uk9DOwpAQCAtNDQ2LDYgKzQ0Nyw3IEBAIHR5cGVkZWYgc3RydWN0IExvY2tJbnN0YW5jZURhdGEK IAlMT0NLTU9ERQl3YWl0TG9ja01vZGU7CS8qIGxvY2sgYXdhaXRlZCBieSB0aGlzIFBHUFJPQywg aWYgYW55ICovCiAJQmFja2VuZElkCWJhY2tlbmQ7CQkvKiBiYWNrZW5kIElEIG9mIHRoaXMgUEdQ Uk9DICovCiAJTG9jYWxUcmFuc2FjdGlvbklkIGx4aWQ7CS8qIGxvY2FsIHRyYW5zYWN0aW9uIElE IG9mIHRoaXMgUEdQUk9DICovCisJVGltZXN0YW1wVHoJd2FpdFN0YXJ0OwkJLyogdGltZSBhdCB3 aGljaCB0aGlzIFBHUFJPQyBzdGFydGVkIHdhaXRpbmcgZm9yIGxvY2sgKi8KIAlpbnQJCQlwaWQ7 CQkJLyogcGlkIG9mIHRoaXMgUEdQUk9DICovCiAJaW50CQkJbGVhZGVyUGlkOwkJLyogcGlkIG9m IGdyb3VwIGxlYWRlcjsgPSBwaWQgaWYgbm8gZ3JvdXAgKi8KIAlib29sCQlmYXN0cGF0aDsJCS8q IHRha2VuIHZpYSBmYXN0cGF0aD8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvYy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggNjgzYWI2NGY3Ni4uMjFh YTVhZmIxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKQEAgLTE4MSw2ICsxODEsNyBAQCBzdHJ1Y3QgUEdQUk9D CiAJTE9DS01PREUJd2FpdExvY2tNb2RlOwkvKiB0eXBlIG9mIGxvY2sgd2UncmUgd2FpdGluZyBm b3IgKi8KIAlMT0NLTUFTSwloZWxkTG9ja3M7CQkvKiBiaXRtYXNrIGZvciBsb2NrIHR5cGVzIGFs cmVhZHkgaGVsZCBvbiB0aGlzCiAJCQkJCQkJCSAqIGxvY2sgb2JqZWN0IGJ5IHRoaXMgYmFja2Vu ZCAqLworCXBnX2F0b21pY191aW50NjQJd2FpdFN0YXJ0OwkJLyogdGltZSBhdCB3aGljaCB3YWl0 IGZvciBsb2NrIGFjcXVpc2l0aW9uIHN0YXJ0ZWQgKi8KIAogCWJvb2wJCWRlbGF5Q2hrcHQ7CQkv KiB0cnVlIGlmIHRoaXMgcHJvYyBkZWxheXMgY2hlY2twb2ludCBzdGFydCAqLwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CmluZGV4IDYxNzM0NzNkZTkuLjViODZjN2Q1ZjIgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0xMzk0LDggKzEzOTQsOSBAQCBwZ19sb2Nr c3wgU0VMRUNUIGwubG9ja3R5cGUsCiAgICAgbC5waWQsCiAgICAgbC5tb2RlLAogICAgIGwuZ3Jh bnRlZCwKLSAgICBsLmZhc3RwYXRoCi0gICBGUk9NIHBnX2xvY2tfc3RhdHVzKCkgbChsb2NrdHlw ZSwgZGF0YWJhc2UsIHJlbGF0aW9uLCBwYWdlLCB0dXBsZSwgdmlydHVhbHhpZCwgdHJhbnNhY3Rp b25pZCwgY2xhc3NpZCwgb2JqaWQsIG9ianN1YmlkLCB2aXJ0dWFsdHJhbnNhY3Rpb24sIHBpZCwg bW9kZSwgZ3JhbnRlZCwgZmFzdHBhdGgpOworICAgIGwuZmFzdHBhdGgsCisgICAgbC53YWl0c3Rh cnQKKyAgIEZST00gcGdfbG9ja19zdGF0dXMoKSBsKGxvY2t0eXBlLCBkYXRhYmFzZSwgcmVsYXRp b24sIHBhZ2UsIHR1cGxlLCB2aXJ0dWFseGlkLCB0cmFuc2FjdGlvbmlkLCBjbGFzc2lkLCBvYmpp ZCwgb2Jqc3ViaWQsIHZpcnR1YWx0cmFuc2FjdGlvbiwgcGlkLCBtb2RlLCBncmFudGVkLCBmYXN0 cGF0aCwgd2FpdHN0YXJ0KTsKIHBnX21hdHZpZXdzfCBTRUxFQ1Qgbi5uc3BuYW1lIEFTIHNjaGVt YW5hbWUsCiAgICAgYy5yZWxuYW1lIEFTIG1hdHZpZXduYW1lLAogICAgIHBnX2dldF91c2VyYnlp ZChjLnJlbG93bmVyKSBBUyBtYXR2aWV3b3duZXIsCi0tIAoyLjE4LjEKCg== --=_c0550261cfc6a5bf8b77aa38047bd515--