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 1vTPjl-0013iz-13 for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 19:20:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vTPik-000gKo-2n for pgsql-hackers@arkaria.postgresql.org; Wed, 10 Dec 2025 19:19:31 +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 1vTPik-000gKf-0k for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 19:19:31 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vTPii-0001Jd-0w for pgsql-hackers@lists.postgresql.org; Wed, 10 Dec 2025 19:19:30 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4dRQWW2x00z49Pxd; Wed, 10 Dec 2025 21:19:19 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1765394360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xAsXuorxkuMd7yhnTMrgPSpaOJoLIPm+d12o0Qyoyjs=; b=jSr37ONTWHmIvz162dQNAVAnpmf7+rMMDyUWe4szqS4/GSgTDeYqebRz4MUpFnVlYygUkL VQxz3CKqLTFr7SWF5qg7T/Dl2FS1eXBEQZO2/qhPx65nQARkG9qcsPaeESKis23J4/iSL0 kjHyjK7AQ+CR6Eh+7uiIEWEEI2AYF+nCEJHhCrqO6t8N/0JgGztkeGNUl4knwR/i0GJDbl dZYL68og2zC8SUDfnxnjrCiq0YVVI1WBUhEaArrbeBpFudUS98y3OuBYtKdxHtdypL9PdD fqZJOnnMS+s+vUAq4CL1hcNjH1aukhUxDjnCqPvehuoCHElQaa3AKtV4KHGqsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1765394360; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=xAsXuorxkuMd7yhnTMrgPSpaOJoLIPm+d12o0Qyoyjs=; b=ZcrykuFonhf4xTEs+YDFQUFv0XgHOKdxMneidoq8jSvLOc7jzBipGCsjmaPR/cB+yJbUv3 YeWc5V0KvfBa2Dp4GjNz/oHpn9ED4eoF2PxDTtTY/0bQ8UI2xW1/5LpRqi1dui9ZIyx52b c7DjmcOsuG1Mhn01ADkkgMC/6wgoHkTyGpAdXIK7M+QYfeIYNN2js2sC+/f1+Ip7047W4v TfPngCHRJ8daJ8+3Krso4uSIXd6PitCy8EsXHItZ8/qGv5aWby42ilravWi5LS5swk2A9F DXMN8Qn6DCmCVqSecsH8NfOOOgxOHWNvTPCWLIHGfXSCUNKztVZXeDqmt8oy1A== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1765394360; b=pqxYHe98qSMnfu+hjXzl32ikcGtRx7KAXysetynQyBjwtCA8XDWPRR7O5rnrOf3imk+HVB gO0FJ+DOj2cq5nHsO1NY29YzEuuYfR2lLwBH/Z/b7L9zTRwxibCLQJIASaCCw0hrM4U3wF e6s2zrz7qACgsD/ua4Y5OBnee8V2Ao6N0x5j5ZWP1GmWEC5Br+I3JSPervP39eIDdX2DkB 4TAhP6ZGi/S6K+OPzll3AQnT0B+DlI6DHQXEwBcpfBR95c7PDPqYEDx8GGzoYzFtOadYal z6bFpY2WgPBQ5Ie0czL1yHVIjZ3Ekwcy3D+7ipRTzfWPXmU/MdxgOKlFMI+IRg== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------1m37ZQOO0LSB81nZRHvqd19X" Message-ID: Date: Wed, 10 Dec 2025 21:19:18 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: POC: make mxidoff 64 bits From: Heikki Linnakangas To: Ashutosh Bapat , Maxim Orlov Cc: Alvaro Herrera , Alexander Korotkov , wenhui qiu , Postgres hackers References: <36531c0e-292c-409d-bbc7-a252cf6e910a@iki.fi> <54aa8f65-f0e4-4464-b543-e0399c1cab1e@iki.fi> <4a9dda70-0af7-41a4-9636-b168f2fc48ef@iki.fi> <46cc45e9-fddd-44bc-bcb3-96889aafd921@iki.fi> <6c298bc4-7029-4c1d-bf16-3e094842ce32@iki.fi> <2c62322e-a0e3-49cd-b369-370718a8efd8@iki.fi> <3624730d-6dae-42bf-9458-76c4c965fb27@iki.fi> Content-Language: en-US In-Reply-To: <3624730d-6dae-42bf-9458-76c4c965fb27@iki.fi> 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. --------------1m37ZQOO0LSB81nZRHvqd19X Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 09/12/2025 14:00, Heikki Linnakangas wrote: > 1. Currently, at multixid wraparound, MultiXactState->nextMXact goes to > 0, which is invalid. All the readers must be prepared for that, and skip > over the 0. That's error-prone, we've already missed that a few times. > Let's change things so that the code that *writes* MultiXactState- > >nextMXact skips over the zero already. Here's a patch for that. Does anyone see a problem with this? - Heikki --------------1m37ZQOO0LSB81nZRHvqd19X Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-refactor-Never-store-0-as-the-nextMXact.patch" Content-Disposition: attachment; filename="v1-0001-refactor-Never-store-0-as-the-nextMXact.patch" Content-Transfer-Encoding: base64 RnJvbSBmYjU4NjVkY2M1NjU0YTYwMWNjOGRiNzk2ZTYyZWE5MjgwMTYzOTZhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMTAgRGVjIDIwMjUgMjE6MTY6MjkgKzAyMDAK U3ViamVjdDogW1BBVENIIHYxIDEvMV0gcmVmYWN0b3I6IE5ldmVyIHN0b3JlIDAgYXMgdGhl IG5leHRNWGFjdAoKQmVmb3JlIHRoaXMgY29tbWl0LCB3aGVuIG11bHRpeGlkIHdyYXBhcm91 bmQgaGFwcGVucywKTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCBnb2VzIHRvIDAsIHdoaWNo IGlzIGludmFsaWQuIEFsbCB0aGUgcmVhZGVycwpkZWFsIHdpdGggdGhhdCBwb3NzaWJpbGl0 eSBhbmQgc2tpcCBvdmVyIHRoZSAwLiBUaGF0J3MgZXJyb3ItcHJvbmUsCndlJ3ZlIG1pc3Nl ZCB0aGF0IGEgZmV3IHRpbWVzIGluIHRoZSBwYXN0LiBUaGlzIGNvbW1pdCBjaGFuZ2VzIHRo ZQpyZXNwb25zaWJpbGl0eSBzbyB0aGF0IGFsbCB3cml0ZXJzIG9mIE11bHRpWGFjdFN0YXRl LT5uZXh0TVhhY3Qgc2tpcApvdmVyIHRoZSB6ZXJvIGFscmVhZHksIGFuZCByZWFkZXJzIGNh biB0cnVzdCB0aGF0IGl0J3MgbmV2ZXIgMC4KCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBv c3RncmVzcWwub3JnL21lc3NhZ2UtaWQvMzYyNDczMGQtNmRhZS00MmJmLTk0NTgtNzZjNGM5 NjVmYjI3QGlraS5maQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFj dC5jIHwgNzkgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfcmVzZXR3 YWwvcGdfcmVzZXR3YWwuYyAgICAgIHwgIDIgKwogc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAw MV9iYXNpYy5wbCAgICAgfCAxNSArLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRp b25zKCspLCA3MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211 bHRpeGFjdC5jCmluZGV4IDZjYTNkNDQyNjFlLi4yZTIwYTA5MDdkOCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKQEAgLTEwNCw2ICsxMDQsMTIgQEAgUHJl dmlvdXNNdWx0aVhhY3RJZChNdWx0aVhhY3RJZCBtdWx0aSkKIAlyZXR1cm4gbXVsdGkgPT0g Rmlyc3RNdWx0aVhhY3RJZCA/IE1heE11bHRpWGFjdElkIDogbXVsdGkgLSAxOwogfQogCitz dGF0aWMgaW5saW5lIE11bHRpWGFjdElkCitOZXh0TXVsdGlYYWN0SWQoTXVsdGlYYWN0SWQg bXVsdGkpCit7CisJcmV0dXJuIG11bHRpID09IE1heE11bHRpWGFjdElkID8gRmlyc3RNdWx0 aVhhY3RJZCA6IG11bHRpICsgMTsKK30KKwogLyoKICAqIExpbmtzIHRvIHNoYXJlZC1tZW1v cnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciBNdWx0aVhhY3QgY29udHJvbAogICovCkBAIC01NTIs MTQgKzU1OCw3IEBAIE11bHRpWGFjdElkU2V0T2xkZXN0TWVtYmVyKHZvaWQpCiAJCSAqLwog CQlMV0xvY2tBY3F1aXJlKE11bHRpWGFjdEdlbkxvY2ssIExXX1NIQVJFRCk7CiAKLQkJLyoK LQkJICogV2UgaGF2ZSB0byBiZXdhcmUgb2YgdGhlIHBvc3NpYmlsaXR5IHRoYXQgbmV4dE1Y YWN0IGlzIGluIHRoZQotCQkgKiB3cmFwcGVkLWFyb3VuZCBzdGF0ZS4gIFdlIGRvbid0IGZp eCB0aGUgY291bnRlciBpdHNlbGYgaGVyZSwgYnV0IHdlCi0JCSAqIG11c3QgYmUgc3VyZSB0 byBzdG9yZSBhIHZhbGlkIHZhbHVlIGluIG91ciBhcnJheSBlbnRyeS4KLQkJICovCiAJCW5l eHRNWGFjdCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7Ci0JCWlmIChuZXh0TVhhY3Qg PCBGaXJzdE11bHRpWGFjdElkKQotCQkJbmV4dE1YYWN0ID0gRmlyc3RNdWx0aVhhY3RJZDsK IAogCQlPbGRlc3RNZW1iZXJNWGFjdElkW015UHJvY051bWJlcl0gPSBuZXh0TVhhY3Q7CiAK QEAgLTU5NiwxNSArNTk1LDcgQEAgTXVsdGlYYWN0SWRTZXRPbGRlc3RWaXNpYmxlKHZvaWQp CiAKIAkJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19FWENMVVNJVkUpOwog Ci0JCS8qCi0JCSAqIFdlIGhhdmUgdG8gYmV3YXJlIG9mIHRoZSBwb3NzaWJpbGl0eSB0aGF0 IG5leHRNWGFjdCBpcyBpbiB0aGUKLQkJICogd3JhcHBlZC1hcm91bmQgc3RhdGUuICBXZSBk b24ndCBmaXggdGhlIGNvdW50ZXIgaXRzZWxmIGhlcmUsIGJ1dCB3ZQotCQkgKiBtdXN0IGJl IHN1cmUgdG8gc3RvcmUgYSB2YWxpZCB2YWx1ZSBpbiBvdXIgYXJyYXkgZW50cnkuCi0JCSAq LwogCQlvbGRlc3RNWGFjdCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7Ci0JCWlmIChv bGRlc3RNWGFjdCA8IEZpcnN0TXVsdGlYYWN0SWQpCi0JCQlvbGRlc3RNWGFjdCA9IEZpcnN0 TXVsdGlYYWN0SWQ7Ci0KIAkJZm9yIChpID0gMDsgaSA8IE1heE9sZGVzdFNsb3Q7IGkrKykK IAkJewogCQkJTXVsdGlYYWN0SWQgdGhpc29sZGVzdCA9IE9sZGVzdE1lbWJlck1YYWN0SWRb aV07CkBAIC02MzcsOSArNjI4LDYgQEAgUmVhZE5leHRNdWx0aVhhY3RJZCh2b2lkKQogCW14 aWQgPSBNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0OwogCUxXTG9ja1JlbGVhc2UoTXVsdGlY YWN0R2VuTG9jayk7CiAKLQlpZiAobXhpZCA8IEZpcnN0TXVsdGlYYWN0SWQpCi0JCW14aWQg PSBGaXJzdE11bHRpWGFjdElkOwotCiAJcmV0dXJuIG14aWQ7CiB9CiAKQEAgLTY1NCwxMSAr NjQyLDYgQEAgUmVhZE11bHRpWGFjdElkUmFuZ2UoTXVsdGlYYWN0SWQgKm9sZGVzdCwgTXVs dGlYYWN0SWQgKm5leHQpCiAJKm9sZGVzdCA9IE11bHRpWGFjdFN0YXRlLT5vbGRlc3RNdWx0 aVhhY3RJZDsKIAkqbmV4dCA9IE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3Q7CiAJTFdMb2Nr UmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKLQotCWlmICgqb2xkZXN0IDwgRmlyc3RNdWx0 aVhhY3RJZCkKLQkJKm9sZGVzdCA9IEZpcnN0TXVsdGlYYWN0SWQ7Ci0JaWYgKCpuZXh0IDwg Rmlyc3RNdWx0aVhhY3RJZCkKLQkJKm5leHQgPSBGaXJzdE11bHRpWGFjdElkOwogfQogCiAK QEAgLTc5NCw5ICs3NzcsNyBAQCBSZWNvcmROZXdNdWx0aVhhY3QoTXVsdGlYYWN0SWQgbXVs dGksIE11bHRpWGFjdE9mZnNldCBvZmZzZXQsCiAJZW50cnlubyA9IE11bHRpWGFjdElkVG9P ZmZzZXRFbnRyeShtdWx0aSk7CiAKIAkvKiBwb3NpdGlvbiBvZiB0aGUgbmV4dCBtdWx0aXhp ZCAqLwotCW5leHQgPSBtdWx0aSArIDE7Ci0JaWYgKG5leHQgPCBGaXJzdE11bHRpWGFjdElk KQotCQluZXh0ID0gRmlyc3RNdWx0aVhhY3RJZDsKKwluZXh0ID0gTmV4dE11bHRpWGFjdElk KG11bHRpKTsKIAluZXh0X3BhZ2VubyA9IE11bHRpWGFjdElkVG9PZmZzZXRQYWdlKG5leHQp OwogCW5leHRfZW50cnlubyA9IE11bHRpWGFjdElkVG9PZmZzZXRFbnRyeShuZXh0KTsKIApA QCAtOTU1LDEwICs5MzYsNiBAQCBHZXROZXdNdWx0aVhhY3RJZChpbnQgbm1lbWJlcnMsIE11 bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCiAJTFdMb2NrQWNxdWlyZShNdWx0aVhhY3RHZW5M b2NrLCBMV19FWENMVVNJVkUpOwogCi0JLyogSGFuZGxlIHdyYXBhcm91bmQgb2YgdGhlIG5l eHRNWGFjdCBjb3VudGVyICovCi0JaWYgKE11bHRpWGFjdFN0YXRlLT5uZXh0TVhhY3QgPCBG aXJzdE11bHRpWGFjdElkKQotCQlNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID0gRmlyc3RN dWx0aVhhY3RJZDsKLQogCS8qIEFzc2lnbiB0aGUgTVhJRCAqLwogCXJlc3VsdCA9IE11bHRp WGFjdFN0YXRlLT5uZXh0TVhhY3Q7CiAKQEAgLTEwMjUsNyArMTAwMiw3IEBAIEdldE5ld011 bHRpWGFjdElkKGludCBubWVtYmVycywgTXVsdGlYYWN0T2Zmc2V0ICpvZmZzZXQpCiAJCSAq IHJlcXVlc3Qgb25seSBvbmNlIHBlciA2NEsgbXVsdGlzIGdlbmVyYXRlZC4gIFRoaXMgc3Rp bGwgZ2l2ZXMKIAkJICogcGxlbnR5IG9mIGNoYW5jZXMgYmVmb3JlIHdlIGdldCBpbnRvIHJl YWwgdHJvdWJsZS4KIAkJICovCi0JCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAocmVzdWx0 ICUgNjU1MzYpID09IDApCisJCWlmIChJc1VuZGVyUG9zdG1hc3RlciAmJiAoKHJlc3VsdCAl IDY1NTM2KSA9PSAwIHx8IHJlc3VsdCA9PSBGaXJzdE11bHRpWGFjdElkKSkKIAkJCVNlbmRQ b3N0bWFzdGVyU2lnbmFsKFBNU0lHTkFMX1NUQVJUX0FVVE9WQUNfTEFVTkNIRVIpOwogCiAJ CWlmICghTXVsdGlYYWN0SWRQcmVjZWRlcyhyZXN1bHQsIG11bHRpV2FybkxpbWl0KSkKQEAg LTEwNTYsMTUgKzEwMzMsMTMgQEAgR2V0TmV3TXVsdGlYYWN0SWQoaW50IG5tZW1iZXJzLCBN dWx0aVhhY3RPZmZzZXQgKm9mZnNldCkKIAkJLyogUmUtYWNxdWlyZSBsb2NrIGFuZCBzdGFy dCBvdmVyICovCiAJCUxXTG9ja0FjcXVpcmUoTXVsdGlYYWN0R2VuTG9jaywgTFdfRVhDTFVT SVZFKTsKIAkJcmVzdWx0ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdDsKLQkJaWYgKHJl c3VsdCA8IEZpcnN0TXVsdGlYYWN0SWQpCi0JCQlyZXN1bHQgPSBGaXJzdE11bHRpWGFjdElk OwogCX0KIAogCS8qCiAJICogTWFrZSBzdXJlIHRoZXJlIGlzIHJvb20gZm9yIHRoZSBuZXh0 IE1YSUQgaW4gdGhlIGZpbGUuICBBc3NpZ25pbmcgdGhpcwogCSAqIE1YSUQgc2V0cyB0aGUg bmV4dCBNWElEJ3Mgb2Zmc2V0IGFscmVhZHkuCiAJICovCi0JRXh0ZW5kTXVsdGlYYWN0T2Zm c2V0KHJlc3VsdCArIDEpOworCUV4dGVuZE11bHRpWGFjdE9mZnNldChOZXh0TXVsdGlYYWN0 SWQocmVzdWx0KSk7CiAKIAkvKgogCSAqIFJlc2VydmUgdGhlIG1lbWJlcnMgc3BhY2UsIHNp bWlsYXJseSB0byBhYm92ZS4KQEAgLTEwOTgsMTUgKzEwNzMsOCBAQCBHZXROZXdNdWx0aVhh Y3RJZChpbnQgbm1lbWJlcnMsIE11bHRpWGFjdE9mZnNldCAqb2Zmc2V0KQogCS8qCiAJICog QWR2YW5jZSBjb3VudGVycy4gIEFzIGluIEdldE5ld1RyYW5zYWN0aW9uSWQoKSwgdGhpcyBt dXN0IG5vdCBoYXBwZW4KIAkgKiB1bnRpbCBhZnRlciBmaWxlIGV4dGVuc2lvbiBoYXMgc3Vj Y2VlZGVkIQotCSAqCi0JICogV2UgZG9uJ3QgY2FyZSBhYm91dCBNdWx0aVhhY3RJZCB3cmFw YXJvdW5kIGhlcmU7IGl0IHdpbGwgYmUgaGFuZGxlZCBieQotCSAqIHRoZSBuZXh0IGl0ZXJh dGlvbi4gIEJ1dCBub3RlIHRoYXQgbmV4dE1YYWN0IG1heSBiZSBJbnZhbGlkTXVsdGlYYWN0 SWQKLQkgKiBvciB0aGUgZmlyc3QgdmFsdWUgb24gYSBzZWdtZW50LWJlZ2lubmluZyBwYWdl IGFmdGVyIHRoaXMgcm91dGluZQotCSAqIGV4aXRzLCBzbyBhbnlvbmUgZWxzZSBsb29raW5n IGF0IHRoZSB2YXJpYWJsZSBtdXN0IGJlIHByZXBhcmVkIHRvIGRlYWwKLQkgKiB3aXRoIGVp dGhlciBjYXNlLgogCSAqLwotCShNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0KSsrOwotCisJ TXVsdGlYYWN0U3RhdGUtPm5leHRNWGFjdCA9IE5leHRNdWx0aVhhY3RJZChyZXN1bHQpOwog CU11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0ICs9IG5tZW1iZXJzOwogCiAJTFdMb2NrUmVs ZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKQEAgLTEyNTIsOSArMTIyMCw3IEBAIEdldE11bHRp WGFjdElkTWVtYmVycyhNdWx0aVhhY3RJZCBtdWx0aSwgTXVsdGlYYWN0TWVtYmVyICoqbWVt YmVycywKIAkJTXVsdGlYYWN0T2Zmc2V0IG5leHRNWE9mZnNldDsKIAogCQkvKiBoYW5kbGUg d3JhcGFyb3VuZCBpZiBuZWVkZWQgKi8KLQkJdG1wTVhhY3QgPSBtdWx0aSArIDE7Ci0JCWlm ICh0bXBNWGFjdCA8IEZpcnN0TXVsdGlYYWN0SWQpCi0JCQl0bXBNWGFjdCA9IEZpcnN0TXVs dGlYYWN0SWQ7CisJCXRtcE1YYWN0ID0gTmV4dE11bHRpWGFjdElkKG11bHRpKTsKIAogCQlw cmV2X3BhZ2VubyA9IHBhZ2VubzsKIApAQCAtMTg5OCw3ICsxODY0LDcgQEAgVHJpbU11bHRp WGFjdCh2b2lkKQogCQlMV0xvY2sJICAgKmxvY2sgPSBTaW1wbGVMcnVHZXRCYW5rTG9jayhN dWx0aVhhY3RPZmZzZXRDdGwsIHBhZ2Vubyk7CiAKIAkJTFdMb2NrQWNxdWlyZShsb2NrLCBM V19FWENMVVNJVkUpOwotCQlpZiAoZW50cnlubyA9PSAwKQorCQlpZiAoZW50cnlubyA9PSAw IHx8IG5leHRNWGFjdCA9PSBGaXJzdE11bHRpWGFjdElkKQogCQkJc2xvdG5vID0gU2ltcGxl THJ1WmVyb1BhZ2UoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBwYWdlbm8pOwogCQllbHNlCiAJCQlz bG90bm8gPSBTaW1wbGVMcnVSZWFkUGFnZShNdWx0aVhhY3RPZmZzZXRDdGwsIHBhZ2Vubywg dHJ1ZSwgbmV4dE1YYWN0KTsKQEAgLTIwMTQsOCArMTk4MCwxMCBAQCB2b2lkCiBNdWx0aVhh Y3RTZXROZXh0TVhhY3QoTXVsdGlYYWN0SWQgbmV4dE11bHRpLAogCQkJCQkgIE11bHRpWGFj dE9mZnNldCBuZXh0TXVsdGlPZmZzZXQpCiB7CisJQXNzZXJ0KE11bHRpWGFjdElkSXNWYWxp ZChuZXh0TXVsdGkpKTsKIAlkZWJ1Z19lbG9nNChERUJVRzIsICJNdWx0aVhhY3Q6IHNldHRp bmcgbmV4dCBtdWx0aSB0byAldSBvZmZzZXQgJSIgUFJJdTY0LAogCQkJCW5leHRNdWx0aSwg bmV4dE11bHRpT2Zmc2V0KTsKKwogCUxXTG9ja0FjcXVpcmUoTXVsdGlYYWN0R2VuTG9jaywg TFdfRVhDTFVTSVZFKTsKIAlNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0ID0gbmV4dE11bHRp OwogCU11bHRpWGFjdFN0YXRlLT5uZXh0T2Zmc2V0ID0gbmV4dE11bHRpT2Zmc2V0OwpAQCAt MjE4NCw2ICsyMTUyLDggQEAgdm9pZAogTXVsdGlYYWN0QWR2YW5jZU5leHRNWGFjdChNdWx0 aVhhY3RJZCBtaW5NdWx0aSwKIAkJCQkJCSAgTXVsdGlYYWN0T2Zmc2V0IG1pbk11bHRpT2Zm c2V0KQogeworCUFzc2VydChNdWx0aVhhY3RJZElzVmFsaWQobWluTXVsdGkpKTsKKwogCUxX TG9ja0FjcXVpcmUoTXVsdGlYYWN0R2VuTG9jaywgTFdfRVhDTFVTSVZFKTsKIAlpZiAoTXVs dGlYYWN0SWRQcmVjZWRlcyhNdWx0aVhhY3RTdGF0ZS0+bmV4dE1YYWN0LCBtaW5NdWx0aSkp CiAJewpAQCAtMjMyMSw3ICsyMjkxLDYgQEAgTXVsdGlYYWN0SWQKIEdldE9sZGVzdE11bHRp WGFjdElkKHZvaWQpCiB7CiAJTXVsdGlYYWN0SWQgb2xkZXN0TVhhY3Q7Ci0JTXVsdGlYYWN0 SWQgbmV4dE1YYWN0OwogCWludAkJCWk7CiAKIAkvKgpAQCAtMjMyOSwxNyArMjI5OCw3IEBA IEdldE9sZGVzdE11bHRpWGFjdElkKHZvaWQpCiAJICogT2xkZXN0VmlzaWJsZU1YYWN0SWRb XSBlbnRyaWVzLCBvciBuZXh0TVhhY3QgaWYgbm9uZSBhcmUgdmFsaWQuCiAJICovCiAJTFdM b2NrQWNxdWlyZShNdWx0aVhhY3RHZW5Mb2NrLCBMV19TSEFSRUQpOwotCi0JLyoKLQkgKiBX ZSBoYXZlIHRvIGJld2FyZSBvZiB0aGUgcG9zc2liaWxpdHkgdGhhdCBuZXh0TVhhY3QgaXMg aW4gdGhlCi0JICogd3JhcHBlZC1hcm91bmQgc3RhdGUuICBXZSBkb24ndCBmaXggdGhlIGNv dW50ZXIgaXRzZWxmIGhlcmUsIGJ1dCB3ZQotCSAqIG11c3QgYmUgc3VyZSB0byB1c2UgYSB2 YWxpZCB2YWx1ZSBpbiBvdXIgY2FsY3VsYXRpb24uCi0JICovCi0JbmV4dE1YYWN0ID0gTXVs dGlYYWN0U3RhdGUtPm5leHRNWGFjdDsKLQlpZiAobmV4dE1YYWN0IDwgRmlyc3RNdWx0aVhh Y3RJZCkKLQkJbmV4dE1YYWN0ID0gRmlyc3RNdWx0aVhhY3RJZDsKLQotCW9sZGVzdE1YYWN0 ID0gbmV4dE1YYWN0OworCW9sZGVzdE1YYWN0ID0gTXVsdGlYYWN0U3RhdGUtPm5leHRNWGFj dDsKIAlmb3IgKGkgPSAwOyBpIDwgTWF4T2xkZXN0U2xvdDsgaSsrKQogCXsKIAkJTXVsdGlY YWN0SWQgdGhpc29sZGVzdDsKQEAgLTI2NjAsNiArMjYxOSw3IEBAIFRydW5jYXRlTXVsdGlY YWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11bHRpLCBPaWQgbmV3T2xkZXN0TXVsdGlEQikK IAogCUFzc2VydCghUmVjb3ZlcnlJblByb2dyZXNzKCkpOwogCUFzc2VydChNdWx0aVhhY3RT dGF0ZS0+ZmluaXNoZWRTdGFydHVwKTsKKwlBc3NlcnQoTXVsdGlYYWN0SWRJc1ZhbGlkKG5l d09sZGVzdE11bHRpKSk7CiAKIAkvKgogCSAqIFdlIGNhbiBvbmx5IGFsbG93IG9uZSB0cnVu Y2F0aW9uIHRvIGhhcHBlbiBhdCBvbmNlLiBPdGhlcndpc2UgcGFydHMgb2YKQEAgLTI2NzQs NyArMjYzNCw2IEBAIFRydW5jYXRlTXVsdGlYYWN0KE11bHRpWGFjdElkIG5ld09sZGVzdE11 bHRpLCBPaWQgbmV3T2xkZXN0TXVsdGlEQikKIAluZXh0T2Zmc2V0ID0gTXVsdGlYYWN0U3Rh dGUtPm5leHRPZmZzZXQ7CiAJb2xkZXN0TXVsdGkgPSBNdWx0aVhhY3RTdGF0ZS0+b2xkZXN0 TXVsdGlYYWN0SWQ7CiAJTFdMb2NrUmVsZWFzZShNdWx0aVhhY3RHZW5Mb2NrKTsKLQlBc3Nl cnQoTXVsdGlYYWN0SWRJc1ZhbGlkKG9sZGVzdE11bHRpKSk7CiAKIAkvKgogCSAqIE1ha2Ug c3VyZSB0byBvbmx5IGF0dGVtcHQgdHJ1bmNhdGlvbiBpZiB0aGVyZSdzIHZhbHVlcyB0byB0 cnVuY2F0ZQpAQCAtMjk0NCw3ICsyOTAzLDcgQEAgbXVsdGl4YWN0X3JlZG8oWExvZ1JlYWRl clN0YXRlICpyZWNvcmQpCiAJCQkJCQkgICB4bHJlYy0+bWVtYmVycyk7CiAKIAkJLyogTWFr ZSBzdXJlIG5leHRNWGFjdC9uZXh0T2Zmc2V0IGFyZSBiZXlvbmQgd2hhdCB0aGlzIHJlY29y ZCBoYXMgKi8KLQkJTXVsdGlYYWN0QWR2YW5jZU5leHRNWGFjdCh4bHJlYy0+bWlkICsgMSwK KwkJTXVsdGlYYWN0QWR2YW5jZU5leHRNWGFjdChOZXh0TXVsdGlYYWN0SWQoeGxyZWMtPm1p ZCksCiAJCQkJCQkJCSAgeGxyZWMtPm1vZmYgKyB4bHJlYy0+bm1lbWJlcnMpOwogCiAJCS8q CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMgYi9zcmMv YmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXggNTYwMTJkNWY0YzQuLjliZmFi OGMzMDdiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMK KysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5jCkBAIC0yODcsNiArMjg3 LDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJCSAqIFhYWCBJdCdkIGJl IG5pY2UgdG8gaGF2ZSBtb3JlIHNhbml0eSBjaGVja3MgaGVyZSwgZS5nLiBzbwogCQkJCSAq IHRoYXQgb2xkZXN0IGlzIG5vdCB3cmFwcGVkIGFyb3VuZCB3LnIudC4gbmV4dE11bHRpLgog CQkJCSAqLworCQkJCWlmIChuZXh0X214aWRfdmFsID09IDApCisJCQkJCXBnX2ZhdGFsKCJu ZXh0IG11bHRpdHJhbnNhY3Rpb24gSUQgKC1tKSBtdXN0IG5vdCBiZSAwIik7CiAJCQkJaWYg KG9sZGVzdF9teGlkX3ZhbCA9PSAwKQogCQkJCQlwZ19mYXRhbCgib2xkZXN0IG11bHRpdHJh bnNhY3Rpb24gSUQgKC1tKSBtdXN0IG5vdCBiZSAwIik7CiAJCQkJbXhpZHNfZ2l2ZW4gPSB0 cnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXNldHdhbC90LzAwMV9iYXNpYy5wbCBi L3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwKaW5kZXggOGJhYjlhZGQ3NGYu LmRkZTAyNGE3ZjE0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3QvMDAxX2Jh c2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfcmVzZXR3YWwvdC8wMDFfYmFzaWMucGwKQEAgLTEx OSwxOSArMTE5LDEwIEBAIGNvbW1hbmRfZmFpbHNfbGlrZSgKIAlbICdwZ19yZXNldHdhbCcs ICctbScgPT4gJzEwLGJhcicsICRub2RlLT5kYXRhX2RpciBdLAogCXFyL2Vycm9yOiBpbnZh bGlkIGFyZ3VtZW50IGZvciBvcHRpb24gLW0vLAogCSdmYWlscyB3aXRoIGluY29ycmVjdCAt bSBvcHRpb24gcGFydCAyJyk7Ci0KLSMgVGhpcyB1c2VkIHRvIGJlIGZvcmJpZGRlbiwgYnV0 IG5leHRNdWx0aSBjYW4gbGVnaXRpbWF0ZWx5IGJlIDAgYWZ0ZXIKLSMgd3JhcGFyb3VuZCwg c28gd2Ugbm93IGFjY2VwdCBpdCBpbiBwZ19yZXNldHdhbCB0b28uCi1jb21tYW5kX29rKAot CVsgJ3BnX3Jlc2V0d2FsJywgJy1tJyA9PiAnMCwxMCcsICRub2RlLT5kYXRhX2RpciBdLAot CSdzdWNjZWVkcyB3aXRoIC1tIHZhbHVlIDAgaW4gdGhlIGZpcnN0IHBhcnQnKTsKLQotIyAt MCBkb2Vzbid0IG1ha2Ugc2Vuc2UgaG93ZXZlcgogY29tbWFuZF9mYWlsc19saWtlKAotCVsg J3BnX3Jlc2V0d2FsJywgJy1tJyA9PiAnLTAsMTAnLCAkbm9kZS0+ZGF0YV9kaXIgXSwKLQlx ci9lcnJvcjogaW52YWxpZCBhcmd1bWVudCBmb3Igb3B0aW9uIC1tLywKLQknZmFpbHMgd2l0 aCAtbSB2YWx1ZSAtMCBpbiB0aGUgZmlyc3QgcGFydCcpOwotCisJWyAncGdfcmVzZXR3YWwn LCAnLW0nID0+ICcwLDEwJywgJG5vZGUtPmRhdGFfZGlyIF0sCisJcXIvbXVzdCBub3QgYmUg MC8sCisJJ2ZhaWxzIHdpdGggLW0gdmFsdWUgMCBpbiB0aGUgZmlyc3QgcGFydCcpOwogY29t bWFuZF9mYWlsc19saWtlKAogCVsgJ3BnX3Jlc2V0d2FsJywgJy1tJyA9PiAnMTAsMCcsICRu b2RlLT5kYXRhX2RpciBdLAogCXFyL211c3Qgbm90IGJlIDAvLAotLSAKMi40Ny4zCgo= --------------1m37ZQOO0LSB81nZRHvqd19X--