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.98.2) (envelope-from ) id 1xCRai-00000003nYw-3gTd for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Oct 2026 00:57:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1xCRah-00000009XIh-2XOa for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Oct 2026 00:57:35 +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.98.2) (envelope-from ) id 1xCRah-00000009XIY-0Kpu for pgsql-hackers@lists.postgresql.org; Fri, 02 Oct 2026 00:57:35 +0000 Received: from mail-ua2-x0d.google.com ([2a00:1450:4864:39::d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1xCRaf-00000002HTD-0GBt for pgsql-hackers@lists.postgresql.org; Fri, 02 Oct 2026 00:57:34 +0000 Received: by mail-ua2-x0d.google.com with SMTP id a1e0cc1a2514c-98a9ff6afafso19772241.1 for ; Thu, 01 Oct 2026 17:57:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790902652; x=1791507452; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=2yqcIsXhFlG6uYVYON1Y4aRHrYZ1yr7MQjQhiVQxvzg=; b=KDqvrkpmLf4Qnf2rQPkQCZwLlrC1tNEV6sRchwcaeyRd8Q+JT1yResNQRenqaF+Kfl vqls5INuvoh0hxpJBIaWdtHueWQbwttZDG1cq+PcUbxSyRePHSSeRZdQxEP8/7qa+vQH p5+rFeu3+Q2Z0cvp5aX6JZAezYPNbMJokwn3IxmxOpvIQXj5YH9t7ltNlCrWWMe7lEYa l+1wdmyHZHDKXDxCIlWfu+FdVYL/1Av8+z2hFgCabsAebNwmYWnTaUaKMO8QXYPtjetv 3XcN27NliFW2MeBCM0XX7gl6IuDARCLus8vCdV4YjQ9m7dh+w4WePolapFnp1v7hmNla PKPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790902652; x=1791507452; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=2yqcIsXhFlG6uYVYON1Y4aRHrYZ1yr7MQjQhiVQxvzg=; b=XRUGfb/68tJwjuI1X7iBrYK/jyQAMLlpGh2auHM07KioHlilPxG2FNV8/pv+p97tqs Tp4v5VZxv5MlGUvJT5T9ZGSwDcXttohcqgtEgXMUbbEXxU6/gcWVm0AxM7SryamHCSfY c5skrk6NtMCrPzGmA+FT/5MQJUv7FCFTHKb0ulNCTgPpjB/eykmc9felxygisE0WIWsB phdk0h0usQu4beFKcrl8a7690IOqxAsbmheQ7b/9TAFlK94Xi2UQilcsxqnD2yQPLY7F rI9eyBd1YpxvDr4BCrGWtfxsgCuMVcg6jU4tZ8ZwHA6io7zFxibR3Z+vTEpMBSs59LyU QrNg== X-Gm-Message-State: AFq9FYLYKtd9Q0FYoUMapQcnTid8m9bD5VQWwgleN927Qfc7yUt5lBfv 3j75AKCPG0JV/+KfXVtrpASkbZhLStuVfB+/Y8o8+8dmAZ/Tx/ZZ4hDq X-Gm-Gg: AYBFou0hL6LCv8Q7tgyiThV1jKzjhk7VD02jdOFs+nauCILKPSivh4jOwjW9aQQ5erV zlzI+WVVWmchbzgv0tBe4dvcQiFi/dkTVOnywXvayNRzgZoqoB+U3mBtyMjybQPycTPX9Pv5oh8 TQZ9gURQNUr87HKk724nMLX6Zlg0Ha+hLNuiAABKabEEI/5QXMTxm9t1aSbPhDmXV/eLnAm1UUU pkkZuJQH/+qP5S4oDhRij+UiRbRjjpW6M9I1m5gBF/VQGT3IQ6cvPaQbKR8vZ4eJpq30/Ka5Qrc 7QV2AlCdCCp1tOGLLI9m13eJhddNh2B8qXmeJK3Nw2gqoqx+WniFkqXCbz6fPtjLd4Dr4t8TFS7 YFASedNnWAbXK0eEFTF/pnp03n54pxCAUhkx2r2lWlCSV2U7tyo1mAU2B2whbwBxm5qxNdFxiTx XW+y5Y6BP00Mg2FnB0aGsRVIzeS7tTM/ImcBZDVqOm59rtG1JWMVakVY/NeB6C5ICvUrHULZWDi XT/S7XBzTVu0+ZuncNUZdwFCTVAcHVdz3MaDi4WnIfDotXlJa5M7Fi8ysw62Uq8MqhrmddWC6ZL lg19FuWHI4lcYA84OM+hrEv1RI8= X-Received: by 2002:a05:6102:6444:b0:7b4:d43b:43d2 with SMTP id ada2fe7eead31-7c0f4ca2cc7mr238373137.3.1790902652158; Thu, 01 Oct 2026 17:57:32 -0700 (PDT) Received: from 192.168.1.109 ([2803:3c90:cee:ea00:5c3c:7e70:29e3:7a55]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-7c100a5c965sm1012505137.12.2026.10.01.17.57.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Oct 2026 17:57:31 -0700 (PDT) From: Manu To: Alexandre Felipe Cc: pgsql-hackers@lists.postgresql.org Subject: Re: BUG #19686: Rolling back SET TABLESPACE Date: Thu, 01 Oct 2026 21:57:28 -0300 Message-ID: <179090264869.85105.1086434870759405279@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0541623418389665350==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============0541623418389665350== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi Alexandre, Thanks -- and for going with this approach. You raised two things: the comment still described the pre-patch behavior, and it needed test cases. Both are addressed in the attached v2: - The comment no longer narrates the pre-patch behavior. It now says, in the present tense, that the heap has just been rewritten and the indexes must share that fate, and leaves the detail to ATExecSetTableSpaceNewIndexRelfilenumber. - There is a regression test now, in the tablespace suite. It runs the rollback-then-reinsert sequence and checks, with seqscans off, that the index agrees with the single live heap row -- it returns two against the bug, where the aborted transaction's index entry survives and aliases the reused TID. check-world is green with the patch. The approach is the one we settled on: after the heap move, each of the table's indexes gets a fresh relfilenumber copied within its own tablespace, so an abort discards the new heap and index files together. It does not change the indexes' tablespace, matching the documented behavior that SET TABLESPACE leaves indexes in place. Regards, Manu --===============0541623418389665350== Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v2-0001-Fix-index-corruption-SET-TABLESPACE-rollback.patch" MIME-Version: 1.0 RnJvbSBhNzc1ODI5M2UzYmI0YzM2YjkzNTcxNDM1YzYwZGZkMjMyOTRmMzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYW51ZWwgUmV5ZXMgQnJhdm8gPG1hbnVlbHJleWVzYnJhdm9A Z21haWwuY29tPgpEYXRlOiBUaHUsIDEgT2N0IDIwMjYgMjE6Mzc6MDQgLTAzMDAKU3ViamVjdDog W1BBVENIXSBGaXggaW5kZXggY29ycnVwdGlvbiBhZnRlciByb2xsaW5nIGJhY2sgQUxURVIgVEFC TEUgU0VUCiBUQUJMRVNQQUNFCgpBTFRFUiBUQUJMRSAuLi4gU0VUIFRBQkxFU1BBQ0UgcmV3cml0 ZXMgYSB0YWJsZSdzIGhlYXAgdG8gYSBuZXcKcmVsZmlsZW5vZGUgYnV0IGxlYXZlcyB0aGUgdGFi bGUncyBpbmRleGVzIG9uIHRoZWlyIGV4aXN0aW5nCnJlbGZpbGVub2Rlcy4gIFRoZSB0d28gdGhl biByb2xsIGJhY2sgYnkgZGlmZmVyZW50IG1lY2hhbmlzbXM6IG9uIGFib3J0CnRoZSBoZWFwJ3Mg bmV3IGZpbGUgaXMgZGlzY2FyZGVkLCBmcmVlaW5nIHRoZSBoZWFwIFRJRHMgY29uc3VtZWQgYnkg cm93cwppbnNlcnRlZCBhZnRlciB0aGUgU0VUIFRBQkxFU1BBQ0UsIHdoaWxlIHRoZSBpbmRleCBl bnRyaWVzIGZvciB0aG9zZSByb3dzCndlcmUgd3JpdHRlbiB0byB0aGUgdW5jaGFuZ2VkIGluZGV4 IGZpbGVzIGFuZCBzdXJ2aXZlLiAgQSBsYXRlciBpbnNlcnQKY2FuIHJldXNlIGEgZnJlZWQgaGVh cCBUSUQsIGxlYXZpbmcgdHdvIGluZGV4IGVudHJpZXMgdGhhdCBwb2ludCBhdCB0aGUKc2FtZSBs aXZlIGhlYXAgdHVwbGUuICBUaGlzIHN1cmZhY2VzIGFzIGEgX2J0X3Bvc3RpbmdfdmFsaWQgYXNz ZXJ0aW9uCmZhaWx1cmUgaW4gbmJ0cmVlIGRlZHVwbGljYXRpb24sIGFuZCBhcyBkdXBsaWNhdGUg cm93cyB0aHJvdWdoIGFuCmluZGV4LW9ubHkgc2NhbiBpbiBnaXN0LgoKQWZ0ZXIgbW92aW5nIHRo ZSBoZWFwLCBnaXZlIGVhY2ggb2YgdGhlIHRhYmxlJ3MgaW5kZXhlcyBhIG5ldwpyZWxmaWxlbnVt YmVyIGJ5IGNvcHlpbmcgaXQgd2l0aGluIGl0cyBvd24gdGFibGVzcGFjZSwgc28gdGhhdCBhbiBh Ym9ydApkaXNjYXJkcyB0aGUgbmV3IGhlYXAgYW5kIGluZGV4IGZpbGVzIHRvZ2V0aGVyIGFuZCBh IGNvbW1pdCBrZWVwcyB0aGVtCnRvZ2V0aGVyLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIGlu ZGV4ZXMnIHRhYmxlc3BhY2UsIG1hdGNoaW5nIHRoZQpkb2N1bWVudGVkIGJlaGF2aW9yIHRoYXQg U0VUIFRBQkxFU1BBQ0UgbGVhdmVzIGluZGV4ZXMgaW4gcGxhY2UuCgpBZGQgYSByZWdyZXNzaW9u IHRlc3QgdG8gdGhlIHRhYmxlc3BhY2Ugc3VpdGUuCgpCdWc6ICMxOTY4NgpSZXBvcnRlZC1ieTog QWxleGFuZGVyIExha2hpbgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAg ICAgICAgfCA4NiArKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvdGFibGVzcGFjZS5vdXQgfCAyNSArKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC90 YWJsZXNwYWNlLnNxbCAgICAgIHwgMjEgKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNl cnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBmZDE0NGQ3ODNkOS4uMmRl NTFkZjlmYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03MDEsNiArNzAxLDcgQEAg c3RhdGljIHZvaWQgQVRQcmVwQ2hhbmdlUGVyc2lzdGVuY2UoQWx0ZXJlZFRhYmxlSW5mbyAqdGFi LCBSZWxhdGlvbiByZWwsCiBzdGF0aWMgdm9pZCBBVFByZXBTZXRUYWJsZVNwYWNlKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQljb25zdCBjaGFyICp0YWJsZXNw YWNlbmFtZSwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFibGVT cGFjZShPaWQgdGFibGVPaWQsIE9pZCBuZXdUYWJsZVNwYWNlLCBMT0NLTU9ERSBsb2NrbW9kZSk7 CitzdGF0aWMgdm9pZCBBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVyKE9p ZCBpbmRleE9pZCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIHZvaWQgQVRFeGVjU2V0VGFi bGVTcGFjZU5vU3RvcmFnZShSZWxhdGlvbiByZWwsIE9pZCBuZXdUYWJsZVNwYWNlKTsKIHN0YXRp YyB2b2lkIEFURXhlY1NldFJlbE9wdGlvbnMoUmVsYXRpb24gcmVsLCBMaXN0ICpkZWZMaXN0LAog CQkJCQkJCQlBbHRlclRhYmxlVHlwZSBvcGVyYXRpb24sCkBAIC0xNzUzMCw5ICsxNzUzMSwxMSBA QCBBVEV4ZWNTZXRUYWJsZVNwYWNlKE9pZCB0YWJsZU9pZCwgT2lkIG5ld1RhYmxlU3BhY2UsIExP Q0tNT0RFIGxvY2ttb2RlKQogewogCVJlbGF0aW9uCXJlbDsKIAlPaWQJCQlyZWx0b2FzdHJlbGlk OworCWNoYXIJCXJlbGtpbmQ7CiAJUmVsRmlsZU51bWJlciBuZXdyZWxmaWxlbnVtYmVyOwogCVJl bEZpbGVMb2NhdG9yIG5ld3Jsb2NhdG9yOwogCUxpc3QJICAgKnJlbHRvYXN0aWR4aWRzID0gTklM OworCUxpc3QJICAgKnJlbHRhYmlkeGlkcyA9IE5JTDsKIAlMaXN0Q2VsbCAgICpsYzsKIAogCS8q CkBAIC0xNzU1MCw2ICsxNzU1Myw3IEBAIEFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lk LCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCiAJfQogCiAJcmVsdG9hc3Ry ZWxpZCA9IHJlbC0+cmRfcmVsLT5yZWx0b2FzdHJlbGlkOworCXJlbGtpbmQgPSByZWwtPnJkX3Jl bC0+cmVsa2luZDsKIAkvKiBGZXRjaCB0aGUgbGlzdCBvZiBpbmRleGVzIG9uIHRvYXN0IHJlbGF0 aW9uIGlmIG5lY2Vzc2FyeSAqLwogCWlmIChPaWRJc1ZhbGlkKHJlbHRvYXN0cmVsaWQpKQogCXsK QEAgLTE3NTk2LDYgKzE3NjAwLDEzIEBAIEFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lk LCBPaWQgbmV3VGFibGVTcGFjZSwgTE9DS01PREUgbG9ja21vZGUpCiAKIAlSZWxhdGlvbkFzc3Vt ZU5ld1JlbGZpbGVsb2NhdG9yKHJlbCk7CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYSB0YWJsZSwg Y29sbGVjdCBpdHMgaW5kZXggbGlzdCBub3csIHdoaWxlIHRoZSByZWxhdGlvbiBpcworCSAqIHN0 aWxsIG9wZW4sIHNvIHdlIGNhbiBnaXZlIGVhY2ggaW5kZXggYSBmcmVzaCByZWxmaWxlbnVtYmVy IGJlbG93LgorCSAqLworCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcmVsa2lu ZCA9PSBSRUxLSU5EX01BVFZJRVcpCisJCXJlbHRhYmlkeGlkcyA9IFJlbGF0aW9uR2V0SW5kZXhM aXN0KHJlbCk7CisKIAlyZWxhdGlvbl9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAkvKiBNYWtlIHN1 cmUgdGhlIHJlbHRhYmxlc3BhY2UgY2hhbmdlIGlzIHZpc2libGUgKi8KQEAgLTE3NjA5LDYgKzE3 NjIwLDgxIEBAIEFURXhlY1NldFRhYmxlU3BhY2UoT2lkIHRhYmxlT2lkLCBPaWQgbmV3VGFibGVT cGFjZSwgTE9DS01PREUgbG9ja21vZGUpCiAKIAkvKiBDbGVhbiB1cCAqLwogCWxpc3RfZnJlZShy ZWx0b2FzdGlkeGlkcyk7CisKKwkvKgorCSAqIFRoZSBoZWFwIG5vdyBoYXMgYSBuZXcgcmVsZmls ZW5vZGUuICBHaXZlIGVhY2ggb2YgdGhlIHRhYmxlJ3MgaW5kZXhlcyBhCisJICogZnJlc2ggcmVs ZmlsZW5vZGUgdG9vLCBzbyB0aGF0IHRoZSBpbmRleGVzIHNoYXJlIHRoZSBoZWFwJ3MgcmV3cml0 ZSBmYXRlCisJICogYWNyb3NzIGNvbW1pdCBhbmQgYWJvcnQ7IG90aGVyd2lzZSBhIHJvbGxlZC1i YWNrIGluc2VydCBjYW4gbGVhdmUgYW4KKwkgKiBpbmRleCBlbnRyeSB0aGF0IGEgbGF0ZXIgaW5z ZXJ0J3MgcmV1c2VkIGhlYXAgVElEIGFsaWFzZXMgLS0gaW5kZXgKKwkgKiBjb3JydXB0aW9uIChi dWcgIzE5Njg2KS4gIFNlZSBBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVy LgorCSAqLworCWZvcmVhY2gobGMsIHJlbHRhYmlkeGlkcykKKwkJQVRFeGVjU2V0VGFibGVTcGFj ZU5ld0luZGV4UmVsZmlsZW51bWJlcihsZmlyc3Rfb2lkKGxjKSwgbG9ja21vZGUpOworCWxpc3Rf ZnJlZShyZWx0YWJpZHhpZHMpOworfQorCisvKgorICogR2l2ZSBvbmUgb2YgYSB0YWJsZSdzIGlu ZGV4ZXMgYSBmcmVzaCByZWxmaWxlbnVtYmVyIHdpdGhpbiBpdHMgZXhpc3RpbmcKKyAqIHRhYmxl c3BhY2UsIGNvcHlpbmcgdGhlIGN1cnJlbnQgaW5kZXggZmlsZSB0byB0aGUgbmV3IHJlbGZpbGVu dW1iZXIuCisgKgorICogQVRFeGVjU2V0VGFibGVTcGFjZSgpIGNhbGxzIHRoaXMgZm9yIGVhY2gg aW5kZXggb2YgYSB0YWJsZSB3aG9zZSBoZWFwIGl0IGhhcworICoganVzdCByZXdyaXR0ZW4gdG8g YSBuZXcgcmVsZmlsZW5vZGUuICBUaGUgaW5kZXhlcyBtdXN0IHNoYXJlIHRoYXQgcmV3cml0ZSdz CisgKiB0cmFuc2FjdGlvbmFsIGZhdGUsIG90aGVyd2lzZSBhbiBhYm9ydCBkaXNjYXJkcyB0aGUg aGVhcCdzIG5ldyBmaWxlIChmcmVlaW5nCisgKiBpdHMgVElEcykgd2hpbGUgbGVhdmluZyBiZWhp bmQgaW5kZXggZW50cmllcyB0aGF0IHdlcmUgd3JpdHRlbiBkdXJpbmcgdGhlCisgKiB0cmFuc2Fj dGlvbiwgd2hpY2ggYSBsYXRlciBpbnNlcnQgY2FuIHRoZW4gYWxpYXMgLS0gaW5kZXggY29ycnVw dGlvbiAoYnVnCisgKiAjMTk2ODYpLiAgVW5saWtlIGEgZnVsbCByZWluZGV4IHRoaXMgbWVyZWx5 IGNvcGllcyB0aGUgZXhpc3RpbmcgaW5kZXggZmlsZSwKKyAqIHNvIHRoZSBhZGRlZCBjb3N0IHN0 YXlzIGNsb3NlIHRvIHRoYXQgb2YgdGhlIGhlYXAgbW92ZSBpdHNlbGYuCisgKi8KK3N0YXRpYyB2 b2lkCitBVEV4ZWNTZXRUYWJsZVNwYWNlTmV3SW5kZXhSZWxmaWxlbnVtYmVyKE9pZCBpbmRleE9p ZCwgTE9DS01PREUgbG9ja21vZGUpCit7CisJUmVsYXRpb24JaW5kOworCVJlbEZpbGVOdW1iZXIg bmV3cmVsZmlsZW51bWJlcjsKKwlSZWxGaWxlTG9jYXRvciBuZXdybG9jYXRvcjsKKwlSZWxhdGlv bglwZ19jbGFzczsKKwlIZWFwVHVwbGUJdHVwbGU7CisJSXRlbVBvaW50ZXJEYXRhIG90aWQ7CisJ Rm9ybV9wZ19jbGFzcyByZF9yZWw7CisKKwlpbmQgPSByZWxhdGlvbl9vcGVuKGluZGV4T2lkLCBs b2NrbW9kZSk7CisKKwkvKiBPbmx5IHBsYWluIGluZGV4ZXMgaGF2ZSBzdG9yYWdlIHRoYXQgY2Fu IGhvbGQgdGhlIHN0YWxlIGVudHJpZXMuICovCisJaWYgKGluZC0+cmRfcmVsLT5yZWxraW5kICE9 IFJFTEtJTkRfSU5ERVggfHwKKwkJIVJFTEtJTkRfSEFTX1NUT1JBR0UoaW5kLT5yZF9yZWwtPnJl bGtpbmQpKQorCXsKKwkJcmVsYXRpb25fY2xvc2UoaW5kLCBOb0xvY2spOworCQlyZXR1cm47CisJ fQorCisJLyogQWxsb2NhdGUgYSBuZXcgcmVsZmlsZW51bWJlciBpbiB0aGUgaW5kZXgncyBjdXJy ZW50IHRhYmxlc3BhY2UuICovCisJbmV3cmVsZmlsZW51bWJlciA9IEdldE5ld1JlbEZpbGVOdW1i ZXIoaW5kLT5yZF9yZWwtPnJlbHRhYmxlc3BhY2UsIE5VTEwsCisJCQkJCQkJCQkJICAgaW5kLT5y ZF9yZWwtPnJlbHBlcnNpc3RlbmNlKTsKKwluZXdybG9jYXRvciA9IGluZC0+cmRfbG9jYXRvcjsK KwluZXdybG9jYXRvci5yZWxOdW1iZXIgPSBuZXdyZWxmaWxlbnVtYmVyOworCisJLyogQ29weSB0 aGUgaW5kZXggaW50byB0aGUgbmV3IGZpbGUgYW5kIHNjaGVkdWxlIHRoZSBvbGQgb25lIGZvciBj bGVhbnVwLiAqLworCWluZGV4X2NvcHlfZGF0YShpbmQsIG5ld3Jsb2NhdG9yKTsKKworCS8qIFVw ZGF0ZSB0aGUgcGdfY2xhc3Mgcm93OyBvbmx5IHRoZSByZWxmaWxlbm9kZSBjaGFuZ2VzLiAqLwor CXBnX2NsYXNzID0gdGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGVMb2NrZWRDb3B5MShSRUxPSUQsIE9iamVjdElk R2V0RGF0dW0oaW5kZXhPaWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwbGUpKQorCQll bG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleE9pZCk7 CisJb3RpZCA9IHR1cGxlLT50X3NlbGY7CisJcmRfcmVsID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNU UlVDVCh0dXBsZSk7CisJcmRfcmVsLT5yZWxmaWxlbm9kZSA9IG5ld3JlbGZpbGVudW1iZXI7CisJ Q2F0YWxvZ1R1cGxlVXBkYXRlKHBnX2NsYXNzLCAmb3RpZCwgdHVwbGUpOworCVVubG9ja1R1cGxl KHBnX2NsYXNzLCAmb3RpZCwgSW5wbGFjZVVwZGF0ZVR1cGxlTG9jayk7CisJaGVhcF9mcmVldHVw bGUodHVwbGUpOworCXRhYmxlX2Nsb3NlKHBnX2NsYXNzLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwor CUludm9rZU9iamVjdFBvc3RBbHRlckhvb2soUmVsYXRpb25SZWxhdGlvbklkLCBpbmRleE9pZCwg MCk7CisJUmVsYXRpb25Bc3N1bWVOZXdSZWxmaWxlbG9jYXRvcihpbmQpOworCisJcmVsYXRpb25f Y2xvc2UoaW5kLCBOb0xvY2spOworCisJLyogTWFrZSB0aGUgcmVsZmlsZW5vZGUgY2hhbmdlIHZp c2libGUuICovCisJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdGFibGVzcGFjZS5vdXQgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0CmluZGV4IGYwZGQyNWNkZjBjLi43ZDcyMTU1 NTVhZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC90YWJsZXNwYWNlLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3RhYmxlc3BhY2Uub3V0CkBAIC05NTEs NiArOTUxLDMxIEBAIEVSUk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlc3BhY2UgcmVn cmVzc190YmxzcGFjZQogUkVJTkRFWCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlLCBDT05D VVJSRU5UTFkpIFRBQkxFIHRhYmxlc3BhY2VfdGFibGU7IC0tIGZhaWwKIEVSUk9SOiAgcGVybWlz c2lvbiBkZW5pZWQgZm9yIHRhYmxlc3BhY2UgcmVncmVzc190YmxzcGFjZQogUkVTRVQgUk9MRTsK Ky0tIGJ1ZyAjMTk2ODY6IHJvbGxpbmcgYmFjayBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBt dXN0IG5vdCBsZWF2ZSB0aGUKKy0tIHRhYmxlJ3MgaW5kZXhlcyByZWZlcmVuY2luZyBoZWFwIFRJ RHMgdGhhdCB0aGUgYWJvcnRlZCBoZWFwIHJld3JpdGUgZnJlZXMuCistLSBUaGUgaW5kZXhlcyBo YXZlIHRvIHNoYXJlIHRoZSBoZWFwJ3MgcmV3cml0ZSwgc28gdGhhdCBhIGxhdGVyIGluc2VydCBj YW5ub3QKKy0tIHJldXNlIGEgZnJlZWQgVElEIHRoYXQgYSBzdXJ2aXZpbmcgaW5kZXggZW50cnkg c3RpbGwgcG9pbnRzIGF0LgorQ1JFQVRFIFRBQkxFIHRic3BhY2VfMTk2ODYgKGEgaW50KTsKK0NS RUFURSBJTkRFWCB0YnNwYWNlXzE5Njg2X2lkeCBPTiB0YnNwYWNlXzE5Njg2IChhKTsKK0JFR0lO OworQUxURVIgVEFCTEUgdGJzcGFjZV8xOTY4NiBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlOworSU5TRVJUIElOVE8gdGJzcGFjZV8xOTY4NiBWQUxVRVMgKDApOworUk9MTEJBQ0s7CitJ TlNFUlQgSU5UTyB0YnNwYWNlXzE5Njg2IFZBTFVFUyAoMCk7CistLSBXaXRoIHNlcXNjYW5zIGRp c2FibGVkIHRoaXMgY291bnQgaXMgYW5zd2VyZWQgZnJvbSB0aGUgaW5kZXg7IGl0IG11c3QgbWF0 Y2gKKy0tIHRoZSBzaW5nbGUgbGl2ZSBoZWFwIHJvdyAoaXQgcmV0dXJucyAyIGFnYWluc3QgdGhl IGJ1Zywgd2hlcmUgdGhlIGFib3J0ZWQKKy0tIHRyYW5zYWN0aW9uJ3MgaW5kZXggZW50cnkgc3Vy dml2ZXMgYW5kIGFsaWFzZXMgdGhlIHJldXNlZCBUSUQpLgorU0VUIGVuYWJsZV9zZXFzY2FuID0g b2ZmOworU0VUIGVuYWJsZV9iaXRtYXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEZST00g dGJzcGFjZV8xOTY4NiBXSEVSRSBhID0gMDsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorKDEg cm93KQorCitSRVNFVCBlbmFibGVfc2Vxc2NhbjsKK1JFU0VUIGVuYWJsZV9iaXRtYXBzY2FuOwor RFJPUCBUQUJMRSB0YnNwYWNlXzE5Njg2OwogQUxURVIgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNw YWNlIFJFTkFNRSBUTyByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQ7CiBBTFRFUiBUQUJMRSBBTEwg SU4gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0UgcGdf ZGVmYXVsdDsKIEFMVEVSIElOREVYIEFMTCBJTiBUQUJMRVNQQUNFIHJlZ3Jlc3NfdGJsc3BhY2Vf cmVuYW1lZCBTRVQgVEFCTEVTUEFDRSBwZ19kZWZhdWx0OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvdGFibGVzcGFjZS5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC90YWJsZXNw YWNlLnNxbAppbmRleCBjNDNhNTllNTk1Ny4uMGY3OWEyNzA4YTMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3RhYmxlc3BhY2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3RhYmxlc3BhY2Uuc3FsCkBAIC00MjAsNiArNDIwLDI3IEBAIFJFSU5ERVggKFRBQkxFU1BBQ0Ug cmVncmVzc190YmxzcGFjZSkgVEFCTEUgdGFibGVzcGFjZV90YWJsZTsgLS0gZmFpbAogUkVJTkRF WCAoVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlLCBDT05DVVJSRU5UTFkpIFRBQkxFIHRhYmxl c3BhY2VfdGFibGU7IC0tIGZhaWwKIFJFU0VUIFJPTEU7CiAKKy0tIGJ1ZyAjMTk2ODY6IHJvbGxp bmcgYmFjayBBTFRFUiBUQUJMRSBTRVQgVEFCTEVTUEFDRSBtdXN0IG5vdCBsZWF2ZSB0aGUKKy0t IHRhYmxlJ3MgaW5kZXhlcyByZWZlcmVuY2luZyBoZWFwIFRJRHMgdGhhdCB0aGUgYWJvcnRlZCBo ZWFwIHJld3JpdGUgZnJlZXMuCistLSBUaGUgaW5kZXhlcyBoYXZlIHRvIHNoYXJlIHRoZSBoZWFw J3MgcmV3cml0ZSwgc28gdGhhdCBhIGxhdGVyIGluc2VydCBjYW5ub3QKKy0tIHJldXNlIGEgZnJl ZWQgVElEIHRoYXQgYSBzdXJ2aXZpbmcgaW5kZXggZW50cnkgc3RpbGwgcG9pbnRzIGF0LgorQ1JF QVRFIFRBQkxFIHRic3BhY2VfMTk2ODYgKGEgaW50KTsKK0NSRUFURSBJTkRFWCB0YnNwYWNlXzE5 Njg2X2lkeCBPTiB0YnNwYWNlXzE5Njg2IChhKTsKK0JFR0lOOworQUxURVIgVEFCTEUgdGJzcGFj ZV8xOTY4NiBTRVQgVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlOworSU5TRVJUIElOVE8gdGJz cGFjZV8xOTY4NiBWQUxVRVMgKDApOworUk9MTEJBQ0s7CitJTlNFUlQgSU5UTyB0YnNwYWNlXzE5 Njg2IFZBTFVFUyAoMCk7CistLSBXaXRoIHNlcXNjYW5zIGRpc2FibGVkIHRoaXMgY291bnQgaXMg YW5zd2VyZWQgZnJvbSB0aGUgaW5kZXg7IGl0IG11c3QgbWF0Y2gKKy0tIHRoZSBzaW5nbGUgbGl2 ZSBoZWFwIHJvdyAoaXQgcmV0dXJucyAyIGFnYWluc3QgdGhlIGJ1Zywgd2hlcmUgdGhlIGFib3J0 ZWQKKy0tIHRyYW5zYWN0aW9uJ3MgaW5kZXggZW50cnkgc3Vydml2ZXMgYW5kIGFsaWFzZXMgdGhl IHJldXNlZCBUSUQpLgorU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworU0VUIGVuYWJsZV9iaXRt YXBzY2FuID0gb2ZmOworU0VMRUNUIGNvdW50KCopIEZST00gdGJzcGFjZV8xOTY4NiBXSEVSRSBh ID0gMDsKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworUkVTRVQgZW5hYmxlX2JpdG1hcHNjYW47CitE Uk9QIFRBQkxFIHRic3BhY2VfMTk2ODY7CisKIEFMVEVSIFRBQkxFU1BBQ0UgcmVncmVzc190Ymxz cGFjZSBSRU5BTUUgVE8gcmVncmVzc190YmxzcGFjZV9yZW5hbWVkOwogCiBBTFRFUiBUQUJMRSBB TEwgSU4gVEFCTEVTUEFDRSByZWdyZXNzX3RibHNwYWNlX3JlbmFtZWQgU0VUIFRBQkxFU1BBQ0Ug cGdfZGVmYXVsdDsKLS0gCjIuNTUuMAoK --===============0541623418389665350==--