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 1qIn1q-0005UI-LW for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Jul 2023 09:17:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qIn1p-0003DR-Jl for pgsql-hackers@arkaria.postgresql.org; Mon, 10 Jul 2023 09:17:57 +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 1qIn1p-0003DH-52 for pgsql-hackers@lists.postgresql.org; Mon, 10 Jul 2023 09:17:57 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qIn1l-003FjS-GV for pgsql-hackers@postgresql.org; Mon, 10 Jul 2023 09:17:56 +0000 Received: from [192.168.1.115] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (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 4Qzz1W2vqPz49Q1T; Mon, 10 Jul 2023 12:17:51 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1688980671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=baVKOLYi6UW0MouAojfaiNazON1Mj+bmK0hXcwR9WQ8=; b=NUUHqRXubfC3G0x3hWM+6aKDt0gqCjo1msfRst719VyCFRMTJxX9OLupuw+2xa2zgqb3So LyXkYqofViono4Xt4MqOvsGFVoFLxzBVXNMPFkO6B5Bo/slILrcuFFBtTrrefI2HsGLzxg hX0qurBfh+N0ah/ru0APfNM001kgCAWzQhprK4WKLCZ0yNk7mo2dGHC9D8MjZuQKw2/Zsz 1yTtg3rjC6nUqSAnN5JVvw9mKwkEpJR4dhQQcgOUhQM0zlaZPmxOCQ5aQrPRyWTUjp0SlK rVDEaRivmC0h2eRoN9YbYVPBGAuh3Y45dzk9fi2i6kuruo2dAN1S1HiYyFJpWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1688980671; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=baVKOLYi6UW0MouAojfaiNazON1Mj+bmK0hXcwR9WQ8=; b=v4TkzV6kL88hi1JfXwWJFDGPD0GC8OzNZTRbMkKRqEgcuhDkgnljJXU46EIBhRRTAJHAu9 lTwZZ+BjykRVGQfsYsdI3YM3io5eTQutPRRZxLcLb+n0k5JM4z44UNXhJ7PvIVP8GoqKs3 FaFHzjeKj+f/fMSaaLbJRltG/LfQ9PfBGqkg6z6cEr/3TqgzNJmuU3pnx/DEd2Garsm+zx yZ+UvNnO69e82SIP7uGNYbSVkpENYnoT8g8hS2ewvvuMd1rU1h0s1wA86w6Jx43NqypXY4 qBgenWJz2as67nXcpKWNMnWNVhBM3gDIksl/KGKDXdjsj2WtJC82/6bUdvUI7w== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Seal: i=1; s=lahtoruutu; d=iki.fi; t=1688980671; a=rsa-sha256; cv=none; b=NrUnO20KD1H0CZWhgKyzKwtLgYxP4FTPbFe/i+Hg9NT6t6L/Lh/yi5ZELOVDgKkebIjwLu +YCGM7y2X/HN0lyosQWAWbKzotPYGusPD4LkuNQENokbjtUckTpXEwymeqtW11x7E6QRRn k3cfDu2VL8w9Jo+ZinRAys3jj3/APwkexWGC2rsxzVwtvgYvYuOgYFA4CV80zTcHGsZtFC Vefpyu60gqmB4o45dWapgwG2k8BrSB4oTrbMuSiHS3bCK60BTjN3VOlYEGZPT0a+7KnFmj 2m4BzOFPZ49AeTCF+YzbAyM+5Y22paU7GwlxOtIBe9jlTpbUdpbESG+HTUJHDA== Content-Type: multipart/mixed; boundary="------------L2AEzO22NZcHHMrgn6MDNsQ0" Message-ID: <0974d29d-d047-36fb-d466-93b933411442@iki.fi> Date: Mon, 10 Jul 2023 12:17:50 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: Cross-database SERIALIZABLE safe snapshots Content-Language: en-US To: Thomas Munro , pgsql-hackers References: From: Heikki Linnakangas In-Reply-To: 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. --------------L2AEzO22NZcHHMrgn6MDNsQ0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 09/03/2023 07:34, Thomas Munro wrote: > Here is a feature idea that emerged from a pgsql-bugs thread[1] that I > am kicking into the next commitfest. Example: > > s1: \c db1 > s1: CREATE TABLE t (i int); > s1: BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE; > s1: INSERT INTO t VALUES (42); > > s2: \c db2 > s2: BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY DEFERRABLE; > s2: SELECT * FROM x; > > I don't know of any reason why s2 should have to wait, or > alternatively, without DEFERRABLE, why it shouldn't immediately drop > from SSI to SI (that is, opt out of predicate locking and go faster). > This change relies on the fact that PostgreSQL doesn't allow any kind > of cross-database access, except for shared catalogs, and all catalogs > are already exempt from SSI. I have updated this new version of the > patch to explain that very clearly at the place where that exemption > happens, so that future hackers would see that we rely on that fact > elsewhere if reconsidering that. Makes sense. > @@ -1814,7 +1823,17 @@ GetSerializableTransactionSnapshotInt(Snapshot snapshot, > { > othersxact = dlist_container(SERIALIZABLEXACT, xactLink, iter.cur); > > - if (!SxactIsCommitted(othersxact) > + /* > + * We can't possibly have an unsafe conflict with a transaction in > + * another database. The only possible overlap is on shared > + * catalogs, but we don't support SSI for shared catalogs. The > + * invalid database case covers 2PC, because we don't yet record > + * database OIDs in the 2PC information. We also filter out doomed > + * transactions as they can't possibly commit. > + */ > + if ((othersxact->database == InvalidOid || > + othersxact->database == MyDatabaseId) > + && !SxactIsCommitted(othersxact) > && !SxactIsDoomed(othersxact) > && !SxactIsReadOnly(othersxact)) > { Why don't we set the database OID in 2PC transactions? We actually do set it correctly - or rather we never clear it - when a transaction is prepared. But you set it to invalid when recovering a prepared transaction on system startup. So the comment is a bit misleading: the optimization doesn't apply to 2PC transactions recovered after restart, other 2PC transactions are fine. I'm sure it's not a big deal in practice, but it's also not hard to fix. We do store the database OID in the twophase state. The caller of predicatelock_twophase_recover() has it, we just need a little plumbing to pass it down. Attached patches: 1. Rebased version of your patch, just trivial pgindent conflict fixes 2. Some comment typo fixes and improvements 3. Set the database ID on recovered 2PC transactions A test for this would be nice. isolationtester doesn't support connecting to different databases, restarting the server to test the 2PC recovery, but a TAP test could do it. -- Heikki Linnakangas Neon (https://neon.tech) --------------L2AEzO22NZcHHMrgn6MDNsQ0 Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-Optimize-cross-database-SERIALIZABLE-safe-snapsho.patch" Content-Disposition: attachment; filename*0="v2-0001-Optimize-cross-database-SERIALIZABLE-safe-snapsho.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3OTc2MjE1ODMzYzE1M2Q5N2MzZDZkZTk1YmNmYzE3ZDJkNTMwNDkwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUaG9tYXMgTXVucm8gPHRob21hcy5tdW5yb0BnbWFp bC5jb20+CkRhdGU6IFRodSwgOSBNYXIgMjAyMyAxODoxMjoxNyArMTMwMApTdWJqZWN0OiBb UEFUQ0ggdjIgMS8zXSBPcHRpbWl6ZSBjcm9zcy1kYXRhYmFzZSBTRVJJQUxJWkFCTEUgc2Fm ZSBzbmFwc2hvdHMuCgpTRVJJQUxJWkFCTEUgUkVBRCBPTkxZIFtERUZFUlJBQkxFXSB0cmFu c2FjdGlvbnMgY2FuIGJlbmVmaXQgZnJvbSAic2FmZQpzbmFwc2hvdHMiLCB3aGVyZSB0aGV5 IGRldGVjdCB0aGF0IG5vIHNlcmlhbGl6YWJsZSBhbm9tYWxpZXMgY291bGQgYmUKY3JlYXRl ZCwgc28gd2UgY2FuIHNpbGVudGx5IGRyb3AgdG8gdGhlIGNoZWFwZXIgUkVQRUFUQUJMRSBS RUFEIChpbgpvdGhlciB3b3JkcyBmcm9tIFNTSSB0byBTSSkuCgpTaW5jZSBhIHRyYW5zYWN0 aW9ucyBjb25uZWN0ZWQgdG8gZGlmZmVyZW50IGRhdGFiYXNlcyBjYW4ndCBhY2Nlc3MgZWFj aApvdGhlcnMnIGRhdGEgYXQgYWxsLCBleGNlcHQgZm9yIGNhdGFsb2dzIHdoZXJlIFNTSSBk b2Vzbid0IGFwcGx5IGFueXdheSwKdGhlcmUgaXMgbm8gcG9pbnQgaW4gd2FpdGluZyBmb3Ig dHJhbnNhY3Rpb25zIGluIG90aGVyIGRhdGFiYXNlcy4KRmlsdGVyIHRoZW0gb3V0IHdoaWxl IHBvcHVsYXRpbmcgb3VyIHBvc3NpYmxlVW5zYWZlQ29uZmxpY3RzIGxpc3RzLgoKVGhpcyBt ZWFucyB0aGF0IG5vbi1ERUZFUlJBQkxFIHNhZmUgc25hcHNob3RzIG1pZ2h0IG9wdCBvdXQg aW1tZWRpYXRlbHkKb3Igc29vbmVyLCBhbmQgREVGRVJSQUJMRSBzYWZlIHNuYXBzaG90cyBt aWdodCBub3QgaGF2ZSB0byB3YWl0IGFzIGxvbmcKdG8gZ2V0IHN0YXJ0ZWQsIGluIHNjZW5h cmlvcyB3aGVyZSBtb3JlIHRoYW4gb25lIGRhdGFiYXNlIGlzIHVzaW5nClNFUklBTElaQUJM RSB0cmFuc2FjdGlvbnMuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tLzE3MTE2 LWQ2Y2EyMTdhY2MxODBlMzAlNDBwb3N0Z3Jlc3FsLm9yZwotLS0KIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgIHwgMjggKysrKysrKysrKysrKysrKysrKy0t LS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIHwgIDEgKwog MiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCAxYWY0MTIxM2I0Li41ZTYy MDI3Mjg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC00ODks NiArNDg5LDEzIEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VQcmVkaWNhdGVMb2Nrc0xvY2FsKHZv aWQpOwogLyoKICAqIERvZXMgdGhpcyByZWxhdGlvbiBwYXJ0aWNpcGF0ZSBpbiBwcmVkaWNh dGUgbG9ja2luZz8gVGVtcG9yYXJ5IGFuZCBzeXN0ZW0KICAqIHJlbGF0aW9ucyBhcmUgZXhl bXB0LgorICoKKyAqIE5vdGUgdGhhdCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlvblNuYXBz aG90SW50KCkgcmVsaWVzIG9uIHRoZSBsYXR0ZXIKKyAqIGV4ZW1wdGlvbiB3aGVuIGNvbnNp ZGVyaW5nIHNlcGFyYXRlIGRhdGFiYXNlcyB0byBiZSBmdWxseSBwYXJ0aXRpb25lZCBmcm9t CisgKiBlYWNoIG90aGVyIGZvciB0aGUgcHVycG9zZXMgb2YgdGhlIHNhZmUgc25hcHNob3Qg b3B0aW1pemF0aW9uLiAgSWYgU1NJIGlzCisgKiBldmVyIGFwcGxpZWQgdG8gc3lzdGVtIGNh dGFsb2dzLCBhbmQgaW4gcGFydGljdWxhciBzaGFyZWQgY2F0YWxvZ3MsCisgKiBkYXRhYmFz ZXMgd291bGQgbm90IG5vIGxvbmdlciBiZSBzdWZmaWNpZW50bHkgaXNvbGF0ZWQgYW5kIHRo YXQgd291bGQgbmVlZAorICogdG8gYmUgcmVjb25zZGVyZWQuCiAgKi8KIHN0YXRpYyBpbmxp bmUgYm9vbAogUHJlZGljYXRlTG9ja2luZ05lZWRlZEZvclJlbGF0aW9uKFJlbGF0aW9uIHJl bGF0aW9uKQpAQCAtMTIxMyw2ICsxMjIwLDcgQEAgSW5pdFByZWRpY2F0ZUxvY2tzKHZvaWQp CiAJCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmxhZ3MgPSBTWEFDVF9GTEFHX0NP TU1JVFRFRDsKIAkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5waWQgPSAwOwogCQlQ cmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBncHJvY25vID0gSU5WQUxJRF9QR1BST0NO TzsKKwkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5kYXRhYmFzZSA9IEludmFsaWRP aWQ7CiAJfQogCS8qIFRoaXMgbmV2ZXIgY2hhbmdlcywgc28gbGV0J3Mga2VlcCBhIGxvY2Fs IGNvcHkuICovCiAJT2xkQ29tbWl0dGVkU3hhY3QgPSBQcmVkWGFjdC0+T2xkQ29tbWl0dGVk U3hhY3Q7CkBAIC0xNzk1LDYgKzE4MDMsNyBAQCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlv blNuYXBzaG90SW50KFNuYXBzaG90IHNuYXBzaG90LAogCXN4YWN0LT54bWluID0gc25hcHNo b3QtPnhtaW47CiAJc3hhY3QtPnBpZCA9IE15UHJvY1BpZDsKIAlzeGFjdC0+cGdwcm9jbm8g PSBNeVByb2MtPnBncHJvY25vOworCXN4YWN0LT5kYXRhYmFzZSA9IE15RGF0YWJhc2VJZDsK IAlkbGlzdF9pbml0KCZzeGFjdC0+cHJlZGljYXRlTG9ja3MpOwogCWRsaXN0X25vZGVfaW5p dCgmc3hhY3QtPmZpbmlzaGVkTGluayk7CiAJc3hhY3QtPmZsYWdzID0gMDsKQEAgLTE4MTQs NyArMTgyMywxNyBAQCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlvblNuYXBzaG90SW50KFNu YXBzaG90IHNuYXBzaG90LAogCQl7CiAJCQlvdGhlcnN4YWN0ID0gZGxpc3RfY29udGFpbmVy KFNFUklBTElaQUJMRVhBQ1QsIHhhY3RMaW5rLCBpdGVyLmN1cik7CiAKLQkJCWlmICghU3hh Y3RJc0NvbW1pdHRlZChvdGhlcnN4YWN0KQorCQkJLyoKKwkJCSAqIFdlIGNhbid0IHBvc3Np Ymx5IGhhdmUgYW4gdW5zYWZlIGNvbmZsaWN0IHdpdGggYSB0cmFuc2FjdGlvbiBpbgorCQkJ ICogYW5vdGhlciBkYXRhYmFzZS4gIFRoZSBvbmx5IHBvc3NpYmxlIG92ZXJsYXAgaXMgb24g c2hhcmVkCisJCQkgKiBjYXRhbG9ncywgYnV0IHdlIGRvbid0IHN1cHBvcnQgU1NJIGZvciBz aGFyZWQgY2F0YWxvZ3MuICBUaGUKKwkJCSAqIGludmFsaWQgZGF0YWJhc2UgY2FzZSBjb3Zl cnMgMlBDLCBiZWNhdXNlIHdlIGRvbid0IHlldCByZWNvcmQKKwkJCSAqIGRhdGFiYXNlIE9J RHMgaW4gdGhlIDJQQyBpbmZvcm1hdGlvbi4gIFdlIGFsc28gZmlsdGVyIG91dCBkb29tZWQK KwkJCSAqIHRyYW5zYWN0aW9ucyBhcyB0aGV5IGNhbid0IHBvc3NpYmx5IGNvbW1pdC4KKwkJ CSAqLworCQkJaWYgKChvdGhlcnN4YWN0LT5kYXRhYmFzZSA9PSBJbnZhbGlkT2lkIHx8CisJ CQkJIG90aGVyc3hhY3QtPmRhdGFiYXNlID09IE15RGF0YWJhc2VJZCkKKwkJCQkmJiAhU3hh Y3RJc0NvbW1pdHRlZChvdGhlcnN4YWN0KQogCQkJCSYmICFTeGFjdElzRG9vbWVkKG90aGVy c3hhY3QpCiAJCQkJJiYgIVN4YWN0SXNSZWFkT25seShvdGhlcnN4YWN0KSkKIAkJCXsKQEAg LTE4MjQsOSArMTg0Myw5IEBAIEdldFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9uU25hcHNob3RJ bnQoU25hcHNob3Qgc25hcHNob3QsCiAKIAkJLyoKIAkJICogSWYgd2UgZGlkbid0IGZpbmQg YW55IHBvc3NpYmx5IHVuc2FmZSBjb25mbGljdHMgYmVjYXVzZSBldmVyeQotCQkgKiB1bmNv bW1pdHRlZCB3cml0YWJsZSB0cmFuc2FjdGlvbiB0dXJuZWQgb3V0IHRvIGJlIGRvb21lZCwg dGhlbiB3ZQotCQkgKiBjYW4gIm9wdCBvdXQiIGltbWVkaWF0ZWx5LiAgU2VlIGNvbW1lbnRz IGFib3ZlIHRoZSBlYXJsaWVyIGNoZWNrCi0JCSAqIGZvciBQcmVkWGFjdC0+V3JpdGFibGVT eGFjdENvdW50ID09IDAuCisJCSAqIHVuY29tbWl0dGVkIHdyaXRhYmxlIHRyYW5zYWN0aW9u IHR1cm5lZCBvdXQgdG8gYmUgZG9vbWVkIG9yIGluCisJCSAqIGFub3RoZXIgZGF0YWJhc2Us IHRoZW4gd2UgY2FuICJvcHQgb3V0IiBpbW1lZGlhdGVseS4gIFNlZSBjb21tZW50cworCQkg KiBhYm92ZSB0aGUgZWFybGllciBjaGVjayBmb3IgUHJlZFhhY3QtPldyaXRhYmxlU3hhY3RD b3VudCA9PSAwLgogCQkgKi8KIAkJaWYgKGRsaXN0X2lzX2VtcHR5KCZzeGFjdC0+cG9zc2li bGVVbnNhZmVDb25mbGljdHMpKQogCQl7CkBAIC00ODc1LDYgKzQ4OTQsNyBAQCBwcmVkaWNh dGVsb2NrX3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZv LAogCQlzeGFjdC0+dnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSAoTG9jYWxUcmFuc2FjdGlv bklkKSB4aWQ7CiAJCXN4YWN0LT5waWQgPSAwOwogCQlzeGFjdC0+cGdwcm9jbm8gPSBJTlZB TElEX1BHUFJPQ05POworCQlzeGFjdC0+ZGF0YWJhc2UgPSBJbnZhbGlkT2lkOwogCiAJCS8q IGEgcHJlcGFyZWQgeGFjdCBoYXNuJ3QgY29tbWl0dGVkIHlldCAqLwogCQlzeGFjdC0+cHJl cGFyZVNlcU5vID0gUmVjb3ZlcnlTZXJDb21taXRTZXFObzsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlX2ludGVybmFscy5oIGIvc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmgKaW5kZXggOTNmODQ1MDBiZi4uODk2MDI2YWJk ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxz LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmgKQEAg LTExNiw2ICsxMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBTRVJJQUxJWkFCTEVYQUNUCiAJdWlu dDMyCQlmbGFnczsJCQkvKiBPUidkIGNvbWJpbmF0aW9uIG9mIHZhbHVlcyBkZWZpbmVkIGJl bG93ICovCiAJaW50CQkJcGlkOwkJCS8qIHBpZCBvZiBhc3NvY2lhdGVkIHByb2Nlc3MgKi8K IAlpbnQJCQlwZ3Byb2NubzsJCS8qIHBncHJvY25vIG9mIGFzc29jaWF0ZWQgcHJvY2VzcyAq LworCU9pZAkJCWRhdGFiYXNlOwkJLyogd2hpY2ggZGF0YWJhc2UgaXMgdGhpcyB0cmFuc2Fj dGlvbiBpbj8gKi8KIH0gU0VSSUFMSVpBQkxFWEFDVDsKIAogI2RlZmluZSBTWEFDVF9GTEFH X0NPTU1JVFRFRAkJCTB4MDAwMDAwMDEJLyogYWxyZWFkeSBjb21taXR0ZWQgKi8KLS0gCjIu MzAuMgoK --------------L2AEzO22NZcHHMrgn6MDNsQ0 Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-Fix-typos-and-reword-comment.patch" Content-Disposition: attachment; filename="v2-0002-Fix-typos-and-reword-comment.patch" Content-Transfer-Encoding: base64 RnJvbSBmMWMxNDFjZmZlNzUxYTM2YTAxYTkxZjljMWEwMjJiODYzZjUyZGFkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMTAgSnVsIDIwMjMgMTE6NDU6MjcgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDIvM10gRml4IHR5cG9zIGFuZCByZXdvcmQgY29tbWVudC4K Ci0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIHwgMTIgKysrKysr LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA1ZTYyMDI3Mjg0 Li5mYTA1YzgwMWI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJl ZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBA IC00OTAsMTIgKzQ5MCwxMiBAQCBzdGF0aWMgdm9pZCBSZWxlYXNlUHJlZGljYXRlTG9ja3NM b2NhbCh2b2lkKTsKICAqIERvZXMgdGhpcyByZWxhdGlvbiBwYXJ0aWNpcGF0ZSBpbiBwcmVk aWNhdGUgbG9ja2luZz8gVGVtcG9yYXJ5IGFuZCBzeXN0ZW0KICAqIHJlbGF0aW9ucyBhcmUg ZXhlbXB0LgogICoKLSAqIE5vdGUgdGhhdCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlvblNu YXBzaG90SW50KCkgcmVsaWVzIG9uIHRoZSBsYXR0ZXIKLSAqIGV4ZW1wdGlvbiB3aGVuIGNv bnNpZGVyaW5nIHNlcGFyYXRlIGRhdGFiYXNlcyB0byBiZSBmdWxseSBwYXJ0aXRpb25lZCBm cm9tCi0gKiBlYWNoIG90aGVyIGZvciB0aGUgcHVycG9zZXMgb2YgdGhlIHNhZmUgc25hcHNo b3Qgb3B0aW1pemF0aW9uLiAgSWYgU1NJIGlzCi0gKiBldmVyIGFwcGxpZWQgdG8gc3lzdGVt IGNhdGFsb2dzLCBhbmQgaW4gcGFydGljdWxhciBzaGFyZWQgY2F0YWxvZ3MsCi0gKiBkYXRh YmFzZXMgd291bGQgbm90IG5vIGxvbmdlciBiZSBzdWZmaWNpZW50bHkgaXNvbGF0ZWQgYW5k IHRoYXQgd291bGQgbmVlZAotICogdG8gYmUgcmVjb25zZGVyZWQuCisgKiBOb3RlIHRoYXQg R2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludCgpIHJlbGllcyBvbiBzeXN0 ZW0KKyAqIHJlbGF0aW9ucyB0byBiZSBleGVtcHQuICBJdCBhc3N1bWVzIHNlcGFyYXRlIGRh dGFiYXNlcyB0byBiZSBmdWxseQorICogcGFydGl0aW9uZWQgZnJvbSBlYWNoIG90aGVyIGZv ciB0aGUgcHVycG9zZXMgb2YgdGhlIHNhZmUgc25hcHNob3QKKyAqIG9wdGltaXphdGlvbi4g IElmIFNTSSBpcyBldmVyIGFwcGxpZWQgdG8gc3lzdGVtIGNhdGFsb2dzLCBhbmQgaW4KKyAq IHBhcnRpY3VsYXIgdG8gc2hhcmVkIHN5c3RlbSBjYXRhbG9ncywgZGF0YWJhc2VzIHdvdWxk IG5vIGxvbmdlciBiZQorICogc3VmZmljaWVudGx5IGlzb2xhdGVkIGFuZCB0aGF0IHdvdWxk IG5lZWQgdG8gYmUgcmVjb25zaWRlcmVkLgogICovCiBzdGF0aWMgaW5saW5lIGJvb2wKIFBy ZWRpY2F0ZUxvY2tpbmdOZWVkZWRGb3JSZWxhdGlvbihSZWxhdGlvbiByZWxhdGlvbikKLS0g CjIuMzAuMgoK --------------L2AEzO22NZcHHMrgn6MDNsQ0 Content-Type: text/x-patch; charset=UTF-8; name="v2-0003-Set-databaseid-when-recovering-an-prepared-SSI-tr.patch" Content-Disposition: attachment; filename*0="v2-0003-Set-databaseid-when-recovering-an-prepared-SSI-tr.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMTVkZGI0ODU3MWRhZTFhZTIzMTZiZjMzNzg1Njg1MDUzYjYzYjVjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IE1vbiwgMTAgSnVsIDIwMjMgMTI6MDI6NDQgKzAzMDAK U3ViamVjdDogW1BBVENIIHYyIDMvM10gU2V0IGRhdGFiYXNlaWQgd2hlbiByZWNvdmVyaW5n IGFuIHByZXBhcmVkIFNTSQogdHJhbnNhY3Rpb24uCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL211bHRpeGFjdC5jICAgICAgIHwgIDggKysrKy0tLS0KIHNyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCiBz cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jICAgICAgICAgICAgICB8IDEwICsrKysr LS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAgIHwg MTQgKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9y ZWxhdGlvbi5jIHwgIDQgKystLQogc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oICAg ICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZV9y bWdyLmggICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL3Bnc3RhdC5oICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIDQgKystLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgg ICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9w cmVkaWNhdGUuaCAgICAgICAgICAgICAgfCAgMiArLQogMTAgZmlsZXMgY2hhbmdlZCwgMzQg aW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS9tdWx0aXhhY3QuYwppbmRleCBhYmIwMjJlMDY3Li5hYzgxYjc0YjFmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTc3Niw3ICsxNzc2LDcg QEAgUG9zdFByZXBhcmVfTXVsdGlYYWN0KFRyYW5zYWN0aW9uSWQgeGlkKQogICoJCVJlY292 ZXIgdGhlIHN0YXRlIG9mIGEgcHJlcGFyZWQgdHJhbnNhY3Rpb24gYXQgc3RhcnR1cAogICov CiB2b2lkCi1tdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihUcmFuc2FjdGlvbklkIHhpZCwg dWludDE2IGluZm8sCittdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihPaWQgZGF0YWJhc2Vp ZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJICAgdm9pZCAqcmVj ZGF0YSwgdWludDMyIGxlbikKIHsKIAlCYWNrZW5kSWQJZHVtbXlCYWNrZW5kSWQgPSBUd29Q aGFzZUdldER1bW15QmFja2VuZElkKHhpZCwgZmFsc2UpOwpAQCAtMTc5Nyw3ICsxNzk3LDcg QEAgbXVsdGl4YWN0X3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQx NiBpbmZvLAogICoJCVNpbWlsYXIgdG8gQXRFT1hhY3RfTXVsdGlYYWN0IGJ1dCBmb3IgQ09N TUlUIFBSRVBBUkVECiAgKi8KIHZvaWQKLW11bHRpeGFjdF90d29waGFzZV9wb3N0Y29tbWl0 KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKK211bHRpeGFjdF90d29waGFzZV9w b3N0Y29tbWl0KE9pZCBkYXRhYmFzZWlkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGlu Zm8sCiAJCQkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKQogewogCUJhY2tlbmRJ ZAlkdW1teUJhY2tlbmRJZCA9IFR3b1BoYXNlR2V0RHVtbXlCYWNrZW5kSWQoeGlkLCB0cnVl KTsKQEAgLTE4MTIsMTAgKzE4MTIsMTAgQEAgbXVsdGl4YWN0X3R3b3BoYXNlX3Bvc3Rjb21t aXQoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogICoJCVRoaXMgaXMgYWN0dWFs bHkganVzdCB0aGUgc2FtZSBhcyB0aGUgQ09NTUlUIGNhc2UuCiAgKi8KIHZvaWQKLW11bHRp eGFjdF90d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZv LAorbXVsdGl4YWN0X3R3b3BoYXNlX3Bvc3RhYm9ydChPaWQgZGF0YWJhc2VpZCwgVHJhbnNh Y3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCSB2b2lkICpyZWNkYXRhLCB1aW50 MzIgbGVuKQogewotCW11bHRpeGFjdF90d29waGFzZV9wb3N0Y29tbWl0KHhpZCwgaW5mbywg cmVjZGF0YSwgbGVuKTsKKwltdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChkYXRhYmFz ZWlkLCB4aWQsIGluZm8sIHJlY2RhdGEsIGxlbik7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwppbmRleCAwNjhlNTliZWMwLi5mYjllNGQxNmZhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90d29waGFzZS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKQEAgLTIxOSw3ICsyMTks NyBAQCBzdGF0aWMgdm9pZCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0UHJlcGFyZWQoVHJhbnNh Y3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkJICAgaW50IG5zdGF0cywKIAkJCQkJCQkJCQkgICB4 bF94YWN0X3N0YXRzX2l0ZW0gKnN0YXRzLAogCQkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmdp ZCk7Ci1zdGF0aWMgdm9pZCBQcm9jZXNzUmVjb3JkcyhjaGFyICpidWZwdHIsIFRyYW5zYWN0 aW9uSWQgeGlkLAorc3RhdGljIHZvaWQgUHJvY2Vzc1JlY29yZHMoY2hhciAqYnVmcHRyLCBP aWQgZGF0YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkgICBjb25zdCBUd29Q aGFzZUNhbGxiYWNrIGNhbGxiYWNrc1tdKTsKIHN0YXRpYyB2b2lkIFJlbW92ZUdYYWN0KEds b2JhbFRyYW5zYWN0aW9uIGd4YWN0KTsKIApAQCAtMTYyOCw5ICsxNjI4LDkgQEAgRmluaXNo UHJlcGFyZWRUcmFuc2FjdGlvbihjb25zdCBjaGFyICpnaWQsIGJvb2wgaXNDb21taXQpCiAK IAkvKiBBbmQgbm93IGRvIHRoZSBjYWxsYmFja3MgKi8KIAlpZiAoaXNDb21taXQpCi0JCVBy b2Nlc3NSZWNvcmRzKGJ1ZnB0ciwgeGlkLCB0d29waGFzZV9wb3N0Y29tbWl0X2NhbGxiYWNr cyk7CisJCVByb2Nlc3NSZWNvcmRzKGJ1ZnB0ciwgaGRyLT5kYXRhYmFzZSwgeGlkLCB0d29w aGFzZV9wb3N0Y29tbWl0X2NhbGxiYWNrcyk7CiAJZWxzZQotCQlQcm9jZXNzUmVjb3Jkcyhi dWZwdHIsIHhpZCwgdHdvcGhhc2VfcG9zdGFib3J0X2NhbGxiYWNrcyk7CisJCVByb2Nlc3NS ZWNvcmRzKGJ1ZnB0ciwgaGRyLT5kYXRhYmFzZSwgeGlkLCB0d29waGFzZV9wb3N0YWJvcnRf Y2FsbGJhY2tzKTsKIAogCVByZWRpY2F0ZUxvY2tUd29QaGFzZUZpbmlzaCh4aWQsIGlzQ29t bWl0KTsKIApAQCAtMTY2Myw3ICsxNjYzLDcgQEAgRmluaXNoUHJlcGFyZWRUcmFuc2FjdGlv bihjb25zdCBjaGFyICpnaWQsIGJvb2wgaXNDb21taXQpCiAgKiBTY2FuIDJQQyBzdGF0ZSBk YXRhIGluIG1lbW9yeSBhbmQgY2FsbCB0aGUgaW5kaWNhdGVkIGNhbGxiYWNrcyBmb3IgZWFj aCAyUEMgcmVjb3JkLgogICovCiBzdGF0aWMgdm9pZAotUHJvY2Vzc1JlY29yZHMoY2hhciAq YnVmcHRyLCBUcmFuc2FjdGlvbklkIHhpZCwKK1Byb2Nlc3NSZWNvcmRzKGNoYXIgKmJ1ZnB0 ciwgT2lkIGRhdGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJICAgY29uc3QgVHdv UGhhc2VDYWxsYmFjayBjYWxsYmFja3NbXSkKIHsKIAlmb3IgKDs7KQpAQCAtMTY3Nyw3ICsx Njc3LDcgQEAgUHJvY2Vzc1JlY29yZHMoY2hhciAqYnVmcHRyLCBUcmFuc2FjdGlvbklkIHhp ZCwKIAkJYnVmcHRyICs9IE1BWEFMSUdOKHNpemVvZihUd29QaGFzZVJlY29yZE9uRGlzaykp OwogCiAJCWlmIChjYWxsYmFja3NbcmVjb3JkLT5ybWlkXSAhPSBOVUxMKQotCQkJY2FsbGJh Y2tzW3JlY29yZC0+cm1pZF0gKHhpZCwgcmVjb3JkLT5pbmZvLAorCQkJY2FsbGJhY2tzW3Jl Y29yZC0+cm1pZF0gKGRhdGFiYXNlaWQsIHhpZCwgcmVjb3JkLT5pbmZvLAogCQkJCQkJCQkJ ICh2b2lkICopIGJ1ZnB0ciwgcmVjb3JkLT5sZW4pOwogCiAJCWJ1ZnB0ciArPSBNQVhBTElH TihyZWNvcmQtPmxlbik7CkBAIC0yMTIzLDcgKzIxMjMsNyBAQCBSZWNvdmVyUHJlcGFyZWRU cmFuc2FjdGlvbnModm9pZCkKIAkJLyoKIAkJICogUmVjb3ZlciBvdGhlciBzdGF0ZSAobm90 YWJseSBsb2NrcykgdXNpbmcgcmVzb3VyY2UgbWFuYWdlcnMuCiAJCSAqLwotCQlQcm9jZXNz UmVjb3JkcyhidWZwdHIsIHhpZCwgdHdvcGhhc2VfcmVjb3Zlcl9jYWxsYmFja3MpOworCQlQ cm9jZXNzUmVjb3JkcyhidWZwdHIsIGhkci0+ZGF0YWJhc2UsIHhpZCwgdHdvcGhhc2VfcmVj b3Zlcl9jYWxsYmFja3MpOwogCiAJCS8qCiAJCSAqIFJlbGVhc2UgbG9ja3MgaGVsZCBieSB0 aGUgc3RhbmRieSBwcm9jZXNzIGFmdGVyIHdlIHByb2Nlc3MgZWFjaApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sb2NrLmMKaW5kZXggZjU5NWJjZTMxYi4uODlmNzRlYmVlMSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvbG9jay5jCkBAIC00MTIyLDcgKzQxMjIsNyBAQCBEdW1wQWxsTG9ja3Modm9p ZCkKICAqIGFuZCBQQU5JQyBhbnl3YXkuCiAgKi8KIHZvaWQKLWxvY2tfdHdvcGhhc2VfcmVj b3ZlcihUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCitsb2NrX3R3b3BoYXNlX3Jl Y292ZXIoT2lkIGRhdGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywK IAkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKQogewogCVR3b1BoYXNlTG9ja1Jl Y29yZCAqcmVjID0gKFR3b1BoYXNlTG9ja1JlY29yZCAqKSByZWNkYXRhOwpAQCAtNDMwMyw3 ICs0MzAzLDcgQEAgbG9ja190d29waGFzZV9yZWNvdmVyKFRyYW5zYWN0aW9uSWQgeGlkLCB1 aW50MTYgaW5mbywKICAqIHN0YXJ0aW5nIHVwIGludG8gaG90IHN0YW5kYnkgbW9kZS4KICAq Lwogdm9pZAotbG9ja190d29waGFzZV9zdGFuZGJ5X3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4 aWQsIHVpbnQxNiBpbmZvLAorbG9ja190d29waGFzZV9zdGFuZGJ5X3JlY292ZXIoT2lkIGRh dGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkgIHZv aWQgKnJlY2RhdGEsIHVpbnQzMiBsZW4pCiB7CiAJVHdvUGhhc2VMb2NrUmVjb3JkICpyZWMg PSAoVHdvUGhhc2VMb2NrUmVjb3JkICopIHJlY2RhdGE7CkBAIC00MzM1LDcgKzQzMzUsNyBA QCBsb2NrX3R3b3BoYXNlX3N0YW5kYnlfcmVjb3ZlcihUcmFuc2FjdGlvbklkIHhpZCwgdWlu dDE2IGluZm8sCiAgKiBGaW5kIGFuZCByZWxlYXNlIHRoZSBsb2NrIGluZGljYXRlZCBieSB0 aGUgMlBDIHJlY29yZC4KICAqLwogdm9pZAotbG9ja190d29waGFzZV9wb3N0Y29tbWl0KFRy YW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKK2xvY2tfdHdvcGhhc2VfcG9zdGNvbW1p dChPaWQgZGF0YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJ CQkJIHZvaWQgKnJlY2RhdGEsIHVpbnQzMiBsZW4pCiB7CiAJVHdvUGhhc2VMb2NrUmVjb3Jk ICpyZWMgPSAoVHdvUGhhc2VMb2NrUmVjb3JkICopIHJlY2RhdGE7CkBAIC00MzYxLDEwICs0 MzYxLDEwIEBAIGxvY2tfdHdvcGhhc2VfcG9zdGNvbW1pdChUcmFuc2FjdGlvbklkIHhpZCwg dWludDE2IGluZm8sCiAgKiBUaGlzIGlzIGFjdHVhbGx5IGp1c3QgdGhlIHNhbWUgYXMgdGhl IENPTU1JVCBjYXNlLgogICovCiB2b2lkCi1sb2NrX3R3b3BoYXNlX3Bvc3RhYm9ydChUcmFu c2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCitsb2NrX3R3b3BoYXNlX3Bvc3RhYm9ydChP aWQgZGF0YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJ dm9pZCAqcmVjZGF0YSwgdWludDMyIGxlbikKIHsKLQlsb2NrX3R3b3BoYXNlX3Bvc3Rjb21t aXQoeGlkLCBpbmZvLCByZWNkYXRhLCBsZW4pOworCWxvY2tfdHdvcGhhc2VfcG9zdGNvbW1p dChkYXRhYmFzZWlkLCB4aWQsIGluZm8sIHJlY2RhdGEsIGxlbik7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFj a2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggZmEwNWM4MDFiNC4uZWRmYTBl MDVmYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTgyNiwx MyArMTgyNiwxMSBAQCBHZXRTZXJpYWxpemFibGVUcmFuc2FjdGlvblNuYXBzaG90SW50KFNu YXBzaG90IHNuYXBzaG90LAogCQkJLyoKIAkJCSAqIFdlIGNhbid0IHBvc3NpYmx5IGhhdmUg YW4gdW5zYWZlIGNvbmZsaWN0IHdpdGggYSB0cmFuc2FjdGlvbiBpbgogCQkJICogYW5vdGhl ciBkYXRhYmFzZS4gIFRoZSBvbmx5IHBvc3NpYmxlIG92ZXJsYXAgaXMgb24gc2hhcmVkCi0J CQkgKiBjYXRhbG9ncywgYnV0IHdlIGRvbid0IHN1cHBvcnQgU1NJIGZvciBzaGFyZWQgY2F0 YWxvZ3MuICBUaGUKLQkJCSAqIGludmFsaWQgZGF0YWJhc2UgY2FzZSBjb3ZlcnMgMlBDLCBi ZWNhdXNlIHdlIGRvbid0IHlldCByZWNvcmQKLQkJCSAqIGRhdGFiYXNlIE9JRHMgaW4gdGhl IDJQQyBpbmZvcm1hdGlvbi4gIFdlIGFsc28gZmlsdGVyIG91dCBkb29tZWQKLQkJCSAqIHRy YW5zYWN0aW9ucyBhcyB0aGV5IGNhbid0IHBvc3NpYmx5IGNvbW1pdC4KKwkJCSAqIGNhdGFs b2dzLCBidXQgd2UgZG9uJ3Qgc3VwcG9ydCBTU0kgZm9yIHNoYXJlZCBjYXRhbG9ncy4gIFdl CisJCQkgKiBhbHNvIGZpbHRlciBvdXQgZG9vbWVkIHRyYW5zYWN0aW9ucyBhcyB0aGV5IGNh bid0IHBvc3NpYmx5CisJCQkgKiBjb21taXQuCiAJCQkgKi8KLQkJCWlmICgob3RoZXJzeGFj dC0+ZGF0YWJhc2UgPT0gSW52YWxpZE9pZCB8fAotCQkJCSBvdGhlcnN4YWN0LT5kYXRhYmFz ZSA9PSBNeURhdGFiYXNlSWQpCisJCQlpZiAob3RoZXJzeGFjdC0+ZGF0YWJhc2UgPT0gTXlE YXRhYmFzZUlkCiAJCQkJJiYgIVN4YWN0SXNDb21taXR0ZWQob3RoZXJzeGFjdCkKIAkJCQkm JiAhU3hhY3RJc0Rvb21lZChvdGhlcnN4YWN0KQogCQkJCSYmICFTeGFjdElzUmVhZE9ubHko b3RoZXJzeGFjdCkpCkBAIC00ODU5LDcgKzQ4NTcsNyBAQCBQcmVkaWNhdGVMb2NrVHdvUGhh c2VGaW5pc2goVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNDb21taXQpCiAgKiBSZS1hY3F1 aXJlIGEgcHJlZGljYXRlIGxvY2sgYmVsb25naW5nIHRvIGEgdHJhbnNhY3Rpb24gdGhhdCB3 YXMgcHJlcGFyZWQuCiAgKi8KIHZvaWQKLXByZWRpY2F0ZWxvY2tfdHdvcGhhc2VfcmVjb3Zl cihUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCitwcmVkaWNhdGVsb2NrX3R3b3Bo YXNlX3JlY292ZXIoT2lkIGRhdGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYg aW5mbywKIAkJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKQogewogCVR3b1Bo YXNlUHJlZGljYXRlUmVjb3JkICpyZWNvcmQ7CkBAIC00ODk0LDcgKzQ4OTIsNyBAQCBwcmVk aWNhdGVsb2NrX3R3b3BoYXNlX3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBp bmZvLAogCQlzeGFjdC0+dnhpZC5sb2NhbFRyYW5zYWN0aW9uSWQgPSAoTG9jYWxUcmFuc2Fj dGlvbklkKSB4aWQ7CiAJCXN4YWN0LT5waWQgPSAwOwogCQlzeGFjdC0+cGdwcm9jbm8gPSBJ TlZBTElEX1BHUFJPQ05POwotCQlzeGFjdC0+ZGF0YWJhc2UgPSBJbnZhbGlkT2lkOworCQlz eGFjdC0+ZGF0YWJhc2UgPSBkYXRhYmFzZWlkOwogCiAJCS8qIGEgcHJlcGFyZWQgeGFjdCBo YXNuJ3QgY29tbWl0dGVkIHlldCAqLwogCQlzeGFjdC0+cHJlcGFyZVNlcU5vID0gUmVjb3Zl cnlTZXJDb21taXRTZXFObzsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2 aXR5L3Bnc3RhdF9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X3JlbGF0aW9uLmMKaW5kZXggOTg3NmUwYzFlOC4uODc2NzAzMThlZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMKQEAgLTY5OSw3 ICs2OTksNyBAQCBQb3N0UHJlcGFyZV9QZ1N0YXRfUmVsYXRpb25zKFBnU3RhdF9TdWJYYWN0 U3RhdHVzICp4YWN0X3N0YXRlKQogICogTG9hZCB0aGUgc2F2ZWQgY291bnRzIGludG8gb3Vy IGxvY2FsIHBnc3RhdHMgc3RhdGUuCiAgKi8KIHZvaWQKLXBnc3RhdF90d29waGFzZV9wb3N0 Y29tbWl0KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKK3Bnc3RhdF90d29waGFz ZV9wb3N0Y29tbWl0KE9pZCBkYXRhYmFzZWlkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2 IGluZm8sCiAJCQkJCQkgICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKQogewogCVR3b1Bo YXNlUGdTdGF0UmVjb3JkICpyZWMgPSAoVHdvUGhhc2VQZ1N0YXRSZWNvcmQgKikgcmVjZGF0 YTsKQEAgLTczNSw3ICs3MzUsNyBAQCBwZ3N0YXRfdHdvcGhhc2VfcG9zdGNvbW1pdChUcmFu c2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCiAgKiBhcyBhYm9ydGVkLgogICovCiB2b2lk Ci1wZ3N0YXRfdHdvcGhhc2VfcG9zdGFib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYg aW5mbywKK3Bnc3RhdF90d29waGFzZV9wb3N0YWJvcnQoT2lkIGRhdGFiYXNlaWQsIFRyYW5z YWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCSAgdm9pZCAqcmVjZGF0YSwgdWlu dDMyIGxlbikKIHsKIAlUd29QaGFzZVBnU3RhdFJlY29yZCAqcmVjID0gKFR3b1BoYXNlUGdT dGF0UmVjb3JkICopIHJlY2RhdGE7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv bXVsdGl4YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvbXVsdGl4YWN0LmgKaW5kZXggMjQ2 Zjc1N2Y2YS4uMzQ2NDZkMTViNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL211 bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApAQCAtMTQ5 LDExICsxNDksMTEgQEAgZXh0ZXJuIHZvaWQgTXVsdGlYYWN0QWR2YW5jZU5leHRNWGFjdChN dWx0aVhhY3RJZCBtaW5NdWx0aSwKIGV4dGVybiB2b2lkIE11bHRpWGFjdEFkdmFuY2VPbGRl c3QoTXVsdGlYYWN0SWQgb2xkZXN0TXVsdGksIE9pZCBvbGRlc3RNdWx0aURCKTsKIGV4dGVy biBpbnQJTXVsdGlYYWN0TWVtYmVyRnJlZXplVGhyZXNob2xkKHZvaWQpOwogCi1leHRlcm4g dm9pZCBtdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihUcmFuc2FjdGlvbklkIHhpZCwgdWlu dDE2IGluZm8sCitleHRlcm4gdm9pZCBtdWx0aXhhY3RfdHdvcGhhc2VfcmVjb3ZlcihPaWQg ZGF0YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJ ICAgdm9pZCAqcmVjZGF0YSwgdWludDMyIGxlbik7Ci1leHRlcm4gdm9pZCBtdWx0aXhhY3Rf dHdvcGhhc2VfcG9zdGNvbW1pdChUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCitl eHRlcm4gdm9pZCBtdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGNvbW1pdChPaWQgZGF0YWJhc2Vp ZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJCSAgdm9pZCAq cmVjZGF0YSwgdWludDMyIGxlbik7Ci1leHRlcm4gdm9pZCBtdWx0aXhhY3RfdHdvcGhhc2Vf cG9zdGFib3J0KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKK2V4dGVybiB2b2lk IG11bHRpeGFjdF90d29waGFzZV9wb3N0YWJvcnQoT2lkIGRhdGFiYXNlaWQsIFRyYW5zYWN0 aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkJCQkgdm9pZCAqcmVjZGF0YSwgdWlu dDMyIGxlbik7CiAKIGV4dGVybiB2b2lkIG11bHRpeGFjdF9yZWRvKFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29waGFzZV9y bWdyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2Vfcm1nci5oCmluZGV4IDAyZjdi YTI4NzIuLjc1MTI4NGI2MTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90d29w aGFzZV9ybWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlX3JtZ3IuaApA QCAtMTQsNyArMTQsNyBAQAogI2lmbmRlZiBUV09QSEFTRV9STUdSX0gKICNkZWZpbmUgVFdP UEhBU0VfUk1HUl9ICiAKLXR5cGVkZWYgdm9pZCAoKlR3b1BoYXNlQ2FsbGJhY2spIChUcmFu c2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCit0eXBlZGVmIHZvaWQgKCpUd29QaGFzZUNh bGxiYWNrKSAoT2lkIGRhdGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5m bywKIAkJCQkJCQkJICB2b2lkICpyZWNkYXRhLCB1aW50MzIgbGVuKTsKIHR5cGVkZWYgdWlu dDggVHdvUGhhc2VSbWdySWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5o IGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggNTdhMmMwODY2YS4uZjFhOWZjOGRjYyAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdzdGF0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGdz dGF0LmgKQEAgLTY0Nyw5ICs2NDcsOSBAQCBleHRlcm4gdm9pZCBwZ3N0YXRfY291bnRfaGVh cF9kZWxldGUoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9jb3VudF90cnVu Y2F0ZShSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3VwZGF0ZV9oZWFwX2Rl YWRfdHVwbGVzKFJlbGF0aW9uIHJlbCwgaW50IGRlbHRhKTsKIAotZXh0ZXJuIHZvaWQgcGdz dGF0X3R3b3BoYXNlX3Bvc3Rjb21taXQoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZv LAorZXh0ZXJuIHZvaWQgcGdzdGF0X3R3b3BoYXNlX3Bvc3Rjb21taXQoT2lkIGRhdGFiYXNl aWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkJCSAgIHZvaWQg KnJlY2RhdGEsIHVpbnQzMiBsZW4pOwotZXh0ZXJuIHZvaWQgcGdzdGF0X3R3b3BoYXNlX3Bv c3RhYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IGluZm8sCitleHRlcm4gdm9pZCBw Z3N0YXRfdHdvcGhhc2VfcG9zdGFib3J0KE9pZCBkYXRhYmFzZWlkLCBUcmFuc2FjdGlvbklk IHhpZCwgdWludDE2IGluZm8sCiAJCQkJCQkJCQkgIHZvaWQgKnJlY2RhdGEsIHVpbnQzMiBs ZW4pOwogCiBleHRlcm4gUGdTdGF0X1N0YXRUYWJFbnRyeSAqcGdzdGF0X2ZldGNoX3N0YXRf dGFiZW50cnkoT2lkIHJlbGlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG9jay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKaW5kZXggODU3NWJlYTI1Yy4u OTUzNjA5YjM3ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysr IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKQEAgLTU5MSwxMyArNTkxLDEzIEBAIGV4 dGVybiBCbG9ja2VkUHJvY3NEYXRhICpHZXRCbG9ja2VyU3RhdHVzRGF0YShpbnQgYmxvY2tl ZF9waWQpOwogZXh0ZXJuIHhsX3N0YW5kYnlfbG9jayAqR2V0UnVubmluZ1RyYW5zYWN0aW9u TG9ja3MoaW50ICpubG9ja3MpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKkdldExvY2ttb2RlTmFt ZShMT0NLTUVUSE9ESUQgbG9ja21ldGhvZGlkLCBMT0NLTU9ERSBtb2RlKTsKIAotZXh0ZXJu IHZvaWQgbG9ja190d29waGFzZV9yZWNvdmVyKFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYg aW5mbywKK2V4dGVybiB2b2lkIGxvY2tfdHdvcGhhc2VfcmVjb3ZlcihPaWQgZGF0YWJhc2Vp ZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkgIHZvaWQgKnJl Y2RhdGEsIHVpbnQzMiBsZW4pOwotZXh0ZXJuIHZvaWQgbG9ja190d29waGFzZV9wb3N0Y29t bWl0KFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKK2V4dGVybiB2b2lkIGxvY2tf dHdvcGhhc2VfcG9zdGNvbW1pdChPaWQgZGF0YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQs IHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJIHZvaWQgKnJlY2RhdGEsIHVpbnQzMiBsZW4pOwot ZXh0ZXJuIHZvaWQgbG9ja190d29waGFzZV9wb3N0YWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQs IHVpbnQxNiBpbmZvLAorZXh0ZXJuIHZvaWQgbG9ja190d29waGFzZV9wb3N0YWJvcnQoT2lk IGRhdGFiYXNlaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkJ CXZvaWQgKnJlY2RhdGEsIHVpbnQzMiBsZW4pOwotZXh0ZXJuIHZvaWQgbG9ja190d29waGFz ZV9zdGFuZGJ5X3JlY292ZXIoVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAorZXh0 ZXJuIHZvaWQgbG9ja190d29waGFzZV9zdGFuZGJ5X3JlY292ZXIoT2lkIGRhdGFiYXNlaWQs IFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5mbywKIAkJCQkJCQkJCQkgIHZvaWQgKnJl Y2RhdGEsIHVpbnQzMiBsZW4pOwogCiBleHRlcm4gRGVhZExvY2tTdGF0ZSBEZWFkTG9ja0No ZWNrKFBHUFJPQyAqcHJvYyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3By ZWRpY2F0ZS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaAppbmRleCBjZDQ4 YWZhMTdiLi42YTQyMGEwMzVjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3By ZWRpY2F0ZS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKQEAgLTc3 LDcgKzc3LDcgQEAgZXh0ZXJuIHZvaWQgUHJlQ29tbWl0X0NoZWNrRm9yU2VyaWFsaXphdGlv bkZhaWx1cmUodm9pZCk7CiBleHRlcm4gdm9pZCBBdFByZXBhcmVfUHJlZGljYXRlTG9ja3Mo dm9pZCk7CiBleHRlcm4gdm9pZCBQb3N0UHJlcGFyZV9QcmVkaWNhdGVMb2NrcyhUcmFuc2Fj dGlvbklkIHhpZCk7CiBleHRlcm4gdm9pZCBQcmVkaWNhdGVMb2NrVHdvUGhhc2VGaW5pc2go VHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgaXNDb21taXQpOwotZXh0ZXJuIHZvaWQgcHJlZGlj YXRlbG9ja190d29waGFzZV9yZWNvdmVyKFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgaW5m bywKK2V4dGVybiB2b2lkIHByZWRpY2F0ZWxvY2tfdHdvcGhhc2VfcmVjb3ZlcihPaWQgZGF0 YWJhc2VpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBpbmZvLAogCQkJCQkJCQkJCSAg IHZvaWQgKnJlY2RhdGEsIHVpbnQzMiBsZW4pOwogCiAvKiBwYXJhbGxlbCBxdWVyeSBzdXBw b3J0ICovCi0tIAoyLjMwLjIKCg== --------------L2AEzO22NZcHHMrgn6MDNsQ0--