Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tr6nU-00Emd1-GU for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Mar 2025 02:53:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tr6nT-00F5er-06 for pgsql-hackers@arkaria.postgresql.org; Sun, 09 Mar 2025 02:53:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tr6nS-00F5ei-JM for pgsql-hackers@lists.postgresql.org; Sun, 09 Mar 2025 02:53:46 +0000 Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tr6nO-001mkI-1j for pgsql-hackers@lists.postgresql.org; Sun, 09 Mar 2025 02:53:45 +0000 Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-abf6f3b836aso485096466b.3 for ; Sat, 08 Mar 2025 18:53:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741488821; x=1742093621; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=4y8aXRQ6wOYLUvlZ33ohDUHWAT9vLcwj0IplR9FdII4=; b=HbHcQ0ta7F3mIqEGOu3o4pqWr8ijvCVhOQOlprXadIx50IqD2tZuzCWTcv1ULNEB8B S/+u419Exh3t4AyxMHSR9xmxtIMBmdXMkExOkDNmh7bYYHiXfmt9oGx9M6/XdwLIN7t0 pIhHzs9VIHrzXa/hJZif7qSYLZUM5tZ/ESQxc28GXcejMDZVyiAby6ojpn37zPXdO5PF KUTXA/4sDJJ5bMSL+NACXgjnACCxXQv5cAyh3yeV7+J6xJYxVCQ/2D4s5FzDwJhP8KXB 6cULZ2YUSnOp90dwxJLu8mT4oyFK2jMht8jQ0sRfou9XwHlB6R9G+VUbnB48nSwaW5qu uH/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741488821; x=1742093621; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=4y8aXRQ6wOYLUvlZ33ohDUHWAT9vLcwj0IplR9FdII4=; b=xAbE+WI5XIwcXTdWSmsIfv8XDpO8Yn3rqXLDeh+ZLqfmKpd6pUQMuUsOPLnKxGdz3x 5MTFmTCTwWujGIU10L+sDGbkZBg4DTtXNL7TNmjeZM39Qqi7EMkpIjHmcvX8uYan/450 WJfm6Wfii3dFFc+m/3aX4DNZQfi439haPKJS/3/fCi9uokohOKUqlHlb2VnNI5tHFSz+ m3Thv+yreiPh7GhfGv6wYRaLfLiRVjDq22w1vDJpf/YKN8Afwm6jREBH+otsbEXyzx+C UkQKyocZqOaZi3vPrZJAe+9KdPyyCHCNFImLNdMPb6TvKZf5oAmOaW3ljd+/Sdog105A bAxw== X-Forwarded-Encrypted: i=1; AJvYcCX/YsqffVHXWymkqLoaZZkBrTm6L8OwmpS2aFreMcfsXTou9gwemR+IwBE3covt/UH6wjOw3aiYZLLH0nNM@lists.postgresql.org X-Gm-Message-State: AOJu0YwlxMsBZjarhIZTY715WMlKkmGO0PtOYyADCAhEmBsb0TXMYyTH 7o9LheJgUTfE4R6vFq2MdjGVSt+FpkJNWZLGzXM95XaOo2V3d739PycombHiFOUMphKJsX3rYc4 web92SS1mgC9O1gERRqvx8W00Yks= X-Gm-Gg: ASbGncsnIaR67bSVgzXrGkLQqOW+PRyDeEZCgSOswisayG52RUAylc5tkQVQdFJTxQe Pfh+jyCw1Su0Y1Zb5l5NozfT4FKDVrDrn6J9pC5oUvdivYfMqSWTC9EQBU/cAR3WWvX+hpKyOZx bJtg83ikhB0zqGn31T2ohnsunZow== X-Google-Smtp-Source: AGHT+IF1akjhANEpitwRXCcdLHeAFjqC184sENr6e1LYk9urPcUE31fbDwX4f2EcbNCF7MeN+cQcLcmwf8gQsl7KrNU= X-Received: by 2002:a17:907:3608:b0:abf:6bf6:a397 with SMTP id a640c23a62f3a-ac252a9e1afmr939528566b.15.1741488821061; Sat, 08 Mar 2025 18:53:41 -0800 (PST) MIME-Version: 1.0 References: <202503071820.j25zn3lo4hvn@alvherre.pgsql> In-Reply-To: From: Alexander Korotkov Date: Sun, 9 Mar 2025 04:53:29 +0200 X-Gm-Features: AQ5f1JpIbERz5WoKQW0-jL8r6SpVB7dB-x9viKAHmrNV0_s2_RjJjIAJUhvUhy4 Message-ID: Subject: Re: pgsql: reindexdb: Add the index-level REINDEX with multiple jobs To: =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Alexander Korotkov , pgsql-hackers@lists.postgresql.org, Maxim Orlov , Svetlana Derevyanko Content-Type: multipart/mixed; boundary="0000000000008f8052062fdff689" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000008f8052062fdff689 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, Mar 8, 2025 at 12:49=E2=80=AFPM Alexander Korotkov wrote: > On Fri, Mar 7, 2025 at 8:20=E2=80=AFPM =C3=81lvaro Herrera wrote: > > > > On 2024-Mar-25, Alexander Korotkov wrote: > > > > > reindexdb: Add the index-level REINDEX with multiple jobs > > > > > > Straight-forward index-level REINDEX is not supported with multiple j= obs as > > > we cannot control the concurrent processing of multiple indexes depen= ding on > > > the same relation. Instead, we dedicate the whole table to certain r= eindex > > > job. Thus, if indexes in the lists belong to different tables, that = gives us > > > a fair level of parallelism. > > > > I tested this, because of a refactoring suggestion [1] and I find that > > it's rather completely broken. > > The code was written with assumption that running > run_reindex_command() with async =3D=3D true can schedule a number of > queries for a connection. But actually that's not true and everything > is broken. The draft patch for revert is attached. Could you, please, check. ------ Regards, Alexander Korotkov Supabase --0000000000008f8052062fdff689 Content-Type: application/octet-stream; name="v1-0001-revert-reindexdb-Add-the-index-level-REINDEX-with.patch" Content-Disposition: attachment; filename="v1-0001-revert-reindexdb-Add-the-index-level-REINDEX-with.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m811go2f0 RnJvbSAwOWEyNjFlZjgzNzQyMGFhY2VlZjlkMzUyYTM2MjZjZjViMTI2Nzk3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgS29yb3Rrb3YgPGFrb3JvdGtvdkBwb3N0Z3Jl c3FsLm9yZz4KRGF0ZTogU3VuLCA5IE1hciAyMDI1IDAzOjA2OjUxICswMjAwClN1YmplY3Q6IFtQ QVRDSCB2MV0gcmV2ZXJ0OiByZWluZGV4ZGI6IEFkZCB0aGUgaW5kZXgtbGV2ZWwgUkVJTkRFWCB3 aXRoCiBtdWx0aXBsZSBqb2JzCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9w bGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgpUaGlz IGNvbW1pdCByZXZlcnRzIDQ3Zjk5YTQwN2QuICBUaGUgY29kZSB3YXMgd3JpdHRlbiBhc3N1bWlu ZyB0aGF0IHJ1bm5pbmcKcnVuX3JlaW5kZXhfY29tbWFuZCgpIHdpdGggYXN5bmMgPT0gdHJ1ZSBj YW4gc2NoZWR1bGUgYSBudW1iZXIgb2YgcXVlcmllcyBmb3IKYSBjb25uZWN0aW9uLiAgVGhhdCdz IG5vdCB0cnVlLCBhbmQgdGhlIHNlY29uZCBxdWVyeSBzZW50IHVzaW5nCnJ1bl9yZWluZGV4X2Nv bW1hbmQoKSB3aWxsIHdhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBwcmV2aW91cyBvbmUu ClRoYXQgbWFrZXMgdGhpcyBmZWF0dXJlIGFsbW9zdCB1c2VsZXNzLiAgSG93ZXZlciwgdGhlcmUg aXMgc3RpbGwgYW4gYWJpbGl0eQp0byBjYWxsIGluZGV4LWxldmVsIHJlaW5kZXggaW4gcGFyYWxs ZWwgbW9kZS4gIEl0IHdvdWxkIGlzc3VlIGEgd2FybmluZyBhbmQKZmFsbGJhY2sgdG8gc2VyaWFs IG1vZGUsIGFzIGl0IG1pZ2h0IGFscmVhZHkgYmUgaW4gc29tZSB1c2VyIHNjcmlwdHMuCgpSZXBv cnRlZC1ieTogw4FsdmFybyBIZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KRGlzY3Vz c2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS8yMDI1MDMwNzE4MjAuajI1em4zbG80aHZuJTQwYWx2 aGVycmUucGdzcWwKLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXhkYi5zZ21sICAgIHwgICAz ICstCiBzcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMgICAgICAgIHwgMTYyICsrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmluL3NjcmlwdHMvdC8wOTBfcmVpbmRleGRiLnBsIHwg ICA4ICstCiAzIGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDE0MiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3JlaW5kZXhkYi5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9yZWluZGV4ZGIuc2dtbAppbmRleCA5OGMzMzMzMjI4Zi4uYTg3NzQzOWRjNWIg MTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcmVpbmRleGRiLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9yZWluZGV4ZGIuc2dtbApAQCAtMTc5LDcgKzE3OSw4IEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogICAgICAgICBzZXR0aW5nIGlzIGhpZ2ggZW5vdWdoIHRvIGFjY29tbW9k YXRlIGFsbCBjb25uZWN0aW9ucy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+Ci0gICAg ICAgIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgPG9wdGlv bj4tLXN5c3RlbTwvb3B0aW9uPiBvcHRpb24uCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9wdGlv biBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgPG9wdGlvbj4tLWluZGV4PC9vcHRpb24+CisgICAg ICAgIGFuZCA8b3B0aW9uPi0tc3lzdGVtPC9vcHRpb24+IG9wdGlvbnMuCiAgICAgICAgPC9wYXJh PgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9z cmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMgYi9zcmMvYmluL3NjcmlwdHMvcmVpbmRleGRiLmMK aW5kZXggYjAwYzgxMTI4NjkuLjVkZGQ4M2YzODI4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Njcmlw dHMvcmVpbmRleGRiLmMKKysrIGIvc3JjL2Jpbi9zY3JpcHRzL3JlaW5kZXhkYi5jCkBAIC0yMDUs OCArMjA1LDIzIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCXNldHVwX2NhbmNl bF9oYW5kbGVyKE5VTEwpOwogCi0JaWYgKGNvbmN1cnJlbnRDb25zID4gMSAmJiBzeXNjYXRhbG9n KQotCQlwZ19mYXRhbCgiY2Fubm90IHVzZSBtdWx0aXBsZSBqb2JzIHRvIHJlaW5kZXggc3lzdGVt IGNhdGFsb2dzIik7CisJaWYgKGNvbmN1cnJlbnRDb25zID4gMSkKKwl7CisJCS8qCisJCSAqIElu ZGV4LWxldmVsIFJFSU5ERVggaXMgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGpvYnMgYXMg d2UKKwkJICogY2Fubm90IGNvbnRyb2wgdGhlIGNvbmN1cnJlbnQgcHJvY2Vzc2luZyBvZiBtdWx0 aXBsZSBpbmRleGVzCisJCSAqIGRlcGVuZGluZyBvbiB0aGUgc2FtZSByZWxhdGlvbi4KKwkJICov CisJCWlmIChpbmRleGVzLmhlYWQgIT0gTlVMTCkKKwkJeworCQkJcGdfbG9nX3dhcm5pbmcoImNh bm5vdCB1c2UgbXVsdGlwbGUgam9icyB0byByZWluZGV4IGluZGV4ZXMsICIKKwkJCQkJCSAgICJm YWxsYmFjayB0byBzaW5nbGUgam9iIik7CisJCQljb25jdXJyZW50Q29ucyA9IDE7CisJCX0KKwor CQlpZiAoc3lzY2F0YWxvZykKKwkJCXBnX2ZhdGFsKCJjYW5ub3QgdXNlIG11bHRpcGxlIGpvYnMg dG8gcmVpbmRleCBzeXN0ZW0gY2F0YWxvZ3MiKTsKKwl9CiAKIAlpZiAoYWxsZGIpCiAJewpAQCAt MjQ2LDcgKzI2MSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJaWYgKGluZGV4 ZXMuaGVhZCAhPSBOVUxMKQogCQkJcmVpbmRleF9vbmVfZGF0YWJhc2UoJmNwYXJhbXMsIFJFSU5E RVhfSU5ERVgsICZpbmRleGVzLAogCQkJCQkJCQkgcHJvZ25hbWUsIGVjaG8sIHZlcmJvc2UsCi0J CQkJCQkJCSBjb25jdXJyZW50bHksIGNvbmN1cnJlbnRDb25zLCB0YWJsZXNwYWNlKTsKKwkJCQkJ CQkJIGNvbmN1cnJlbnRseSwgMSwgdGFibGVzcGFjZSk7CiAKIAkJaWYgKHRhYmxlcy5oZWFkICE9 IE5VTEwpCiAJCQlyZWluZGV4X29uZV9kYXRhYmFzZSgmY3BhcmFtcywgUkVJTkRFWF9UQUJMRSwg JnRhYmxlcywKQEAgLTI3NiwxNiArMjkxLDEyIEBAIHJlaW5kZXhfb25lX2RhdGFiYXNlKENvbm5Q YXJhbXMgKmNwYXJhbXMsIFJlaW5kZXhUeXBlIHR5cGUsCiB7CiAJUEdjb25uCSAgICpjb25uOwog CVNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsOwotCVNpbXBsZVN0cmluZ0xpc3RDZWxsICppbmRp Y2VzX3RhYmxlc19jZWxsID0gTlVMTDsKIAlib29sCQlwYXJhbGxlbCA9IGNvbmN1cnJlbnRDb25z ID4gMTsKIAlTaW1wbGVTdHJpbmdMaXN0ICpwcm9jZXNzX2xpc3QgPSB1c2VyX2xpc3Q7Ci0JU2lt cGxlU3RyaW5nTGlzdCAqaW5kaWNlc190YWJsZXNfbGlzdCA9IE5VTEw7CiAJUmVpbmRleFR5cGUg cHJvY2Vzc190eXBlID0gdHlwZTsKIAlQYXJhbGxlbFNsb3RBcnJheSAqc2E7CiAJYm9vbAkJZmFp bGVkID0gZmFsc2U7CiAJaW50CQkJaXRlbXNfY291bnQgPSAwOwotCWNoYXIJICAgKnByZXZfaW5k ZXhfdGFibGVfbmFtZSA9IE5VTEw7Ci0JUGFyYWxsZWxTbG90ICpmcmVlX3Nsb3QgPSBOVUxMOwog CiAJY29ubiA9IGNvbm5lY3REYXRhYmFzZShjcGFyYW1zLCBwcm9nbmFtZSwgZWNobywgZmFsc2Us IHRydWUpOwogCkBAIC0zNjEsMzYgKzM3Miw4IEBAIHJlaW5kZXhfb25lX2RhdGFiYXNlKENvbm5Q YXJhbXMgKmNwYXJhbXMsIFJlaW5kZXhUeXBlIHR5cGUsCiAJCQkJfQogCQkJCWJyZWFrOwogCi0J CQljYXNlIFJFSU5ERVhfSU5ERVg6Ci0JCQkJQXNzZXJ0KHVzZXJfbGlzdCAhPSBOVUxMKTsKLQot CQkJCS8qCi0JCQkJICogQnVpbGQgYSBsaXN0IG9mIHJlbGF0aW9ucyBmcm9tIHRoZSBpbmRpY2Vz LiAgVGhpcyB3aWxsCi0JCQkJICogYWNjb3JkaW5nbHkgcmVvcmRlciB0aGUgbGlzdCBvZiBpbmRp Y2VzIHRvby4KLQkJCQkgKi8KLQkJCQlpbmRpY2VzX3RhYmxlc19saXN0ID0gZ2V0X3BhcmFsbGVs X29iamVjdF9saXN0KGNvbm4sIHByb2Nlc3NfdHlwZSwKLQkJCQkJCQkJCQkJCQkJCSAgIHVzZXJf bGlzdCwgZWNobyk7Ci0KLQkJCQkvKgotCQkJCSAqIEJhaWwgb3V0IGlmIG5vdGhpbmcgdG8gcHJv Y2Vzcy4gICd1c2VyX2xpc3QnIHdhcyBtb2RpZmllZAotCQkJCSAqIGluLXBsYWNlLCBzbyBjaGVj ayBpZiBpdCBoYXMgYXQgbGVhc3Qgb25lIGNlbGwuCi0JCQkJICovCi0JCQkJaWYgKHVzZXJfbGlz dC0+aGVhZCA9PSBOVUxMKQotCQkJCXsKLQkJCQkJUFFmaW5pc2goY29ubik7Ci0JCQkJCXJldHVy bjsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIEFzc3VtaW5nICd1c2VyX2xpc3QnIGlzIG5vdCBl bXB0eSwgJ2luZGljZXNfdGFibGVzX2xpc3QnCi0JCQkJICogc2hvdWxkbid0IGJlIGVtcHR5IGFz IHdlbGwuCi0JCQkJICovCi0JCQkJQXNzZXJ0KGluZGljZXNfdGFibGVzX2xpc3QgIT0gTlVMTCk7 Ci0JCQkJaW5kaWNlc190YWJsZXNfY2VsbCA9IGluZGljZXNfdGFibGVzX2xpc3QtPmhlYWQ7Ci0K LQkJCQlicmVhazsKLQogCQkJY2FzZSBSRUlOREVYX1NZU1RFTToKKwkJCWNhc2UgUkVJTkRFWF9J TkRFWDoKIAkJCQkvKiBub3Qgc3VwcG9ydGVkICovCiAJCQkJQXNzZXJ0KGZhbHNlKTsKIAkJCQli cmVhazsKQEAgLTQzMSw3ICs0MTQsNyBAQCByZWluZGV4X29uZV9kYXRhYmFzZShDb25uUGFyYW1z ICpjcGFyYW1zLCBSZWluZGV4VHlwZSB0eXBlLAogCWRvCiAJewogCQljb25zdCBjaGFyICpvYmpu YW1lID0gY2VsbC0+dmFsOwotCQlib29sCQluZWVkX25ld19zbG90ID0gdHJ1ZTsKKwkJUGFyYWxs ZWxTbG90ICpmcmVlX3Nsb3QgPSBOVUxMOwogCiAJCWlmIChDYW5jZWxSZXF1ZXN0ZWQpCiAJCXsK QEAgLTQzOSwzMyArNDIyLDE0IEBAIHJlaW5kZXhfb25lX2RhdGFiYXNlKENvbm5QYXJhbXMgKmNw YXJhbXMsIFJlaW5kZXhUeXBlIHR5cGUsCiAJCQlnb3RvIGZpbmlzaDsKIAkJfQogCi0JCS8qCi0J CSAqIEZvciBwYXJhbGxlbCBpbmRleC1sZXZlbCBSRUlOREVYLCB0aGUgaW5kaWNlcyBvZiB0aGUg c2FtZSB0YWJsZSBhcmUKLQkJICogb3JkZXJlZCB0b2dldGhlciBhbmQgdGhleSBhcmUgdG8gYmUg cHJvY2Vzc2VkIGJ5IHRoZSBzYW1lIGpvYi4gIFNvLAotCQkgKiB3ZSBkb24ndCBzd2l0Y2ggdGhl IGpvYiBhcyBzb29uIGFzIHRoZSBpbmRleCBiZWxvbmdzIHRvIHRoZSBzYW1lCi0JCSAqIHRhYmxl IGFzIHRoZSBwcmV2aW91cyBvbmUuCi0JCSAqLwotCQlpZiAocGFyYWxsZWwgJiYgcHJvY2Vzc190 eXBlID09IFJFSU5ERVhfSU5ERVgpCisJCWZyZWVfc2xvdCA9IFBhcmFsbGVsU2xvdHNHZXRJZGxl KHNhLCBOVUxMKTsKKwkJaWYgKCFmcmVlX3Nsb3QpCiAJCXsKLQkJCWlmIChwcmV2X2luZGV4X3Rh YmxlX25hbWUgIT0gTlVMTCAmJgotCQkJCXN0cmNtcChwcmV2X2luZGV4X3RhYmxlX25hbWUsIGlu ZGljZXNfdGFibGVzX2NlbGwtPnZhbCkgPT0gMCkKLQkJCQluZWVkX25ld19zbG90ID0gZmFsc2U7 Ci0JCQlwcmV2X2luZGV4X3RhYmxlX25hbWUgPSBpbmRpY2VzX3RhYmxlc19jZWxsLT52YWw7Ci0J CQlpbmRpY2VzX3RhYmxlc19jZWxsID0gaW5kaWNlc190YWJsZXNfY2VsbC0+bmV4dDsKLQkJfQot Ci0JCWlmIChuZWVkX25ld19zbG90KQotCQl7Ci0JCQlmcmVlX3Nsb3QgPSBQYXJhbGxlbFNsb3Rz R2V0SWRsZShzYSwgTlVMTCk7Ci0JCQlpZiAoIWZyZWVfc2xvdCkKLQkJCXsKLQkJCQlmYWlsZWQg PSB0cnVlOwotCQkJCWdvdG8gZmluaXNoOwotCQkJfQotCi0JCQlQYXJhbGxlbFNsb3RTZXRIYW5k bGVyKGZyZWVfc2xvdCwgVGFibGVDb21tYW5kUmVzdWx0SGFuZGxlciwgTlVMTCk7CisJCQlmYWls ZWQgPSB0cnVlOworCQkJZ290byBmaW5pc2g7CiAJCX0KIAorCQlQYXJhbGxlbFNsb3RTZXRIYW5k bGVyKGZyZWVfc2xvdCwgVGFibGVDb21tYW5kUmVzdWx0SGFuZGxlciwgTlVMTCk7CiAJCXJ1bl9y ZWluZGV4X2NvbW1hbmQoZnJlZV9zbG90LT5jb25uZWN0aW9uLCBwcm9jZXNzX3R5cGUsIG9iam5h bWUsCiAJCQkJCQkJZWNobywgdmVyYm9zZSwgY29uY3VycmVudGx5LCB0cnVlLCB0YWJsZXNwYWNl KTsKIApAQCAtNDgyLDEyICs0NDYsNiBAQCBmaW5pc2g6CiAJCXBnX2ZyZWUocHJvY2Vzc19saXN0 KTsKIAl9CiAKLQlpZiAoaW5kaWNlc190YWJsZXNfbGlzdCkKLQl7Ci0JCXNpbXBsZV9zdHJpbmdf bGlzdF9kZXN0cm95KGluZGljZXNfdGFibGVzX2xpc3QpOwotCQlwZ19mcmVlKGluZGljZXNfdGFi bGVzX2xpc3QpOwotCX0KLQogCVBhcmFsbGVsU2xvdHNUZXJtaW5hdGUoc2EpOwogCXBmcmVlKHNh KTsKIApAQCAtNzA1LDYxICs2NjMsOCBAQCBnZXRfcGFyYWxsZWxfb2JqZWN0X2xpc3QoUEdjb25u ICpjb25uLCBSZWluZGV4VHlwZSB0eXBlLAogCQkJfQogCQkJYnJlYWs7CiAKLQkJY2FzZSBSRUlO REVYX0lOREVYOgotCQkJewotCQkJCVNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsOwotCi0JCQkJ QXNzZXJ0KHVzZXJfbGlzdCAhPSBOVUxMKTsKLQotCQkJCS8qCi0JCQkJICogU3RyYWlnaHQtZm9y d2FyZCBpbmRleC1sZXZlbCBSRUlOREVYIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aAotCQkJCSAqIG11 bHRpcGxlIGpvYnMgYXMgd2UgY2Fubm90IGNvbnRyb2wgdGhlIGNvbmN1cnJlbnQKLQkJCQkgKiBw cm9jZXNzaW5nIG9mIG11bHRpcGxlIGluZGV4ZXMgZGVwZW5kaW5nIG9uIHRoZSBzYW1lCi0JCQkJ ICogcmVsYXRpb24uICBCdXQgd2UgY2FuIGV4dHJhY3QgdGhlIGFwcHJvcHJpYXRlIHRhYmxlIG5h bWUKLQkJCQkgKiBmb3IgdGhlIGluZGV4IGFuZCBwdXQgUkVJTkRFWCBJTkRFWCBjb21tYW5kcyBp bnRvIGRpZmZlcmVudAotCQkJCSAqIGpvYnMsIGFjY29yZGluZyB0byB0aGUgcGFyZW50IHRhYmxl cy4KLQkJCQkgKgotCQkJCSAqIFdlIHdpbGwgb3JkZXIgdGhlIHJlc3VsdHMgdG8gZ3JvdXAgdGhl IHNhbWUgdGFibGVzCi0JCQkJICogdG9nZXRoZXIuIFdlIGZldGNoIGluZGV4IG5hbWVzIGFzIHdl bGwgdG8gYnVpbGQgYSBuZXcgbGlzdAotCQkJCSAqIG9mIHRoZW0gd2l0aCBtYXRjaGluZyBvcmRl ci4KLQkJCQkgKi8KLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY2F0YWxvZ19xdWVyeSwKLQkJ CQkJCQkJCSAiU0VMRUNUIHQucmVsbmFtZSwgbi5uc3BuYW1lLCBpLnJlbG5hbWVcbiIKLQkJCQkJ CQkJCSAiRlJPTSBwZ19jYXRhbG9nLnBnX2luZGV4IHhcbiIKLQkJCQkJCQkJCSAiSk9JTiBwZ19j YXRhbG9nLnBnX2NsYXNzIHQgT04gdC5vaWQgPSB4LmluZHJlbGlkXG4iCi0JCQkJCQkJCQkgIkpP SU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBpIE9OIGkub2lkID0geC5pbmRleHJlbGlkXG4iCi0JCQkJ CQkJCQkgIkxFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gdC5y ZWxuYW1lc3BhY2VcbiIKLQkJCQkJCQkJCSAiV0hFUkUgeC5pbmRleHJlbGlkIE9QRVJBVE9SKHBn X2NhdGFsb2cuPSkgQU5ZKEFSUkFZWyciKTsKLQotCQkJCWZvciAoY2VsbCA9IHVzZXJfbGlzdC0+ aGVhZDsgY2VsbDsgY2VsbCA9IGNlbGwtPm5leHQpCi0JCQkJewotCQkJCQlpZiAoY2VsbCAhPSB1 c2VyX2xpc3QtPmhlYWQpCi0JCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY2F0YWxvZ19xdWVy eSwgIicsICciKTsKLQotCQkJCQlhcHBlbmRRdWFsaWZpZWRSZWxhdGlvbigmY2F0YWxvZ19xdWVy eSwgY2VsbC0+dmFsLCBjb25uLCBlY2hvKTsKLQkJCQl9Ci0KLQkJCQkvKgotCQkJCSAqIE9yZGVy IHRhYmxlcyBieSB0aGUgc2l6ZSBvZiBpdHMgZ3JlYXRlc3QgaW5kZXguICBXaXRoaW4gdGhlCi0J CQkJICogdGFibGUsIG9yZGVyIGluZGV4ZXMgYnkgdGhlaXIgc2l6ZXMuCi0JCQkJICovCi0JCQkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNhdGFsb2dfcXVlcnksCi0JCQkJCQkJCQkgIiddOjpwZ19j YXRhbG9nLnJlZ2NsYXNzW10pXG4iCi0JCQkJCQkJCQkgIk9SREVSIEJZIG1heChpLnJlbHBhZ2Vz KSBPVkVSIFxuIgotCQkJCQkJCQkJICIgICAgKFBBUlRJVElPTiBCWSBuLm5zcG5hbWUsIHQucmVs bmFtZSksXG4iCi0JCQkJCQkJCQkgIiAgbi5uc3BuYW1lLCB0LnJlbG5hbWUsIGkucmVscGFnZXM7 XG4iKTsKLQotCQkJCS8qCi0JCQkJICogV2UncmUgZ29pbmcgdG8gcmUtb3JkZXIgdGhlIHVzZXJf bGlzdCB0byBtYXRjaCB0aGUgb3JkZXIgb2YKLQkJCQkgKiB0YWJsZXMuICBTbywgZW1wdHkgdGhl IHVzZXJfbGlzdCB0byBmaWxsIGl0IGZyb20gdGhlIHF1ZXJ5Ci0JCQkJICogcmVzdWx0LgotCQkJ CSAqLwotCQkJCXNpbXBsZV9zdHJpbmdfbGlzdF9kZXN0cm95KHVzZXJfbGlzdCk7Ci0JCQkJdXNl cl9saXN0LT5oZWFkID0gdXNlcl9saXN0LT50YWlsID0gTlVMTDsKLQkJCX0KLQkJCWJyZWFrOwot CiAJCWNhc2UgUkVJTkRFWF9TWVNURU06CisJCWNhc2UgUkVJTkRFWF9JTkRFWDoKIAkJY2FzZSBS RUlOREVYX1RBQkxFOgogCQkJQXNzZXJ0KGZhbHNlKTsKIAkJCWJyZWFrOwpAQCAtNzkxLDIxICs2 OTYsNiBAQCBnZXRfcGFyYWxsZWxfb2JqZWN0X2xpc3QoUEdjb25uICpjb25uLCBSZWluZGV4VHlw ZSB0eXBlLAogCiAJCXNpbXBsZV9zdHJpbmdfbGlzdF9hcHBlbmQodGFibGVzLCBidWYuZGF0YSk7 CiAJCXJlc2V0UFFFeHBCdWZmZXIoJmJ1Zik7Ci0KLQkJaWYgKHR5cGUgPT0gUkVJTkRFWF9JTkRF WCkKLQkJewotCQkJLyoKLQkJCSAqIEZvciBpbmRleC1sZXZlbCBSRUlOREVYLCByZWJ1aWxkIHRo ZSBsaXN0IG9mIGluZGV4ZXMgdG8gbWF0Y2gKLQkJCSAqIHRoZSBvcmRlciBvZiB0YWJsZXMgbGlz dC4KLQkJCSAqLwotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwKLQkJCQkJCQkJIGZtdFF1 YWxpZmllZElkRW5jKFBRZ2V0dmFsdWUocmVzLCBpLCAxKSwKLQkJCQkJCQkJCQkJCSAgIFBRZ2V0 dmFsdWUocmVzLCBpLCAyKSwKLQkJCQkJCQkJCQkJCSAgIFBRY2xpZW50RW5jb2RpbmcoY29ubikp KTsKLQotCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCh1c2VyX2xpc3QsIGJ1Zi5kYXRhKTsK LQkJCXJlc2V0UFFFeHBCdWZmZXIoJmJ1Zik7Ci0JCX0KIAl9CiAJdGVybVBRRXhwQnVmZmVyKCZi dWYpOwogCVBRY2xlYXIocmVzKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vc2NyaXB0cy90LzA5MF9y ZWluZGV4ZGIucGwgYi9zcmMvYmluL3NjcmlwdHMvdC8wOTBfcmVpbmRleGRiLnBsCmluZGV4IDM3 OGY4YWQ3YTU4Li4yYzRiNjQxYzliMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9zY3JpcHRzL3QvMDkw X3JlaW5kZXhkYi5wbAorKysgYi9zcmMvYmluL3NjcmlwdHMvdC8wOTBfcmVpbmRleGRiLnBsCkBA IC0yNjMsMTEgKzI2Myw5IEBAICRub2RlLT5zYWZlX3BzcWwoCiAJQ1JFQVRFIFNDSEVNQSBzMTsK IAlDUkVBVEUgVEFCTEUgczEudDEoaWQgaW50ZWdlcik7CiAJQ1JFQVRFIElOREVYIE9OIHMxLnQx KGlkKTsKLQlDUkVBVEUgSU5ERVggaTEgT04gczEudDEoaWQpOwogCUNSRUFURSBTQ0hFTUEgczI7 CiAJQ1JFQVRFIFRBQkxFIHMyLnQyKGlkIGludGVnZXIpOwogCUNSRUFURSBJTkRFWCBPTiBzMi50 MihpZCk7Ci0JQ1JFQVRFIElOREVYIGkyIE9OIHMyLnQyKGlkKTsKIAktLSBlbXB0eSBzY2hlbWEK IAlDUkVBVEUgU0NIRU1BIHMzOwogfCk7CkBAIC0yNzksMTEgKzI3NywxMSBAQCAkbm9kZS0+Y29t bWFuZF9vaygKIAlbCiAJCSdyZWluZGV4ZGInLAogCQknLS1qb2JzJyA9PiAnMicsCi0JCSctLWlu ZGV4JyA9PiAnczEuaTEnLAotCQknLS1pbmRleCcgPT4gJ3MyLmkyJywKKwkJJy0taW5kZXgnID0+ ICdzMS50MV9pZF9pZHgnLAorCQknLS1pbmRleCcgPT4gJ3MyLnQyX2lkX2lkeCcsCiAJCSdwb3N0 Z3JlcycsCiAJXSwKLQkncGFyYWxsZWwgcmVpbmRleGRiIGZvciBpbmRpY2VzJyk7CisJJ2ZhaWxv dmVyIGZvciBwYXJhbGxlbCByZWluZGV4ZGIgZm9yIGluZGljZXMnKTsKICMgTm90ZSB0aGF0IHRo ZSBvcmRlcmluZyBvZiB0aGUgY29tbWFuZHMgaXMgbm90IHN0YWJsZSwgc28gdGhlIHNlY29uZAog IyBjb21tYW5kIGZvciBzMi50MiBpcyBub3QgY2hlY2tlZCBhZnRlci4KICRub2RlLT5pc3N1ZXNf c3FsX2xpa2UoCi0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --0000000000008f8052062fdff689--