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 1t0RY9-00BSsJ-RH for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Oct 2024 20:20:18 +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 1t0RY7-00GxrW-Mz for pgsql-hackers@arkaria.postgresql.org; Mon, 14 Oct 2024 20:20:16 +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 1t0RY7-00GxqP-70 for pgsql-hackers@lists.postgresql.org; Mon, 14 Oct 2024 20:20:15 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1t0RY3-00140D-QP for pgsql-hackers@postgresql.org; Mon, 14 Oct 2024 20:20:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1728937212; bh=i2ZiYlXgCXgT5WOXZJPSsCWa8ctrISs/1CQcloNtIk8=; h=Message-ID:Date:User-Agent:Subject:To:Cc:References:From: In-Reply-To:From; b=sL0R2/G+8D42jTvwHM+zxR7NCoi3zKPrRfNGrj3C4QtStpqPGEK0FVb980lpI5fNy jy/FJP7hL0HL22em3cV0Nm+d6iSx4T1RQ4qPm37ied3LSx5FzdDMHMl+Iq3xoUHFtj 6RMVcP8Zq1ExOHTuVWfV3xgMzOkZaUFKgYxAPrXbhY8XMyItGRkzAqfl6kd0KSTXBT 6DPbSlowXeRuCC9MkUEAHJUepo1ry2SS4qW9gVCgzAHLXfhe5HhNVORqCUc+K3nD8+ AsDu4gvRyC28m3NtEGIpAHMLWPYtNzqA1hDuyUG70UfFUP8ZpCk3OujCmljTVFUT/1 gsLlwB5Z39iJA== Received: from [172.30.33.154] (unknown [172.30.33.154]) (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) (Client did not present a certificate) (Authenticated sender: a.rybakina@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 0A1A860381; Mon, 14 Oct 2024 23:20:12 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------RKkNa67p7iu1df8e9jgTLBhi" Message-ID: Date: Mon, 14 Oct 2024 23:20:11 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Logging parallel worker draught To: =?UTF-8?Q?Benoit_Lobr=C3=A9au?= , pgsql-hackers Cc: "Imseih (AWS), Sami" , Alvaro Herrera , Robert Haas , Amit Kapila , Melanie Plageman , "Andrey M. Borodin" References: <10D5C31A-A303-4440-BCA2-921440A9E1CC@amazon.com> <202310111011.lyo66rk7k7pu@alvherre.pgsql> <9E9E69BD-BABB-49BB-8B69-61939179F20D@amazon.com> <11e34b80-b0a6-e2e4-1606-1f5077379a34@dalibo.com> <0d08b978-10cb-4512-bcef-ca1f192049ab@enterprisedb.com> <0b7ef57e-bf30-440b-9478-d8f587f2637c@dalibo.com> <2cccd814-d7b3-4c9a-a66a-6df4c45fd95e@enterprisedb.com> <17f9faf1-4edb-46d0-80ed-91bba16423a3@dalibo.com> <7ECC97AE-2670-4792-BC6F-FD91B23F8E8C@yandex-team.ru> <39ac8951-6b99-469b-b9f1-2791efe43fbd@dalibo.com> <8123423a-f041-4f4c-a771-bfd96ab235b0@dalibo.com> <2a8e9e1c-0f05-4ebd-9a4d-d023d26c0def@dalibo.com> <04e6d7e2-f67a-438c-bc11-9354ab64ef1f@dalibo.com> Content-Language: en-US From: Alena Rybakina In-Reply-To: X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2024/10/14 19:21:00 #26753819 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 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. --------------RKkNa67p7iu1df8e9jgTLBhi Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 28.08.2024 15:58, Benoit Lobréau wrote: > Hi, > > Here is a new version of the patch. Sorry for the long delay, I was > hit by a motivation drought and was quite busy otherwise. > > The guc is now called `log_parallel_workers` and has three possible > values: > > * "none": disables logging > * "all": logs parallel worker info for all parallel queries or utilities > * "failure": logs only when the number of parallel workers planned > couldn't be reached. > > For this, I added several members to the EState struct. > > Each gather node / gather merge node updates the values and the > offending queries are displayed during standard_ExecutorEnd. > > For CREATE INDEX / REINDEX on btree and brin, I check the parallel > context struct (pcxt) during _bt_end_parallel() or > _brin_end_parallel() and display a log message when needed. > > For vacuum, I do the same in parallel_vacuum_end(). > > I added some information to the error message for parallel queries as > an experiment. I find it useful, but it can be removed, if you re not > convinced. > > 2024-08-27 15:59:11.089 CEST [54585] LOG:  1 parallel nodes planned (1 > obtained all their workers, 0 obtained none), 2 workers planned (2 > workers launched) > 2024-08-27 15:59:11.089 CEST [54585] STATEMENT:  EXPLAIN (ANALYZE) >         SELECT i, avg(j) FROM test_pql GROUP BY i; > > 2024-08-27 15:59:14.006 CEST [54585] LOG:  2 parallel nodes planned (0 > obtained all their workers, 1 obtained none), 4 workers planned (1 > workers launched) > 2024-08-27 15:59:14.006 CEST [54585] STATEMENT:  EXPLAIN (ANALYZE) >         SELECT i, avg(j) FROM test_pql GROUP BY i >         UNION >         SELECT i, avg(j) FROM test_pql GROUP BY i; > > For CREATE INDEX / REDINDEX / VACUUMS: > > 2024-08-27 15:58:59.769 CEST [54521] LOG:  1 workers planned (0 > workers launched) > 2024-08-27 15:58:59.769 CEST [54521] STATEMENT:  REINDEX TABLE test_pql; > > Do you think this is better? > > I am not sure if a struct is needed to store the es_nworkers* and if > the modification I did to parallel.h is ok. > > Thanks to: Jehan-Guillaume de Rorthais, Guillaume Lelarge and Franck > Boudehen for the help and motivation boost. Hi! I think it's a good idea to log this. I suggest some changes that might improve your patch. 1. I think you should rewrite the first statement of the documentation about parameter as follows: Controls a log message about the number of workers produced during an execution of the parallel query or utility statement. 2. I think you can transfer nworkers_to_launch and nworkers_launched vacuum parameters in the ParallelContext struct. 3. I think you should write the logging check condition in an independent function and provide necessary parameters for that. To be honest if the parameters weren't stored in a different struct for parallel queries, I would have put it in a macro. I attached the diff file including my proposals. -- Regards, Alena Rybakina Postgres Professional --------------RKkNa67p7iu1df8e9jgTLBhi Content-Type: text/plain; charset=UTF-8; name="parallel_log_workers.no-cfbot" Content-Disposition: attachment; filename="parallel_log_workers.no-cfbot" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9j b25maWcuc2dtbAppbmRleCA1YzA0YTI3ZWI2Ni4uMWUyZmFkZmZhZjEgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKQEAgLTc3MDQsOCArNzcwNCw4IEBAIGxvZ19saW5lX3ByZWZpeCA9ICclbSBbJXBdICVx JXVAJWQvJWEgJwogICAgICAgPC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAgIDxw YXJhPgotICAgICAgICBDb250cm9scyB3aGV0aGVyIGEgbG9nIG1lc3NhZ2UgaXMgcHJvZHVj ZWQgdG8gZGlzcGxheSBpbmZvcm1hdGlvbiBvbiB0aGUgbnVtYmVyIG9mCi0gICAgICAgIHdv cmtlcnMgc3Bhd25lZCB3aGVuIGEgcGFyYWxsZWwgcXVlcnkgb3IgdXRpbGl0eSBpcyBleGVj dXRlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMKKyAgICAgICAgQ29udHJvbHMgd2hldGhlciBh IGxvZyBtZXNzYWdlIGFib3V0IHRoZSBudW1iZXIgb2Ygd29ya2VycyBwcm9kdWNlZCBkdXJp bmcgYW4KKyAgICAgICAgZXhlY3V0aW9uIG9mIHRoZSBwYXJhbGxlbCBxdWVyeSBvciB1dGls aXR5IHN0YXRlbWVudC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMKICAgICAgICAgPGxpdGVyYWw+ bm9uZTwvbGl0ZXJhbD4gd2hpY2ggZGlzYWJsZXMgbG9nZ2luZy4gPGxpdGVyYWw+YWxsPC9s aXRlcmFsPiBkaXNwbGF5cwogICAgICAgICBpbmZvcm1hdGlvbiBmb3IgYWxsIHBhcmFsbGVs IHF1ZXJpZXMsIHdoZXJlYXMgPGxpdGVyYWw+ZmFpbHVyZXM8L2xpdGVyYWw+IGRpc3BsYXlz CiAgICAgICAgIGluZm9ybWF0aW9uIG9ubHkgd2hlbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMg bGF1bmNoZWQgaXMgbG93ZXIgdGhhbiB0aGUgbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvYnJpbi9i cmluLmMKaW5kZXggZmRmYmJjN2RjNDIuLjNlZDEwYzdmOGEwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvYnJpbi9icmluLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2Jy aW4vYnJpbi5jCkBAIC0yNTQ0LDEwICsyNTQ0LDkgQEAgX2JyaW5fZW5kX3BhcmFsbGVsKEJy aW5MZWFkZXIgKmJyaW5sZWFkZXIsIEJyaW5CdWlsZFN0YXRlICpzdGF0ZSkKIAkvKiBTaHV0 ZG93biB3b3JrZXIgcHJvY2Vzc2VzICovCiAJV2FpdEZvclBhcmFsbGVsV29ya2Vyc1RvRmlu aXNoKGJyaW5sZWFkZXItPnBjeHQpOwogCi0JaWYgKChsb2dfcGFyYWxsZWxfd29ya2VycyA9 PSBMT0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYKLQkJIGJyaW5sZWFkZXItPnBjeHQtPm53 b3JrZXJzX3RvX2xhdW5jaCA+IDApIHx8Ci0JCShsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBM T0dfUEFSQUxMRUxfV09SS0VSU19GQUlMVVJFICYmCi0JCSBicmlubGVhZGVyLT5wY3h0LT5u d29ya2Vyc190b19sYXVuY2ggPiBicmlubGVhZGVyLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hl ZCkpCisJaWYgKExvZ2dpbmdQYXJhbGxlbFdvcmtlcnMobG9nX3BhcmFsbGVsX3dvcmtlcnMs CisJCQkJCQkJICAgYnJpbmxlYWRlci0+cHZzLT5wY3h0LT5wYXJhbGxlbF93b3JrZXJzX3Rv X2xhdW5jaCwKKwkJCQkJCQkgICBicmlubGVhZGVyLT5wdnMtPnBjeHQtPnBhcmFsbGVsX3dv cmtlcnNfbGF1bmNoZWQpKQogCQllbG9nKExPRywgIiVpIHdvcmtlcnMgcGxhbm5lZCAoJWkg d29ya2VycyBsYXVuY2hlZCkiLAogCQkJYnJpbmxlYWRlci0+cGN4dC0+bndvcmtlcnNfdG9f bGF1bmNoLAogCQkJYnJpbmxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnRzb3J0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvbmJ0cmVlL25idHNvcnQuYwppbmRleCBlMzFiZDhlMjIzZS4uODVmZWRl ODlkOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0c29ydC5jCkBAIC0xNjE1LDEw ICsxNjE1LDkgQEAgX2J0X2VuZF9wYXJhbGxlbChCVExlYWRlciAqYnRsZWFkZXIpCiAJLyog U2h1dGRvd24gd29ya2VyIHByb2Nlc3NlcyAqLwogCVdhaXRGb3JQYXJhbGxlbFdvcmtlcnNU b0ZpbmlzaChidGxlYWRlci0+cGN4dCk7CiAKLQlpZiAoKGxvZ19wYXJhbGxlbF93b3JrZXJz ID09IExPR19QQVJBTExFTF9XT1JLRVJTX0FMTCAmJgotCQkgYnRsZWFkZXItPnBjeHQtPm53 b3JrZXJzX3RvX2xhdW5jaCA+IDApIHx8Ci0JCShsb2dfcGFyYWxsZWxfd29ya2VycyA9PSBM T0dfUEFSQUxMRUxfV09SS0VSU19GQUlMVVJFICYmCi0JCSBidGxlYWRlci0+cGN4dC0+bndv cmtlcnNfdG9fbGF1bmNoID4gYnRsZWFkZXItPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkKSkK KwlpZiAoTG9nZ2luZ1BhcmFsbGVsV29ya2Vycyhsb2dfcGFyYWxsZWxfd29ya2VycywKKwkJ CQkJCQkgICBidGxlYWRlci0+cHZzLT5wY3h0LT5wYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5j aCwKKwkJCQkJCQkgICBidGxlYWRlci0+cHZzLT5wY3h0LT5wYXJhbGxlbF93b3JrZXJzX2xh dW5jaGVkKSkKIAkJZWxvZyhMT0csICIlaSB3b3JrZXJzIHBsYW5uZWQgKCVpIHdvcmtlcnMg bGF1bmNoZWQpIiwKIAkJCWJ0bGVhZGVyLT5wY3h0LT5ud29ya2Vyc190b19sYXVuY2gsCiAJ CQlidGxlYWRlci0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3BhcmFsbGVsLmMKaW5kZXggZDRlODRhYWJhYzcuLmQzZTM3OTE1ZmRmIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMKQEAgLTE2MjcsMyArMTYy NywxNyBAQCBMb29rdXBQYXJhbGxlbFdvcmtlckZ1bmN0aW9uKGNvbnN0IGNoYXIgKmxpYnJh cnluYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIAlyZXR1cm4gKHBhcmFsbGVsX3dvcmtl cl9tYWluX3R5cGUpCiAJCWxvYWRfZXh0ZXJuYWxfZnVuY3Rpb24obGlicmFyeW5hbWUsIGZ1 bmNuYW1lLCB0cnVlLCBOVUxMKTsKIH0KKworLyoKKyAqIFRoZSBmdW5jdGlvbiBkZXRlcm1p bmVzIG9mIGxvZ2dpbmcgaW5mb3JtYXRpb24KKyAqIGFib3V0IHdvcmtlcnMuCisqLworTG9n Z2luZ1BhcmFsbGVsV29ya2VycyhpbnQgbG9nX3BhcmFsbGVsX3dvcmtlcnMsCisJCQkJCSAg IGludCBwYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCwKKwkJCQkJICAgaW50IHBhcmFsbGVs X3dvcmtlcnNfbGF1bmNoZWQpCit7CisJcmV0dXJuICgobG9nX3BhcmFsbGVsX3dvcmtlcnMg PT0gTE9HX1BBUkFMTEVMX1dPUktFUlNfQUxMICYmCisJCSAJcGFyYWxsZWxfd29ya2Vyc190 b19sYXVuY2ggPiAwKSB8fAorCQkgICAobG9nX3BhcmFsbGVsX3dvcmtlcnMgPT0gTE9HX1BB UkFMTEVMX1dPUktFUlNfRkFJTFVSRSAmJgorCQkgCXBhcmFsbGVsX3dvcmtlcnNfdG9fbGF1 bmNoICE9IHBhcmFsbGVsX3dvcmtlcnNfbGF1bmNoZWQpKTsKK30KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1w YXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRl eCBlMjA3YTZiN2Q5MS4uYmFlNjRiMDdlOWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFj dXVtcGFyYWxsZWwuYwpAQCAtMjA4LDkgKzIwOCw2IEBAIHN0cnVjdCBQYXJhbGxlbFZhY3V1 bVN0YXRlCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfY2xlYW51cDsKIAlpbnQJCQluaW5k ZXhlc19wYXJhbGxlbF9jb25kY2xlYW51cDsKIAotCWludAkJCW53b3JrZXJzX3RvX2xhdW5j aDsKLQlpbnQJCQlud29ya2Vyc19sYXVuY2hlZDsKLQogCS8qIEJ1ZmZlciBhY2Nlc3Mgc3Ry YXRlZ3kgdXNlZCBieSBsZWFkZXIgcHJvY2VzcyAqLwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5 IGJzdHJhdGVneTsKIApAQCAtMzY1LDggKzM2Miw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0 KFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAkJaWYg KCh2YWNvcHRpb25zICYgVkFDVVVNX09QVElPTl9QQVJBTExFTF9DT05EX0NMRUFOVVApICE9 IDApCiAJCQlwdnMtPm5pbmRleGVzX3BhcmFsbGVsX2NvbmRjbGVhbnVwKys7CiAJfQotCXB2 cy0+bndvcmtlcnNfdG9fbGF1bmNoID0gMDsKLQlwdnMtPm53b3JrZXJzX2xhdW5jaGVkID0g MDsKKwlwY3h0LT5ud29ya2Vyc190b19sYXVuY2ggPSAwOworCXBjeHQtPm53b3JrZXJzX2xh dW5jaGVkID0gMDsKIAogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgUEFSQUxMRUxfVkFD VVVNX0tFWV9JTkRFWF9TVEFUUywgaW5kc3RhdHMpOwogCXB2cy0+aW5kc3RhdHMgPSBpbmRz dGF0czsKQEAgLTQ0MywxMyArNDQwLDEyIEBAIHBhcmFsbGVsX3ZhY3V1bV9lbmQoUGFyYWxs ZWxWYWN1dW1TdGF0ZSAqcHZzLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKippc3RhdHMpCiB7 CiAJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2VyKCkpOwogCi0JaWYgKChsb2dfcGFyYWxsZWxf d29ya2VycyA9PSBMT0dfUEFSQUxMRUxfV09SS0VSU19BTEwgJiYKLQkJIHB2cy0+bndvcmtl cnNfdG9fbGF1bmNoID4gMCkgfHwKLQkJKGxvZ19wYXJhbGxlbF93b3JrZXJzID09IExPR19Q QVJBTExFTF9XT1JLRVJTX0ZBSUxVUkUgJiYKLQkJIHB2cy0+bndvcmtlcnNfdG9fbGF1bmNo ID4gcHZzLT5ud29ya2Vyc19sYXVuY2hlZCkpCisJaWYgKExvZ2dpbmdQYXJhbGxlbFdvcmtl cnMobG9nX3BhcmFsbGVsX3dvcmtlcnMsCisJCQkJCQkJICAgcHZzLT5wY3h0LT5wYXJhbGxl bF93b3JrZXJzX3RvX2xhdW5jaCwKKwkJCQkJCQkgICBwdnMtPnBjeHQtPnBhcmFsbGVsX3dv cmtlcnNfbGF1bmNoZWQpKQogCQllbG9nKExPRywgIiVpIHdvcmtlcnMgcGxhbm5lZCB0byBi ZSBsYXVuY2hlZCBmb3IgaW5kZXggY2xlYW51cCBhbmQgYnVsa2RlbGV0ZSAoJWkgd29ya2Vy cyBsYXVuY2hlZCkiLAotCQkJcHZzLT5ud29ya2Vyc190b19sYXVuY2gsCi0JCQlwdnMtPm53 b3JrZXJzX2xhdW5jaGVkKTsKKwkJCXB2cy0+cGN4dC0+bndvcmtlcnNfdG9fbGF1bmNoLAor CQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CiAKIAkvKiBDb3B5IHRoZSB1cGRh dGVkIHN0YXRpc3RpY3MgKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IHB2cy0+bmluZGV4ZXM7 IGkrKykKQEAgLTc1NCw4ICs3NTAsOCBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1faW5kZXhfc2Nhbgog CQlmb3IgKGludCBpID0gMDsgaSA8IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7IGkr KykKIAkJCUluc3RyQWNjdW1QYXJhbGxlbFF1ZXJ5KCZwdnMtPmJ1ZmZlcl91c2FnZVtpXSwg JnB2cy0+d2FsX3VzYWdlW2ldKTsKIAotCQlwdnMtPm53b3JrZXJzX3RvX2xhdW5jaCArPSBw dnMtPnBjeHQtPm53b3JrZXJzX3RvX2xhdW5jaDsKLQkJcHZzLT5ud29ya2Vyc19sYXVuY2hl ZCArPSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOworCQlwdnMtPnBjeHQtPm53b3Jr ZXJzX3RvX2xhdW5jaCArPSBwdnMtPnBjeHQtPm53b3JrZXJzX3RvX2xhdW5jaDsKKwkJcHZz LT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCArPSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5j aGVkOwogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA2NjYzZmVh N2IxMi4uYjg1ZDY3OWI3ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNDgz LDEwICs0ODMsOSBAQCBzdGFuZGFyZF9FeGVjdXRvckVuZChRdWVyeURlc2MgKnF1ZXJ5RGVz YykKIAogCUFzc2VydChlc3RhdGUgIT0gTlVMTCk7CiAKLQlpZiAoKGxvZ19wYXJhbGxlbF93 b3JrZXJzID09IExPR19QQVJBTExFTF9XT1JLRVJTX0FMTCAmJgotCQkgZXN0YXRlLT5lc19w YXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCA+IDApIHx8Ci0JCShsb2dfcGFyYWxsZWxfd29y a2VycyA9PSBMT0dfUEFSQUxMRUxfV09SS0VSU19GQUlMVVJFICYmCi0JCSBlc3RhdGUtPmVz X3BhcmFsbGVsX3dvcmtlcnNfdG9fbGF1bmNoICE9IGVzdGF0ZS0+ZXNfcGFyYWxsZWxfd29y a2Vyc19sYXVuY2hlZCkpCisJaWYgKExvZ2dpbmdQYXJhbGxlbFdvcmtlcnMobG9nX3BhcmFs bGVsX3dvcmtlcnMsCisJCQkJCQkJICAgZXN0YXRlLT5lc19wYXJhbGxlbF93b3JrZXJzX3Rv X2xhdW5jaCwKKwkJCQkJCQkgICBlc3RhdGUtPmVzX3BhcmFsbGVsX3dvcmtlcnNfbGF1bmNo ZWQpKQogCQllbG9nKExPRywgIiVpIHBhcmFsbGVsIG5vZGVzIHBsYW5uZWQgKCVpIG9idGFp bmVkIGFsbCB0aGVpciB3b3JrZXJzLCAlaSBvYnRhaW5lZCBub25lKSwgIgogCQkJCSAgIiVp IHdvcmtlcnMgcGxhbm5lZCB0byBiZSBsYXVuY2hlZCAoJWkgd29ya2VycyBsYXVuY2hlZCki LAogCQkJZXN0YXRlLT5lc19wYXJhbGxlbF9ub2RlcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9wYXJhbGxlbC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVsLmgK aW5kZXggZWQzM2U1NDVkNzYuLjAwYWFkMWU3NDJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvcGFyYWxsZWwuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwu aApAQCAtOTMsNCArOTMsOCBAQCBleHRlcm4gdm9pZCBQYXJhbGxlbFdvcmtlclJlcG9ydExh c3RSZWNFbmQoWExvZ1JlY1B0ciBsYXN0X3hsb2dfZW5kKTsKIAogZXh0ZXJuIHZvaWQgUGFy YWxsZWxXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAorZXh0ZXJuIGJvb2wgTG9nZ2lu Z1BhcmFsbGVsV29ya2VycyhpbnQgbG9nX3BhcmFsbGVsX3dvcmtlcnMsCisJCQkJCQkJCSAg IGludCBwYXJhbGxlbF93b3JrZXJzX3RvX2xhdW5jaCwKKwkJCQkJCQkJICAgaW50IHBhcmFs bGVsX3dvcmtlcnNfbGF1bmNoZWQpOworCiAjZW5kaWYJCQkJCQkJLyogUEFSQUxMRUxfSCAq Lwo= --------------RKkNa67p7iu1df8e9jgTLBhi--