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 1wLPg2-001lRN-2J for pgsql-hackers@arkaria.postgresql.org; Fri, 08 May 2026 18:11:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wLPg0-00Anx9-11 for pgsql-hackers@arkaria.postgresql.org; Fri, 08 May 2026 18:11:52 +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.96) (envelope-from ) id 1wLPfz-00Anx1-36 for pgsql-hackers@lists.postgresql.org; Fri, 08 May 2026 18:11:52 +0000 Received: from mail-wr1-x42d.google.com ([2a00:1450:4864:20::42d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wLPfx-00000001Glh-4BaW for pgsql-hackers@lists.postgresql.org; Fri, 08 May 2026 18:11:51 +0000 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-448528f4e69so1495593f8f.3 for ; Fri, 08 May 2026 11:11:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778263908; x=1778868708; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=0Vend79VVnjn+CM4KxqoDsxadfMWZbRpOevwmlPKmVA=; b=VcS+Ol0ZVe5hn44mcuQnH/vJ6FfZspVYuQY2Xc3VwTwa7UqRP5Qex3xSm9QVffTlFz DHyxARjRB6sg68KXYvHE/96OvtGg/m6xAaobdanc5+aQ8z89gYyk35tomNdY1j31Hkde tBDQhSceijBA+ATmAgMdx5kwO04YNIUnW4XoIr/mUHejhdcVAJs9+SbcFOddwETTj092 KPDggeT/cFQtO//gUg9fVuz1qPgAK4LudGG2FKC7RytFfgmXB8nJ6REv9TODFmonbPWC Ze1NSWVlPdSn2TSnKramNjWjjf+qEsOQjGepN+DqUqfaGLPql2+S7z/a5xg5pG35qbxz 8w1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778263908; x=1778868708; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=0Vend79VVnjn+CM4KxqoDsxadfMWZbRpOevwmlPKmVA=; b=QFhxLaMoKwqOeoNYUI6y+a2zACf6d88NYugL9K0OWpCJXJJ6TFUeHasp4kuXd/gbJM n3HSkO4EaRGv0xWI9bubNFrUihz02gu6X+2qvTfx2nUcJRYLkwE3lKYnYbp8B86Yo0W+ WHWFbfKuIb2zurbQX84ktHPQ/C+LjP0qblEGuQyP7U61WTbuZGtiTOKFslEHhGreLlo5 z5TVLJmAxn2Yr82Cjo4E68P1xJvjEPaal56u816XfjMM+Me6LDmgwmtT9GY1XUSN39Ve k10YdYj1v+us5+1ZCEO3aHyXgoaXTJNbD2npAgLNUBJSKSWWSrVg5NSxBnEjuvOWpAHf x+0Q== X-Gm-Message-State: AOJu0Yw6gTt1QUbT19UJmK2V0pdsjl6Xz76l5pCrL0b438dSDUahUjYl An9McIRd9eUNQEhyWcvh8FcAeUDwX1Vzc7rN8cb6u438C1iKZSHtF6JX X-Gm-Gg: Acq92OHsubDejQDPXUwyl4TpuYB0CkBoyhcIuN2RhEa/4kNsby+Mpi18yuUmXSRM5y1 QdPGM0lKAY6OcWKV/sqQj/txnf4sy5PU/SMb1IZAUcsNdFXN6hPnCGvIrzZk4JzvcFZMn/Mfst7 JxZyhDX8zLKk8KsQEOK7WtzPI0Wo/rs1IImUHdIp/amJGShlPbcHCd3aYp8TIfeukCgmo2QzOEm xfMgaZz/0F6VtdGFS1ySDOQzbxYySSD1wdkH86amAKaYEWRu4ADp8xfhZjsr0vsmpUsNP/4qkj1 JNRb77HBkweUBNVg0tpdqyHgwxUqQ0T5y0Bb0V5Oj6zpVNnGFEx3qpS1dlo65UPXDuko7beLDNx qABeUGK/MUxeMU99/7axP8zo2n/bRIoIvAiYYlNidDK1NoW42y+ffYkZdkwo8pahyp5SexRVdVr SudHEXLLhFWO5JXFGUDTk49+1srA+89wWtiU9AVKcmgwpE5EF8albeAM+SfKTjQY8XjxPl2VDzn 41W4rpNaPitedmuzXr8PNHA9qu8OEAZ9RpRQA== X-Received: by 2002:a05:6000:24c3:b0:441:2aee:d561 with SMTP id ffacd0b85a97d-45462c342f0mr6017287f8f.28.1778263908204; Fri, 08 May 2026 11:11:48 -0700 (PDT) Received: from [192.168.4.165] (host-2-98-198-223.as13285.net. [2.98.198.223]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4549217b782sm5324394f8f.35.2026.05.08.11.11.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 08 May 2026 11:11:47 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------irsFSU090s5lhE1Nm5rPYqW0" Message-ID: <4eca7d9b-c611-4f1e-8eaf-67724484e3bc@gmail.com> Date: Fri, 8 May 2026 19:11:46 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: parallel data loading for pgbench -i To: lakshmi , "Hayato Kuroda (Fujitsu)" Cc: PostgreSQL Hackers , "tomas@vondra.me" , Heikki Linnakangas References: <4c1d0b97-a5f8-472c-afdd-bdeb09b93f33@gmail.com> <10868918-cdf9-49dc-99af-8e8ccd6e368c@gmail.com> Content-Language: en-GB From: Mircea Cadariu 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. --------------irsFSU090s5lhE1Nm5rPYqW0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hi Lakshmi and Hayato, Thanks a lot for your feedback. Attached for your consideration is v4, in which I address your remarks. -- Thanks, Mircea Cadariu --------------irsFSU090s5lhE1Nm5rPYqW0 Content-Type: text/plain; charset=UTF-8; name="v4-0001-pgbench-parallelize-account-loading-for-range-partit.patch" Content-Disposition: attachment; filename*0="v4-0001-pgbench-parallelize-account-loading-for-range-partit"; filename*1=".patch" Content-Transfer-Encoding: base64 RnJvbSA2MDk5ZjMwY2Y3OGIwZWQ4NjA4NjcwZmYwN2I4YTcxYjhjZjBkNDdjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNaXJjZWEgQ2FkYXJpdSA8Y2FkYXJpdS5taXJjZWFA Z21haWwuY29tPgpEYXRlOiBTdW4sIDMgTWF5IDIwMjYgMTY6NDI6MjAgKzAxMDAKU3ViamVj dDogW1BBVENIIHY0XSBwZ2JlbmNoOiBwYXJhbGxlbGl6ZSBhY2NvdW50IGxvYWRpbmcgZm9y IHJhbmdlLXBhcnRpdGlvbmVkCiB0YWJsZXMKCkluIGluaXQgbW9kZSB3aXRoIHJhbmdlIHBh cnRpdGlvbmluZywgLWogPiAxIGxvYWRzIHBnYmVuY2hfYWNjb3VudHMKaW4gcGFyYWxsZWwu ICBFYWNoIHdvcmtlciBjcmVhdGVzIGl0cyBhc3NpZ25lZCBwYXJ0aXRpb25zIGFzCnN0YW5k YWxvbmUgdGFibGVzLCBwb3B1bGF0ZXMgdGhlbSB3aXRoIENPUFkgRlJFRVpFLCBhbmQgdGhl IG1haW4KY29ubmVjdGlvbiBhdHRhY2hlcyB0aGVtIGFmdGVyd2FyZHMuCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ2JlbmNoLnNnbWwgICAgICAgICAgICAgICAgfCAgIDkgKwogc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYyAgICAgICAgICAgICAgICAgICAgfCAyNTggKysrKysrKysr KysrKysrKystLQogc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIu cGwgfCAgMjkgKysrCiAzIGZpbGVzIGNoYW5nZWQsIDI2OSBpbnNlcnRpb25zKCspLCAyNyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnYmVuY2guc2dt bCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sCmluZGV4IDJlNDAxZDFjZWIuLjM1 OTRiNzMxY2MgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdiZW5jaC5zZ21sCkBAIC0zODIsNiArMzgyLDExIEBA IHBnYmVuY2ggPG9wdGlvbmFsPiA8cmVwbGFjZWFibGU+b3B0aW9uczwvcmVwbGFjZWFibGU+ IDwvb3B0aW9uYWw+IDxyZXBsYWNlYWJsZT5kCiAgICAgICAgIHRoZSBzY2FsZWQgbnVtYmVy IG9mIGFjY291bnRzLgogICAgICAgICBEZWZhdWx0IGlzIDxsaXRlcmFsPjA8L2xpdGVyYWw+ LCBtZWFuaW5nIG5vIHBhcnRpdGlvbmluZy4KICAgICAgICA8L3BhcmE+CisgICAgICAgPHBh cmE+CisgICAgICAgIFdpdGggPG9wdGlvbj4tajwvb3B0aW9uPiBncmVhdGVyIHRoYW4gMSBh bmQKKyAgICAgICAgPG9wdGlvbj4tLXBhcnRpdGlvbi1tZXRob2Q9cmFuZ2U8L29wdGlvbj4s IHBhcnRpdGlvbnMgYXJlCisgICAgICAgIGxvYWRlZCBpbiBwYXJhbGxlbC4KKyAgICAgICA8 L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAt NTAyLDYgKzUwNywxMCBAQCBwZ2JlbmNoIDxvcHRpb25hbD4gPHJlcGxhY2VhYmxlPm9wdGlv bnM8L3JlcGxhY2VhYmxlPiA8L29wdGlvbmFsPiA8cmVwbGFjZWFibGU+ZAogICAgICAgICBD bGllbnRzIGFyZSBkaXN0cmlidXRlZCBhcyBldmVubHkgYXMgcG9zc2libGUgYW1vbmcgYXZh aWxhYmxlIHRocmVhZHMuCiAgICAgICAgIERlZmF1bHQgaXMgMS4KICAgICAgICA8L3BhcmE+ CisgICAgICAgPHBhcmE+CisgICAgICAgIEluIGluaXRpYWxpemF0aW9uIG1vZGUgKDxvcHRp b24+LWk8L29wdGlvbj4pLCA8b3B0aW9uPi1qPC9vcHRpb24+CisgICAgICAgIHNldHMgdGhl IG51bWJlciBvZiB0aHJlYWRzIHVzZWQgdG8gbG9hZCBwYXJ0aXRpb25zIGluIHBhcmFsbGVs LgorICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVu dHJ5PgogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jIGIvc3JjL2Jp bi9wZ2JlbmNoL3BnYmVuY2guYwppbmRleCAxZGFlOTE4Y2MwLi5hYTIxYjY1M2NlIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnYmVuY2gvcGdiZW5jaC5jCisrKyBiL3NyYy9iaW4vcGdiZW5j aC9wZ2JlbmNoLmMKQEAgLTQ4MTcsNiArNDgxNywzNCBAQCBpbml0RHJvcFRhYmxlcyhQR2Nv bm4gKmNvbikKIAkJCQkJICJwZ2JlbmNoX3RlbGxlcnMiKTsKIH0KIAorc3RhdGljIHZvaWQK K2FwcGVuZEFjY291bnRzUmFuZ2VGb3JWYWx1ZXMoUFFFeHBCdWZmZXJEYXRhICpxdWVyeSwg aW50IHApCit7CisJaW50NjQJCXBhcnRfc2l6ZSA9IChuYWNjb3VudHMgKiAoaW50NjQpIHNj YWxlICsgcGFydGl0aW9ucyAtIDEpIC8gcGFydGl0aW9uczsKKworCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIGZvciB2YWx1ZXMgZnJvbSAoIik7CisJaWYgKHAgPT0gMSkKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICJtaW52YWx1ZSIpOworCWVsc2UKKwkJYXBw ZW5kUFFFeHBCdWZmZXIocXVlcnksIElOVDY0X0ZPUk1BVCwgKHAgLSAxKSAqIHBhcnRfc2l6 ZSArIDEpOworCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiKSB0byAoIik7CisJaWYg KHAgPCBwYXJ0aXRpb25zKQorCQlhcHBlbmRQUUV4cEJ1ZmZlcihxdWVyeSwgSU5UNjRfRk9S TUFULCBwICogcGFydF9zaXplICsgMSk7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIm1heHZhbHVlIik7CisJYXBwZW5kUFFFeHBCdWZmZXJDaGFyKHF1ZXJ5LCAn KScpOworfQorCitzdGF0aWMgdm9pZAorZ2V0QWNjb3VudHNQYXJ0aXRpb25Sb3dzKGludCBw LCBpbnQ2NCAqc3RhcnRfcm93LCBpbnQ2NCAqZW5kX3JvdykKK3sKKwlpbnQ2NAkJdG90YWxf cm93cyA9IChpbnQ2NCkgbmFjY291bnRzICogc2NhbGU7CisJaW50NjQJCXBhcnRfc2l6ZSA9 ICh0b3RhbF9yb3dzICsgcGFydGl0aW9ucyAtIDEpIC8gcGFydGl0aW9uczsKKworCSpzdGFy dF9yb3cgPSAoaW50NjQpIChwIC0gMSkgKiBwYXJ0X3NpemU7CisJKmVuZF9yb3cgPSAocCA9 PSBwYXJ0aXRpb25zKSA/IHRvdGFsX3Jvd3MgOiAoaW50NjQpIHAgKiBwYXJ0X3NpemU7Cit9 CisKIC8qCiAgKiBDcmVhdGUgInBnYmVuY2hfYWNjb3VudHMiIHBhcnRpdGlvbnMgaWYgbmVl ZGVkLgogICoKQEAgLTQ4MzksMzMgKzQ4NjcsMTcgQEAgY3JlYXRlUGFydGl0aW9ucyhQR2Nv bm4gKmNvbikKIAl7CiAJCWlmIChwYXJ0aXRpb25fbWV0aG9kID09IFBBUlRfUkFOR0UpCiAJ CXsKLQkJCWludDY0CQlwYXJ0X3NpemUgPSAobmFjY291bnRzICogKGludDY0KSBzY2FsZSAr IHBhcnRpdGlvbnMgLSAxKSAvIHBhcnRpdGlvbnM7Ci0KLQkJCXByaW50ZlBRRXhwQnVmZmVy KCZxdWVyeSwKLQkJCQkJCQkgICJjcmVhdGUlcyB0YWJsZSBwZ2JlbmNoX2FjY291bnRzXyVk XG4iCi0JCQkJCQkJICAiICBwYXJ0aXRpb24gb2YgcGdiZW5jaF9hY2NvdW50c1xuIgotCQkJ CQkJCSAgIiAgZm9yIHZhbHVlcyBmcm9tICgiLAotCQkJCQkJCSAgdW5sb2dnZWRfdGFibGVz ID8gIiB1bmxvZ2dlZCIgOiAiIiwgcCk7Ci0KIAkJCS8qCiAJCQkgKiBGb3IgUkFOR0UsIHdl IHVzZSBvcGVuLWVuZGVkIHBhcnRpdGlvbnMgYXQgdGhlIGJlZ2lubmluZyBhbmQKIAkJCSAq IGVuZCB0byBhbGxvdyBhbnkgdmFsaWQgdmFsdWUgZm9yIHRoZSBwcmltYXJ5IGtleS4gIEFs dGhvdWdoIHRoZQogCQkJICogYWN0dWFsIG1pbmltdW0gYW5kIG1heGltdW0gdmFsdWVzIGNh biBiZSBkZXJpdmVkIGZyb20gdGhlCiAJCQkgKiBzY2FsZSwgaXQgaXMgbW9yZSBnZW5lcmlj IGFuZCB0aGUgcGVyZm9ybWFuY2UgaXMgYmV0dGVyLgogCQkJICovCi0JCQlpZiAocCA9PSAx KQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZxdWVyeSwgIm1pbnZhbHVlIik7Ci0JCQll bHNlCi0JCQkJYXBwZW5kUFFFeHBCdWZmZXIoJnF1ZXJ5LCBJTlQ2NF9GT1JNQVQsIChwIC0g MSkgKiBwYXJ0X3NpemUgKyAxKTsKLQotCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJnF1ZXJ5 LCAiKSB0byAoIik7Ci0KLQkJCWlmIChwIDwgcGFydGl0aW9ucykKLQkJCQlhcHBlbmRQUUV4 cEJ1ZmZlcigmcXVlcnksIElOVDY0X0ZPUk1BVCwgcCAqIHBhcnRfc2l6ZSArIDEpOwotCQkJ ZWxzZQotCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZxdWVyeSwgIm1heHZhbHVlIik7Ci0K LQkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcigmcXVlcnksICcpJyk7CisJCQlwcmludGZQUUV4 cEJ1ZmZlcigmcXVlcnksCisJCQkJCQkJICAiY3JlYXRlJXMgdGFibGUgcGdiZW5jaF9hY2Nv dW50c18lZFxuIgorCQkJCQkJCSAgIiAgcGFydGl0aW9uIG9mIHBnYmVuY2hfYWNjb3VudHMi LAorCQkJCQkJCSAgdW5sb2dnZWRfdGFibGVzID8gIiB1bmxvZ2dlZCIgOiAiIiwgcCk7CisJ CQlhcHBlbmRBY2NvdW50c1JhbmdlRm9yVmFsdWVzKCZxdWVyeSwgcCk7CiAJCX0KIAkJZWxz ZSBpZiAocGFydGl0aW9uX21ldGhvZCA9PSBQQVJUX0hBU0gpCiAJCQlwcmludGZQUUV4cEJ1 ZmZlcigmcXVlcnksCkBAIC00ODg5LDYgKzQ5MDEsNjIgQEAgY3JlYXRlUGFydGl0aW9ucyhQ R2Nvbm4gKmNvbikKIAl0ZXJtUFFFeHBCdWZmZXIoJnF1ZXJ5KTsKIH0KIAorc3RhdGljIHZv aWQKK2NyZWF0ZVN0YW5kYWxvbmVQYXJ0aXRpb25zKFBHY29ubiAqY29uLCBpbnQgcGFydF9z dGFydCwgaW50IHBhcnRfZW5kKQoreworCVBRRXhwQnVmZmVyRGF0YSBxdWVyeTsKKwljb25z dCBjaGFyICphaWRfdHlwZSA9IChzY2FsZSA+PSBTQ0FMRV8zMkJJVF9USFJFU0hPTEQpID8g ImJpZ2ludCIgOiAiaW50IjsKKworCUFzc2VydChwYXJ0aXRpb25zID4gMCk7CisJQXNzZXJ0 KHBhcnRpdGlvbl9tZXRob2QgPT0gUEFSVF9SQU5HRSk7CisKKwlpbml0UFFFeHBCdWZmZXIo JnF1ZXJ5KTsKKworCWZvciAoaW50IHAgPSBwYXJ0X3N0YXJ0OyBwIDw9IHBhcnRfZW5kOyBw KyspCisJeworCQlwcmludGZQUUV4cEJ1ZmZlcigmcXVlcnksCisJCQkJCQkgICJjcmVhdGUl cyB0YWJsZSBwZ2JlbmNoX2FjY291bnRzXyVkXG4iCisJCQkJCQkgICIgIChhaWQgJXMgbm90 IG51bGwsXG4iCisJCQkJCQkgICIgICBiaWQgaW50LFxuIgorCQkJCQkJICAiICAgYWJhbGFu Y2UgaW50LFxuIgorCQkJCQkJICAiICAgZmlsbGVyIGNoYXJhY3Rlcig4NCkpXG4iCisJCQkJ CQkgICIgIHdpdGggKGZpbGxmYWN0b3I9JWQpIiwKKwkJCQkJCSAgdW5sb2dnZWRfdGFibGVz ID8gIiB1bmxvZ2dlZCIgOiAiIiwgcCwKKwkJCQkJCSAgYWlkX3R5cGUsIGZpbGxmYWN0b3Ip OworCisJCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCBxdWVyeS5kYXRhKTsKKwl9CisKKwl0ZXJt UFFFeHBCdWZmZXIoJnF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQKK2F0dGFjaFN0YW5kYWxv bmVQYXJ0aXRpb25zKFBHY29ubiAqY29uKQoreworCVBRRXhwQnVmZmVyRGF0YSBxdWVyeTsK KworCUFzc2VydChwYXJ0aXRpb25zID4gMCk7CisJQXNzZXJ0KHBhcnRpdGlvbl9tZXRob2Qg PT0gUEFSVF9SQU5HRSk7CisKKwlpbml0UFFFeHBCdWZmZXIoJnF1ZXJ5KTsKKworCWV4ZWN1 dGVTdGF0ZW1lbnQoY29uLCAiYmVnaW4iKTsKKworCWZvciAoaW50IHAgPSAxOyBwIDw9IHBh cnRpdGlvbnM7IHArKykKKwl7CisJCXByaW50ZlBRRXhwQnVmZmVyKCZxdWVyeSwKKwkJCQkJ CSAgImFsdGVyIHRhYmxlIHBnYmVuY2hfYWNjb3VudHNcbiIKKwkJCQkJCSAgIiAgYXR0YWNo IHBhcnRpdGlvbiBwZ2JlbmNoX2FjY291bnRzXyVkIiwKKwkJCQkJCSAgcCk7CisJCWFwcGVu ZEFjY291bnRzUmFuZ2VGb3JWYWx1ZXMoJnF1ZXJ5LCBwKTsKKwkJZXhlY3V0ZVN0YXRlbWVu dChjb24sIHF1ZXJ5LmRhdGEpOworCX0KKworCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAiY29t bWl0Iik7CisKKwl0ZXJtUFFFeHBCdWZmZXIoJnF1ZXJ5KTsKK30KKwogLyoKICAqIENyZWF0 ZSBwZ2JlbmNoJ3Mgc3RhbmRhcmQgdGFibGVzCiAgKi8KQEAgLTQ5ODEsNyArNTA0OSwxNyBA QCBpbml0Q3JlYXRlVGFibGVzKFBHY29ubiAqY29uKQogCXRlcm1QUUV4cEJ1ZmZlcigmcXVl cnkpOwogCiAJaWYgKHBhcnRpdGlvbl9tZXRob2QgIT0gUEFSVF9OT05FKQorCXsKKwkJLyoK KwkJICogSW4gdGhlIHBhcmFsbGVsIHJhbmdlLXBhcnRpdGlvbmVkIGNhc2UsIHBhcnRpdGlv bnMgYXJlIGNyZWF0ZWQgYnkKKwkJICogdGhlIHdvcmtlciB0aHJlYWRzIChzbyBlYWNoIG9u ZSBjYW4gdXNlIENPUFkgRlJFRVpFIGluIGl0cyBvd24KKwkJICogdHJhbnNhY3Rpb24pIGFu ZCBhdHRhY2hlZCBhZnRlcndhcmRzLgorCQkgKi8KKwkJaWYgKHBhcnRpdGlvbl9tZXRob2Qg PT0gUEFSVF9SQU5HRSAmJiBudGhyZWFkcyA+IDEpCisJCQlyZXR1cm47CisKIAkJY3JlYXRl UGFydGl0aW9ucyhjb24pOworCX0KIH0KIAogLyoKQEAgLTUxNDMsNiArNTIyMSwxMjEgQEAg aW5pdFBvcHVsYXRlVGFibGUoUEdjb25uICpjb24sIGNvbnN0IGNoYXIgKnRhYmxlLCBpbnQ2 NCBiYXNlLAogCXRlcm1QUUV4cEJ1ZmZlcigmc3FsKTsKIH0KIAorc3RhdGljIHZvaWQKK2lu aXRQb3B1bGF0ZVBhcnRpdGlvbihQR2Nvbm4gKmNvbiwgaW50IHBhcnRubykKK3sKKwlpbnQ2 NAkJc3RhcnRfcm93OworCWludDY0CQllbmRfcm93OworCWNoYXIJCWNvcHlfc3RtdFsyNTZd OworCVBHcmVzdWx0ICAgKnJlczsKKwlQUUV4cEJ1ZmZlckRhdGEgc3FsOworCWludDY0CQly b3c7CisKKwlnZXRBY2NvdW50c1BhcnRpdGlvblJvd3MocGFydG5vLCAmc3RhcnRfcm93LCAm ZW5kX3Jvdyk7CisKKwlzbnByaW50Zihjb3B5X3N0bXQsIHNpemVvZihjb3B5X3N0bXQpLAor CQkJIFBRc2VydmVyVmVyc2lvbihjb24pID49IDE0MDAwMCA/CisJCQkgImNvcHkgcGdiZW5j aF9hY2NvdW50c18lZCBmcm9tIHN0ZGluIHdpdGggKGZyZWV6ZSBvbikiIDoKKwkJCSAiY29w eSBwZ2JlbmNoX2FjY291bnRzXyVkIGZyb20gc3RkaW4iLAorCQkJIHBhcnRubyk7CisKKwly ZXMgPSBQUWV4ZWMoY29uLCBjb3B5X3N0bXQpOworCWlmIChQUXJlc3VsdFN0YXR1cyhyZXMp ICE9IFBHUkVTX0NPUFlfSU4pCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgc3RhcnQgQ09QWSBm b3IgcGFydGl0aW9uICVkOiAlcyIsCisJCQkJIHBhcnRubywgUFFlcnJvck1lc3NhZ2UoY29u KSk7CisJUFFjbGVhcihyZXMpOworCisJaW5pdFBRRXhwQnVmZmVyKCZzcWwpOworCisJZm9y IChyb3cgPSBzdGFydF9yb3c7IHJvdyA8IGVuZF9yb3c7IHJvdysrKQorCXsKKwkJaW5pdEFj Y291bnQoJnNxbCwgcm93KTsKKwkJaWYgKFBRcHV0Q29weURhdGEoY29uLCBzcWwuZGF0YSwg c3FsLmxlbikgPD0gMCkKKwkJCXBnX2ZhdGFsKCJQUXB1dENvcHlEYXRhIGZhaWxlZCBmb3Ig cGFydGl0aW9uICVkIiwgcGFydG5vKTsKKwl9CisKKwlpZiAoUFFwdXRDb3B5RW5kKGNvbiwg TlVMTCkgPD0gMCkKKwkJcGdfZmF0YWwoIlBRcHV0Q29weUVuZCBmYWlsZWQgZm9yIHBhcnRp dGlvbiAlZCIsIHBhcnRubyk7CisKKwlyZXMgPSBQUWdldFJlc3VsdChjb24pOworCWlmIChQ UXJlc3VsdFN0YXR1cyhyZXMpICE9IFBHUkVTX0NPTU1BTkRfT0spCisJCXBnX2ZhdGFsKCJD T1BZIGZhaWxlZCBmb3IgcGFydGl0aW9uICVkOiAlcyIsIHBhcnRubywgUFFlcnJvck1lc3Nh Z2UoY29uKSk7CisJUFFjbGVhcihyZXMpOworCisJdGVybVBRRXhwQnVmZmVyKCZzcWwpOwor fQorCit0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25Xb3JrZXJEYXRhCit7CisJaW50CQkJdGhy ZWFkX2lkOworCWludAkJCXBhcnRfc3RhcnQ7CisJaW50CQkJcGFydF9lbmQ7Cit9CQkJUGFy dGl0aW9uV29ya2VyRGF0YTsKKworc3RhdGljIFRIUkVBRF9GVU5DX1JFVFVSTl9UWVBFIFRI UkVBRF9GVU5DX0NDCitpbml0UGFydGl0aW9uV29ya2VyVGhyZWFkKHZvaWQgKmFyZykKK3sK KwlQYXJ0aXRpb25Xb3JrZXJEYXRhICpkYXRhID0gKFBhcnRpdGlvbldvcmtlckRhdGEgKikg YXJnOworCVBHY29ubgkgICAqY29uID0gZG9Db25uZWN0KCk7CisJaW50CQkJcDsKKworCWlm IChjb24gPT0gTlVMTCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgY29ubmVjdGlv biBmb3IgcGFydGl0aW9uIHdvcmtlciAocGFydHMgJWQtJWQpIiwKKwkJCQkgZGF0YS0+cGFy dF9zdGFydCwgZGF0YS0+cGFydF9lbmQpOworCisJZXhlY3V0ZVN0YXRlbWVudChjb24sICJi ZWdpbiIpOworCWNyZWF0ZVN0YW5kYWxvbmVQYXJ0aXRpb25zKGNvbiwgZGF0YS0+cGFydF9z dGFydCwgZGF0YS0+cGFydF9lbmQpOworCWZvciAocCA9IGRhdGEtPnBhcnRfc3RhcnQ7IHAg PD0gZGF0YS0+cGFydF9lbmQ7IHArKykKKwl7CisJCXBnX3RpbWVfdXNlY190IHN0YXJ0ID0g cGdfdGltZV9ub3coKTsKKworCQlpbml0UG9wdWxhdGVQYXJ0aXRpb24oY29uLCBwKTsKKwkJ ZnByaW50ZihzdGRlcnIsICJwYXJ0aXRpb24gJWQgbG9hZGVkIGJ5IHRocmVhZCAlZCAoaW4g JS4yZiBzKVxuIiwKKwkJCQlwLCBkYXRhLT50aHJlYWRfaWQsCisJCQkJUEdfVElNRV9HRVRf RE9VQkxFKHBnX3RpbWVfbm93KCkgLSBzdGFydCkpOworCX0KKwlleGVjdXRlU3RhdGVtZW50 KGNvbiwgImNvbW1pdCIpOworCisJUFFmaW5pc2goY29uKTsKKwlUSFJFQURfRlVOQ19SRVRV Uk47Cit9CisKK3N0YXRpYyB2b2lkCitpbml0TG9hZEFjY291bnRzUGFyYWxsZWwodm9pZCkK K3sKKwlUSFJFQURfVCAgICp0aHJlYWRzOworCVBhcnRpdGlvbldvcmtlckRhdGEgKmRhdGE7 CisJaW50CQkJcGFydHNfcGVyX3dvcmtlciA9IHBhcnRpdGlvbnMgLyBudGhyZWFkczsKKwlp bnQJCQlleHRyYV9wYXJ0cyA9IHBhcnRpdGlvbnMgJSBudGhyZWFkczsKKwlpbnQJCQluZXh0 X3BhcnQgPSAxOworCWludAkJCWk7CisKKwlmcHJpbnRmKHN0ZGVyciwgImNyZWF0aW5nICVk IHBhcnRpdGlvbnMuLi5cbiIsIHBhcnRpdGlvbnMpOworCWZwcmludGYoc3RkZXJyLCAibG9h ZGluZyBwZ2JlbmNoX2FjY291bnRzIHdpdGggJWQgdGhyZWFkcy4uLlxuIiwgbnRocmVhZHMp OworCisJdGhyZWFkcyA9IHBnX21hbGxvY19hcnJheShUSFJFQURfVCwgbnRocmVhZHMpOwor CWRhdGEgPSBwZ19tYWxsb2NfYXJyYXkoUGFydGl0aW9uV29ya2VyRGF0YSwgbnRocmVhZHMp OworCisJZm9yIChpID0gMDsgaSA8IG50aHJlYWRzOyBpKyspCisJeworCQlkYXRhW2ldLnRo cmVhZF9pZCA9IGk7CisJCWRhdGFbaV0ucGFydF9zdGFydCA9IG5leHRfcGFydDsKKwkJZGF0 YVtpXS5wYXJ0X2VuZCA9IG5leHRfcGFydCArIHBhcnRzX3Blcl93b3JrZXIgLSAxICsKKwkJ CShpIDwgZXh0cmFfcGFydHMgPyAxIDogMCk7CisJCW5leHRfcGFydCA9IGRhdGFbaV0ucGFy dF9lbmQgKyAxOworCisJCWVycm5vID0gVEhSRUFEX0NSRUFURSgmdGhyZWFkc1tpXSwgaW5p dFBhcnRpdGlvbldvcmtlclRocmVhZCwgJmRhdGFbaV0pOworCQlpZiAoZXJybm8gIT0gMCkK KwkJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIHRocmVhZCBmb3Igd29ya2VyICVkOiAl bSIsIGkpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBudGhyZWFkczsgaSsrKQorCQlUSFJF QURfSk9JTih0aHJlYWRzW2ldKTsKKworCWZyZWUodGhyZWFkcyk7CisJZnJlZShkYXRhKTsK K30KKwogLyoKICAqIEZpbGwgdGhlIHN0YW5kYXJkIHRhYmxlcyB3aXRoIHNvbWUgZGF0YSBn ZW5lcmF0ZWQgYW5kIHNlbnQgZnJvbSB0aGUgY2xpZW50LgogICoKQEAgLTUxNTUsOCArNTM0 OCwxMSBAQCBpbml0R2VuZXJhdGVEYXRhQ2xpZW50U2lkZShQR2Nvbm4gKmNvbikKIAlmcHJp bnRmKHN0ZGVyciwgImdlbmVyYXRpbmcgZGF0YSAoY2xpZW50LXNpZGUpLi4uXG4iKTsKIAog CS8qCi0JICogd2UgZG8gYWxsIG9mIHRoaXMgaW4gb25lIHRyYW5zYWN0aW9uIHRvIGVuYWJs ZSB0aGUgYmFja2VuZCdzCi0JICogZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMKKwkgKiBG b3Igc2VyaWFsIGxvYWRpbmcsIGRvIGV2ZXJ5dGhpbmcgaW4gb25lIHRyYW5zYWN0aW9uIHRv IGVuYWJsZSB0aGUKKwkgKiBiYWNrZW5kJ3MgZGF0YS1sb2FkaW5nIG9wdGltaXphdGlvbnMu ICBGb3IgcGFyYWxsZWwgbG9hZGluZworCSAqIChyYW5nZS1wYXJ0aXRpb25lZCwgLWogPiAx KSwgbG9hZCBicmFuY2hlcyBhbmQgdGVsbGVycyBpbiBvbmUKKwkgKiB0cmFuc2FjdGlvbiwg dGhlbiBsb2FkIGFjY291bnRzIGluIHBhcmFsbGVsIHdpdGggZWFjaCB3b3JrZXIgaW4gaXRz IG93bgorCSAqIHRyYW5zYWN0aW9uLgogCSAqLwogCWV4ZWN1dGVTdGF0ZW1lbnQoY29uLCAi YmVnaW4iKTsKIApAQCAtNTE2OSw5ICs1MzY1LDE4IEBAIGluaXRHZW5lcmF0ZURhdGFDbGll bnRTaWRlKFBHY29ubiAqY29uKQogCSAqLwogCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBn YmVuY2hfYnJhbmNoZXMiLCBuYnJhbmNoZXMsIGluaXRCcmFuY2gpOwogCWluaXRQb3B1bGF0 ZVRhYmxlKGNvbiwgInBnYmVuY2hfdGVsbGVycyIsIG50ZWxsZXJzLCBpbml0VGVsbGVyKTsK LQlpbml0UG9wdWxhdGVUYWJsZShjb24sICJwZ2JlbmNoX2FjY291bnRzIiwgbmFjY291bnRz LCBpbml0QWNjb3VudCk7CiAKLQlleGVjdXRlU3RhdGVtZW50KGNvbiwgImNvbW1pdCIpOwor CWlmIChwYXJ0aXRpb25fbWV0aG9kID09IFBBUlRfUkFOR0UgJiYgbnRocmVhZHMgPiAxKQor CXsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24sICJjb21taXQiKTsKKwkJaW5pdExvYWRBY2Nv dW50c1BhcmFsbGVsKCk7CisJCWF0dGFjaFN0YW5kYWxvbmVQYXJ0aXRpb25zKGNvbik7CisJ fQorCWVsc2UKKwl7CisJCWluaXRQb3B1bGF0ZVRhYmxlKGNvbiwgInBnYmVuY2hfYWNjb3Vu dHMiLCBuYWNjb3VudHMsIGluaXRBY2NvdW50KTsKKwkJZXhlY3V0ZVN0YXRlbWVudChjb24s ICJjb21taXQiKTsKKwl9CiB9CiAKIC8qCkBAIC02OTQ0LDcgKzcxNDksNiBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlpbml0aWFsaXphdGlvbl9vcHRpb25fc2V0ID0g dHJ1ZTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ2onOgkJCS8qIGpvYnMgKi8KLQkJCQliZW5j aG1hcmtpbmdfb3B0aW9uX3NldCA9IHRydWU7CiAJCQkJaWYgKCFvcHRpb25fcGFyc2VfaW50 KG9wdGFyZywgIi1qLy0tam9icyIsIDEsIElOVF9NQVgsCiAJCQkJCQkJCQkgICZudGhyZWFk cykpCiAJCQkJewpAQCAtNzE3Niw3ICs3MzgwLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJICogb3B0aW1pemF0aW9uOyB0aHJvdHRsZV9kZWxheSBpcyBjYWxjdWxhdGVk IGluY29ycmVjdGx5IGJlbG93IGlmIHNvbWUKIAkgKiB0aHJlYWRzIGhhdmUgbm8gY2xpZW50 cyBhc3NpZ25lZCB0byB0aGVtLikKIAkgKi8KLQlpZiAobnRocmVhZHMgPiBuY2xpZW50cykK KwlpZiAobnRocmVhZHMgPiBuY2xpZW50cyAmJiAhaXNfaW5pdF9tb2RlKQogCQludGhyZWFk cyA9IG5jbGllbnRzOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdiZW5jaC90LzAw MV9wZ2JlbmNoX3dpdGhfc2VydmVyLnBsIGIvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVu Y2hfd2l0aF9zZXJ2ZXIucGwKaW5kZXggYjc2ODVlYTVkMi4uMjllZTI4ZDYxNiAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKKysr IGIvc3JjL2Jpbi9wZ2JlbmNoL3QvMDAxX3BnYmVuY2hfd2l0aF9zZXJ2ZXIucGwKQEAgLTE2 NCw2ICsxNjQsMzUgQEAgJG5vZGUtPnBnYmVuY2goCiAjIENoZWNrIGRhdGEgc3RhdGUsIGFm dGVyIHNlcnZlci1zaWRlIGRhdGEgZ2VuZXJhdGlvbi4KIGNoZWNrX2RhdGFfc3RhdGUoJG5v ZGUsICdzZXJ2ZXItc2lkZScpOwogCisjIFRlc3QgcGFyYWxsZWwgaW5pdGlhbGl6YXRpb24g d2l0aCByYW5nZSBwYXJ0aXRpb25zIChjbGllbnQtc2lkZSBnZW5lcmF0aW9uKS4KKyMgVXNl IC1qIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiB3b3JrZXIgdGhyZWFkczsgcGFydGl0aW9u cyBtdXN0IGJlID49IC1qLgorJG5vZGUtPnBnYmVuY2goCisJJy1pIC1qIDIgLXMgMSAtLXBh cnRpdGlvbnM9NCAtLXBhcnRpdGlvbi1tZXRob2Q9cmFuZ2UnLAorCTAsCisJW3Fye14kfV0s CisJWworCQlxcntjcmVhdGluZyB0YWJsZXN9LAorCQlxcntjcmVhdGluZyA0IHBhcnRpdGlv bnN9LAorCQlxcntsb2FkaW5nIHBnYmVuY2hfYWNjb3VudHMgd2l0aCAyIHRocmVhZHN9LAor CQlxcntwYXJ0aXRpb24gXGQgbG9hZGVkIGJ5IHRocmVhZCBcZCBcKGluIFxkK1wuXGRcZCBz XCl9LAorCQlxcnt2YWN1dW1pbmd9LAorCQlxcntjcmVhdGluZyBwcmltYXJ5IGtleXN9LAor CQlxcntkb25lIGluIFxkK1wuXGRcZCBzIH0KKwldLAorCSdwZ2JlbmNoIHBhcmFsbGVsIGlu aXRpYWxpemF0aW9uIHdpdGggcmFuZ2UgcGFydGl0aW9ucycpOworCitjaGVja19kYXRhX3N0 YXRlKCRub2RlLCAncGFyYWxsZWwtcmFuZ2UtcGFydGl0aW9ucycpOworCisjIFVuZXZlbiBk aXN0cmlidXRpb246IDUgcGFydGl0aW9ucyBhY3Jvc3MgMiB0aHJlYWRzICgzICsgMikuCisk bm9kZS0+cGdiZW5jaCgKKwknLWkgLWogMiAtcyAxIC0tcGFydGl0aW9ucz01IC0tcGFydGl0 aW9uLW1ldGhvZD1yYW5nZScsCisJMCwKKwlbcXJ7XiR9XSwKKwlbIHFye2xvYWRpbmcgcGdi ZW5jaF9hY2NvdW50cyB3aXRoIDIgdGhyZWFkc30sIHFye2RvbmUgaW4gXGQrXC5cZFxkIHMg fSBdLAorCSdwZ2JlbmNoIHBhcmFsbGVsIGluaXQgd2l0aCB1bmV2ZW4gcGFydGl0aW9uIGRp c3RyaWJ1dGlvbicpOworCitjaGVja19kYXRhX3N0YXRlKCRub2RlLCAncGFyYWxsZWwtcmFu Z2UtdW5ldmVuJyk7CisKICMgUnVuIGFsbCBidWlsdGluIHNjcmlwdHMsIGZvciBhIGZldyB0 cmFuc2FjdGlvbnMgZWFjaAogJG5vZGUtPnBnYmVuY2goCiAJJy0tdHJhbnNhY3Rpb25zPTUg LURmb289YmxhIC0tY2xpZW50PTIgLS1wcm90b2NvbD1zaW1wbGUgLS1idWlsdGluPXQnCi0t IAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgo= --------------irsFSU090s5lhE1Nm5rPYqW0--