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 1vDjSt-00EWbd-UA for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 13:10:19 +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 1vDjSs-00CyqR-TC for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Oct 2025 13:10:17 +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 <3danissimo@gmail.com>) id 1vDjSs-00CyqI-EQ for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 13:10:17 +0000 Received: from mail-yw1-x1134.google.com ([2607:f8b0:4864:20::1134]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vDjSo-004haG-27 for pgsql-hackers@lists.postgresql.org; Tue, 28 Oct 2025 13:10:16 +0000 Received: by mail-yw1-x1134.google.com with SMTP id 00721157ae682-7814273415cso49023607b3.1 for ; Tue, 28 Oct 2025 06:10:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761657013; x=1762261813; 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=905sxpOUOi0Vn15TLoV+ILu/PXqEmFkGwWnRrHDuVGs=; b=IYuFDh7J910yCMOsLJaKGENfwO447miceQPm+dqiXBD1YTMjsIchxpAXmeGcGhunBd eNTtV6dfYIh+Tw2Xu9hmPQmWUNOQ+V85ndiV01heNRMuAWp/IrZqaH01NPAV40228/v4 WfrVOblhjwRtg0dbv6Lvd24sUix4k9SV4u4GShKUQzKl9wNNwMrK59mGCk/bl8PukuBi a+xk2YANqjnX60k6DvggRlt95Awgfs6sHoofrcVPmnbyDzgT0VbbreK7tsGEocqeAp24 G4cqA6tt4ITGdQA1+CaRHMsYjQvf+UewE2D7jSGf0ea8o9IyOKjkdNndyU4bheZ49obA R4qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761657013; x=1762261813; 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=905sxpOUOi0Vn15TLoV+ILu/PXqEmFkGwWnRrHDuVGs=; b=wGMIp0LXrHfjOVG8QmLi7qLSU98ey1sEPX8+s944k4bzG/qkV0/ib0tS5VBozki2YP 928ybguFLtQj1eTWdjW/CRsgAS5jciLBosinIUi/bW9Ns0KL1OgCiAZ9yZuXQR9XYiCV 2Kq64NJBF6lkTuhelDeLxP5c4DxifpTiR802YsHy5qLmFJTg8glqwCh9SnVT6zUTrUDb GXhEp1puyO7afnSVB0OuSh0zDo1Y5NZBs2MvvBbwqAUuZdW34ob8rmaKbM6ZyNTzDR3V GRdltZqKQpsYhXNVl30lsOtIVJxU/qHdS1UkIg6NnLPUK29GfcXhu+Jyw0z5d4oGNvXr VcoQ== X-Forwarded-Encrypted: i=1; AJvYcCWPksEeJYA5N5cp520lL44SpJ+wcvR3JkpiHd6xtpUA7uvdYq46CjL0ncrESpHgobdYuKzfdeG6/RGjrGCp@lists.postgresql.org X-Gm-Message-State: AOJu0YzWOzpte3lZNkKs0/zF0mJ2psoX5d9r5gin9WCh0WHCAc0aoj+P FMftDw+y6E9EN45yMwe2ptSNILQUY4rlZKs0dSPLsRH4csXSrylPdoC++X6E3ba0GZLLov316Cz TrbPxUlI45l48dcGiFpJh1/o0N+TvUVjXUK6MF/ALGQ== X-Gm-Gg: ASbGncuplyRU2lIvuzHb5Ua1BSDqC1A8zl2TCV51udRnKNsDSNTZA1/FU23pQkYsKsL 4vR5EqKXvThhCbgIFE7DeATqcfR+hSJIR0WjHeQRxdZQOLoddTJR5qcO6LXIlNILpAnNltpqlzW DxHtNfZGGL8AdGOkwHDc/L4RELj1Xyo5ZInHPYgo/4Hqp56uJuIbySW2m2GO5fsIdj9za5Oy7Yo 8NeP0JIOvlOyM2TIrxp++PfWdHjrC6itQQFs0nTtfckF0O16TzXplF5PlTY5q31oU5aP+x3 X-Google-Smtp-Source: AGHT+IEMo4jhHSRUMZ30xZKrkfaobmiRlktHFp9EJ7nMQvoXfkkjlxUT9aQQUPAhJBlRfBpo51OlbZ9ZhqG65jo/cds= X-Received: by 2002:a05:690c:6d0d:b0:783:796c:c1a9 with SMTP id 00721157ae682-78617f61d33mr32970377b3.37.1761657012590; Tue, 28 Oct 2025 06:10:12 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Tue, 28 Oct 2025 20:09:59 +0700 X-Gm-Features: AWmQ_bmlnK7h4aBjIDsA6xt87SWWcD3_arjfcBZ_fJn5SWdl2Exgo_OZwFQbKFQ Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Alexander Korotkov , Sami Imseih , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000073ddc2064237bc22" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000073ddc2064237bc22 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Sep 16, 2025 at 1:50=E2=80=AFAM Alexander Korotkov wrote: > > I've rebased this patchset to the current master. > That required me to move the new GUC definition to guc_parameters.dat. > Also, I adjusted typedefs.list and made pgindent. Thank you for looking into it! > > + { > + { > + "autovacuum_parallel_workers", > + "Maximum number of parallel autovacuum workers that can be us= ed for processing this table.", > + RELOPT_KIND_HEAP, > + ShareUpdateExclusiveLock > + }, > + -1, -1, 1024 > + }, > > Should we use MAX_PARALLEL_WORKER_LIMIT instead of hard-coded 1024 here? I'm afraid that we will have to include an additional header file to do thi= s. As far as I know, we are trying not to do so. For now, I will leave it hardcoded. > > - * Support routines for parallel vacuum execution. > + * Support routines for parallel vacuum and autovacuum execution. In t= he > + * future comments, the word "vacuum" will refer to both vacuum and > + * autovacuum. > > Not sure about the usage of word "future" here. > It doesn't look clear what it means. > Could we use "below" or "within this file"? Agree, fixed. > I see parallel_vacuum_process_all_indexes() have a TRY/CATCH block. > As I heard, the overhead of setting/doing jumps is platform-dependent, an= d > not harmless on some platforms. Therefore, can we skip TRY/CATCH block > for non-autovacuum vacuum? Possibly we could move it to AutoVacWorkerMai= n(), > that would save us from repeatedly setting a jump in autovacuum workers t= oo. Good idea. I found try/catch block inside the "do_autovacuum" function that= is obviously called only inside the autovacuum. I decided to move ReleaseAllWo= rkers call there. > > In general, I think this patchset badly lack of testing. I think it need= s tap tests > checking from the logs that autovacuum has been done in parallel. Also, = it > would be good to set up some injection points, and check that reserved > autovacuum parallel workers are getting released correctly in the case of= errors. Some time ago I tried to write a test, but it looked very ugly. Your idea with injection points helped me to write much more reliable tests - see it in a new (v12) pack of patches. On Wed, Sep 17, 2025 at 1:31=E2=80=AFAM Masahiko Sawada wrote: > > On Mon, Sep 15, 2025 at 11:50=E2=80=AFAM Alexander Korotkov > wrote: > > > > I see parallel_vacuum_process_all_indexes() have a TRY/CATCH block. As= I heard, > > the overhead of setting/doing jumps is platform-dependent, and not harm= less on some > > platforms. Therefore, can we skip TRY/CATCH block for non-autovacuum v= acuum? > > Possibly we could move it to AutoVacWorkerMain(), that would save us fr= om repeatedly > > setting a jump in autovacuum workers too. > > I wonder if using the TRY/CATCH block is not enough to ensure that > autovacuum workers release the reserved parallel workers in FATAL > cases. > That's true. I'll register "before_shmem_exit" callback for autovacuum, which will release workers if there are any reserved and if the a/v workers exits abnormally. > > IIUC the patch still has one problem in terms of reloading the > configuration parameters during parallel mode as I mentioned > before[1]. > Yep. I was happy to see that you think that config file processing is OK fo= r autovacuum :) I'll allow it for a/v leader. I've also thought about "compute_parallel_del= ay". The simplest solution that I see is to move cost-based delay parameters to shared state (PVShared) and create some variables such a VacuumSharedCostBalance, so we can use them inside vacuum_delay_point. What do you think about this idea? Another approaches like a "tell parallel workers that they should reload config" looks a bit too invasive IMO. Thanks everybody for the review! Please, see v12 patches : 1) Implement tests for parallel autovacuum 2) Fix error with unreleased workers - see try/catch block in do_autovacuum and before_shmem_exit callback registration in AutoVacWorkerMain 3) Allow a/v leader to process config file (see guc.c) -- Best regards, Daniil Davydov --00000000000073ddc2064237bc22 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0004-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v12-0004-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhal2qvl0 RnJvbSAyYWZjZDQzOGE1NDg0OWQzZmU0ZTRmNGFmYzIzMGZiMmM2OWMwOWRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDI4IE9jdCAyMDI1IDE1OjIwOjEyICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTIgNC80XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysK IGRvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAgfCAxMiArKysrKysrKysrKysKIGRv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwgfCAyMCArKysrKysrKysrKysrKysrKysr KwogMyBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDBhMmE4 YjQ5ZmRiLi5kM2VhMDJjYmJlMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbApAQCAtMjgzNSw2ICsyODM1LDcgQEAgaW5j bHVkZV9kaXIgJ2NvbmYuZCcKICAgICAgICAgPHBhcmE+CiAgICAgICAgICBXaGVuIGNoYW5naW5n IHRoaXMgdmFsdWUsIGNvbnNpZGVyIGFsc28gYWRqdXN0aW5nCiAgICAgICAgICA8eHJlZiBsaW5r ZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4sCisgICAgICAgICA8eHJlZiBsaW5rZW5k PSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKICAgICAgICAgIDx4cmVm IGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtbWFpbnRlbmFuY2Utd29ya2VycyIvPiwgYW5kCiAg ICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMtcGVyLWdhdGhl ciIvPi4KICAgICAgICAgPC9wYXJhPgpAQCAtOTI1NCw2ICs5MjU1LDIzIEBAIENPUFkgcG9zdGdy ZXNfbG9nIEZST00gJy9mdWxsL3BhdGgvdG8vbG9nZmlsZS5jc3YnIFdJVEggY3N2OwogICAgICAg IDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRy eSBpZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyI+CisgICAgICAgIDx0ZXJtPjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90 eXBlPikKKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM8L3Zhcm5hbWU+PC9wcmltYXJ5PgorICAgICAg ICAgPHNlY29uZGFyeT5jb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvc2Vjb25kYXJ5PgorICAgICAg ICA8L2luZGV4dGVybT4KKyAgICAgICAgPC90ZXJtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAg ICAgICA8cGFyYT4KKyAgICAgICAgICBTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdAorICAgICAgICAgIGNhbiBiZSB1c2VkIGZvciBwYXJh bGxlbCBpbmRleCB2YWN1dW1pbmcgYXQgb25lIHRpbWUuIElzIGNhcHBlZCBieQorICAgICAgICAg IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3NlcyIvPi4gVGhlIGRlZmF1bHQg aXMgMCwKKyAgICAgICAgICB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcu CisgICAgICAgICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVu dHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKaW5kZXggZGM1OWM4ODMxOWUuLjJkYjM0Y2VjMGE5IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dt bApAQCAtODk3LDYgKzg5NywxOCBAQCBISU5UOiAgRXhlY3V0ZSBhIGRhdGFiYXNlLXdpZGUgVkFD VVVNIGluIHRoYXQgZGF0YWJhc2UuCiAgICAgYXV0b3ZhY3V1bSB3b3JrZXJzJyBhY3Rpdml0eS4K ICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgSWYgYW4gYXV0b3ZhY3V1bSB3b3JrZXIgcHJv Y2VzcyBjb21lcyBhY3Jvc3MgYSB0YWJsZSB3aXRoIHRoZSBlbmFibGVkCisgICAgPHhyZWYgbGlu a2VuZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIvPiBzdG9yYWdlIHBh cmFtZXRlciwKKyAgICBpdCB3aWxsIGxhdW5jaCBwYXJhbGxlbCB3b3JrZXJzIGluIG9yZGVyIHRv IHZhY3V1bSBpbmRleGVzIG9mIHRoaXMgdGFibGUKKyAgICBpbiBhIHBhcmFsbGVsIG1vZGUuIFBh cmFsbGVsIHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgb2YgcHJvY2Vzc2VzCisgICAg ZXN0YWJsaXNoZWQgYnkgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+ LCBsaW1pdGVkIGJ5CisgICAgPHhyZWYgbGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC13b3JrZXJz Ii8+LgorICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJz IHRoYXQgY2FuIGJlIGFjdGl2ZSBhdCBvbmUKKyAgICB0aW1lIGlzIGxpbWl0ZWQgYnkgdGhlIDx4 cmVmIGxpbmtlbmQ9Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+CisgICAg Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIElm IHNldmVyYWwgbGFyZ2UgdGFibGVzIGFsbCBiZWNvbWUgZWxpZ2libGUgZm9yIHZhY3V1bWluZyBp biBhIHNob3J0CiAgICAgYW1vdW50IG9mIHRpbWUsIGFsbCBhdXRvdmFjdXVtIHdvcmtlcnMgbWln aHQgYmVjb21lIG9jY3VwaWVkIHdpdGgKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IGExNTdhMjQ0ZTRlLi42ZWI1OGM5NWQ5ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfdGFibGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s CkBAIC0xNzE3LDYgKzE3MTcsMjYgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0 aW9uLWF1dG92YWN1dW0tcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRvdmFjdXVtX3Bh cmFsbGVsX3dvcmtlcnMiPgorICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92YWN1dW1fcGFyYWxsZWxf d29ya2VyczwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+ CisgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczwvdmFy bmFtZT4gc3RvcmFnZSBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICAg PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBTZXRzIHRoZSBtYXhp bXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdGhhdCBjYW4gcHJvY2Vz cworICAgICAgaW5kZXhlcyBvZiB0aGlzIHRhYmxlLgorICAgICAgVGhlIGRlZmF1bHQgdmFsdWUg aXMgLTEsIHdoaWNoIG1lYW5zIG5vIHBhcmFsbGVsIGluZGV4IHZhY3V1bWluZyBmb3IKKyAgICAg IHRoaXMgdGFibGUuIElmIHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbCBkZWdyZWUgd2lsbCBjb21w dXRlZCBiYXNlZCBvbgorICAgICAgbnVtYmVyIG9mIGluZGV4ZXMuCisgICAgICBOb3RlIHRoYXQg dGhlIGNvbXB1dGVkIG51bWJlciBvZiB3b3JrZXJzIG1heSBub3QgYWN0dWFsbHkgYmUgYXZhaWxh YmxlIGF0CisgICAgICBydW4gdGltZS4gSWYgdGhpcyBvY2N1cnMsIHRoZSBhdXRvdmFjdXVtIHdp bGwgcnVuIHdpdGggZmV3ZXIgd29ya2VycworICAgICAgdGhhbiBleHBlY3RlZC4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3Rl bnRyeSBpZD0icmVsb3B0aW9uLWF1dG92YWN1dW0tdmFjdXVtLXRocmVzaG9sZCIgeHJlZmxhYmVs PSJhdXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQiPgogICAgIDx0ZXJtPjxsaXRlcmFsPmF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4sIDxsaXRlcmFsPnRvYXN0LmF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZDwvbGl0ZXJhbD4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQogICAg IDxpbmRleHRlcm0+Ci0tIAoyLjQzLjAKCg== --00000000000073ddc2064237bc22 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0003-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v12-0003-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhal2qvr1 RnJvbSBmOTIzZDhmMzAyYjVhMmQzMDc3MThhNjY1MTI5ZThiZWYwODkyMTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDI4IE9jdCAyMDI1IDE1OjE5OjE3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTIgMy80XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUgICB8ICAgMiArCiBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZSAgICAgfCAgMjYgKysKIHNyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL21lc29uLmJ1aWxkICB8ICAzNiArKysKIC4uLi9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS90LzAwMV9iYXNpYy5wbCAgICB8IDE2NSArKysrKysrKysrKysKIC4uLi90ZXN0 X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsICB8ICAzNCArKysKIC4uLi9tb2R1 bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYyB8IDI1NSArKysrKysrKysrKysr KysrKysKIC4uLi90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmNvbnRyb2wgICB8ICAg MyArCiA5IGZpbGVzIGNoYW5nZWQsIDU0MyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVp bGQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90 LzAwMV9iYXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFj dXVtLmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA5YTI1 ODIzODY1MC4uMGNmZGY3OWNiNmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YwpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgor I2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC03NTIsNiArNzUzLDEzIEBAIHBh cmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgaW50IG51bV9pbmRleF9zY2FuCiAJCX0KIAl9CiAKKwkvKgorCSAqIFRvIGJlIGFibGUgdG8g ZXhlcmNpc2Ugd2hldGhlciBhbGwgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBhcmUgYmVpbmcK KwkgKiByZWxlYXNlZCBhbnl3YXksIGFsbG93IGluamVjdGlvbiBwb2ludHMgdG8gdHJpZ2dlciBh IGZhaWx1cmUgYXQgdGhpcworCSAqIHBvaW50LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0 b3ZhY3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwgTlVMTCk7CisKIAkvKiBWYWN1dW0gdGhl IGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8K IAlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDk0OTlkNGYwYzEyLi5hNjM1ODIwMDYyOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzcsNiArMzQzNywxMyBAQCBBdXRv VmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCiAJLyogUmVtZW1iZXIg aG93IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAqLwogCWF2X253b3JrZXJzX3Jlc2Vy dmVkICs9IG53b3JrZXJzOwogCisJLyoKKwkgKiBJbmplY3Rpb24gcG9pbnQgdG8gaGVscCBleGVy Y2lzaW5nIG51bWJlciBvZiBhdmFpbGFibGUgcGFyYWxsZWwKKwkgKiBhdXRvdmFjdXVtIHdvcmtl cnMuCisJICovCisJSU5KRUNUSU9OX1BPSU5UKCJhdXRvdmFjdXVtLXNldC1mcmVlLXBhcmFsbGVs LXdvcmtlcnMtbnVtIiwKKwkJCQkJJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29y a2Vycyk7CisKIAlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKIAlyZXR1cm4gbnJlc2Vy dmVkOwogfQpAQCAtMzQ2Nyw2ICszNDc0LDEzIEBAIEF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxX b3JrZXJzKGludCBud29ya2VycykKIAkvKiBEb24ndCBoYXZlIHRvIHJlbWVtYmVyIHRoZXNlIHdv cmtlcnMgYW55bW9yZS4gKi8KIAlhdl9ud29ya2Vyc19yZXNlcnZlZCAtPSBud29ya2VyczsKIAor CS8qCisJICogSW5qZWN0aW9uIHBvaW50IHRvIGhlbHAgZXhlcmNpc2luZyBudW1iZXIgb2YgYXZh aWxhYmxlIHBhcmFsbGVsCisJICogYXV0b3ZhY3V1bSB3b3JrZXJzLgorCSAqLworCUlOSkVDVElP Tl9QT0lOVCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13b3JrZXJzLW51bSIsCisJCQkJ CSZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMpOworCiAJTFdMb2NrUmVs ZWFzZShBdXRvdmFjdXVtTG9jayk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtLy5naXRpZ25vcmUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3Zh Y3V1bS8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43 MTZlMTdmNWEyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtLy5naXRpZ25vcmUKQEAgLTAsMCArMSwyIEBACisjIEdlbmVyYXRlZCBzdWJkaXJlY3Rv cmllcworL3RtcF9jaGVjay8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL01ha2VmaWxlIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZp bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRjZjczNDRiMmFjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vTWFrZWZp bGUKQEAgLTAsMCArMSwyNiBAQAorIyBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9N YWtlZmlsZQorCitQR0ZJTEVERVNDID0gInRlc3RfYXV0b3ZhY3V1bSAtIHRlc3QgY29kZSBmb3Ig cGFyYWxsZWwgYXV0b3ZhY3V1bSIKKworTU9EVUxFX2JpZyA9IHRlc3RfYXV0b3ZhY3V1bQorT0JK UyA9IFwKKwkkKFdJTjMyUkVTKSBcCisJdGVzdF9hdXRvdmFjdXVtLm8KKworRVhURU5TSU9OID0g dGVzdF9hdXRvdmFjdXVtCitEQVRBID0gdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCisKK1RBUF9U RVNUUyA9IDEKKworZXhwb3J0IGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzCisKK2lmZGVmIFVTRV9Q R1hTCitQR19DT05GSUcgPSBwZ19jb25maWcKK1BHWFMgOj0gJChzaGVsbCAkKFBHX0NPTkZJRykg LS1wZ3hzKQoraW5jbHVkZSAkKFBHWFMpCitlbHNlCitzdWJkaXIgPSBzcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYXV0b3ZhY3V1bQordG9wX2J1aWxkZGlyID0gLi4vLi4vLi4vLi4KK2luY2x1ZGUgJCh0 b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKK2luY2x1ZGUgJCh0b3Bfc3JjZGlyKS9j b250cmliL2NvbnRyaWItZ2xvYmFsLm1rCitlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9k dWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf YXV0b3ZhY3V1bS9tZXNvbi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMzQ0MWU1ZTQ5Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZApAQCAtMCwwICsxLDM2IEBACisjIENvcHlyaWdodCAo YykgMjAyNC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit0ZXN0 X2F1dG92YWN1dW1fc291cmNlcyA9IGZpbGVzKAorICAndGVzdF9hdXRvdmFjdXVtLmMnLAorKQor CitpZiBob3N0X3N5c3RlbSA9PSAnd2luZG93cycKKyAgdGVzdF9hdXRvdmFjdXVtX3NvdXJjZXMg Kz0gcmNfbGliX2dlbi5wcm9jZXNzKHdpbjMydmVyX3JjLCBleHRyYV9hcmdzOiBbCisgICAgJy0t TkFNRScsICd0ZXN0X2F1dG92YWN1dW0nLAorICAgICctLUZJTEVERVNDJywgJ3Rlc3RfYXV0b3Zh Y3V1bSAtIHRlc3QgY29kZSBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bScsXSkKK2VuZGlmCisKK3Rl c3RfYXV0b3ZhY3V1bSA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3RfYXV0b3ZhY3V1bScsCisgIHRlc3Rf YXV0b3ZhY3V1bV9zb3VyY2VzLAorICBrd2FyZ3M6IHBnX3Rlc3RfbW9kX2FyZ3MsCispCit0ZXN0 X2luc3RhbGxfbGlicyArPSB0ZXN0X2F1dG92YWN1dW0KKwordGVzdF9pbnN0YWxsX2RhdGEgKz0g ZmlsZXMoCisgICd0ZXN0X2F1dG92YWN1dW0uY29udHJvbCcsCisgICd0ZXN0X2F1dG92YWN1dW0t LTEuMC5zcWwnLAorKQorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3Rlc3RfYXV0b3ZhY3V1bScs CisgICdzZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJy ZW50X2J1aWxkX2RpcigpLAorICAndGFwJzogeworICAgICdlbnYnOiB7CisgICAgICAgJ2VuYWJs ZV9pbmplY3Rpb25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9uX3BvaW50cycpID8gJ3ll cycgOiAnbm8nLAorICAgIH0sCisgICAgJ3Rlc3RzJzogWworICAgICAgJ3QvMDAxX2Jhc2ljLnBs JywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1 dG92YWN1dW0vdC8wMDFfYmFzaWMucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90LzAwMV9iYXNpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MjJlYWFhN2RhOWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0 b3ZhY3V1bS90LzAwMV9iYXNpYy5wbApAQCAtMCwwICsxLDE2NSBAQAordXNlIHdhcm5pbmdzIEZB VEFMID0+ICdhbGwnOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworbXkgJHBzcWxfb3V0OworCitt eSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnKTsKKyRub2Rl LT5pbml0OworCisjIENvbmZpZ3VyZSBwb3N0Z3Jlcywgc28gaXQgY2FuIGxhdW5jaCBwYXJhbGxl bCBhdXRvdmFjdXVtIHdvcmtlcnMsIGxvZyBhbGwKKyMgaW5mb3JtYXRpb24gd2UgYXJlIGludGVy ZXN0ZWQgaW4gYW5kIGF1dG92YWN1dW0gd29ya3MgZnJlcXVlbnRseQorJG5vZGUtPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwltYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDIwCisJ bWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAyMAorCW1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3Jr ZXJzID0gMjAKKwlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gMTAKKwlsb2dfbWlu X21lc3NhZ2VzID0gZGVidWcyCisJbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMAorCWF1 dG92YWN1dW1fbmFwdGltZSA9ICcxcycKKwltaW5fcGFyYWxsZWxfaW5kZXhfc2Nhbl9zaXplID0g MAorCXNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcz10ZXN0X2F1dG92YWN1dW0KK30pOworJG5vZGUt PnN0YXJ0OworCitteSAkaW5kZXhlc19udW0gPSA0OworbXkgJGluaXRpYWxfcm93c19udW0gPSAx MF8wMDA7CitteSAkYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMjsKKworIyBDcmVhdGUg dGFibGUgd2l0aCBzcGVjaWZpZWQgbnVtYmVyIG9mIGItdHJlZSBpbmRleGVzIG9uIGl0Ciskbm9k ZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBUQUJMRSB0ZXN0X2F1dG92YWMg KAorCQlpZCBTRVJJQUwgUFJJTUFSWSBLRVksCisJCWNvbF8xIElOVEVHRVIsICBjb2xfMiBJTlRF R0VSLCAgY29sXzMgSU5URUdFUiwgIGNvbF80IElOVEVHRVIKKwkpIFdJVEggKGF1dG92YWN1dW1f cGFyYWxsZWxfd29ya2VycyA9ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMsCisJCQlhdXRv dmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7CisKKwlETyBcJFwkCisJREVDTEFSRQorCQlpIElOVEVH RVI7CisJQkVHSU4KKwkJRk9SIGkgSU4gMS4uJGluZGV4ZXNfbnVtIExPT1AKKwkJCUVYRUNVVEUg Zm9ybWF0KCdDUkVBVEUgSU5ERVggaWR4X2NvbF9cJXMgT04gdGVzdF9hdXRvdmFjIChjb2xfXCVz KTsnLCBpLCBpKTsKKwkJRU5EIExPT1A7CisJRU5EIFwkXCQ7Cit9KTsKKworIyBJbnNlcnQgc3Bl Y2lmaWVkIHR1cGxlcyBudW0gaW50byB0aGUgdGFibGUKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgcXF7CisJRE8gXCRcJAorCURFQ0xBUkUKKwkJaSBJTlRFR0VSOworCUJFR0lOCisJCUZP UiBpIElOIDEuLiRpbml0aWFsX3Jvd3NfbnVtIExPT1AKKwkJCUlOU0VSVCBJTlRPIHRlc3RfYXV0 b3ZhYyBWQUxVRVMgKGksIGkgKyAxLCBpICsgMiwgaSArIDMpOworCQlFTkQgTE9PUDsKKwlFTkQg XCRcJDsKK30pOworCisjIE5vdywgY3JlYXRlIHNvbWUgZGVhZCB0dXBsZXMgYW5kIHJlZnJlc2gg dGFibGUgc3RhdGlzdGljcworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlVUERB VEUgdGVzdF9hdXRvdmFjIFNFVCBjb2xfMSA9IDAgV0hFUkUgKGNvbF8xICUgMykgPSAwOworCUFO QUxZWkUgdGVzdF9hdXRvdmFjOworfSk7CisKKyMgQ3JlYXRlIGFsbCBmdW5jdGlvbnMgbmVlZGVk IGZvciB0ZXN0aW5nCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUNSRUFURSBF WFRFTlNJT04gdGVzdF9hdXRvdmFjdXVtOworCVNFTEVDVCBpbmpfc2V0X2ZyZWVfd29ya2Vyc19h dHRhY2goKTsKKwlTRUxFQ1QgaW5qX2xlYWRlcl9mYWlsdXJlX2F0dGFjaCgpOworfSk7CisKKyMg VGVzdCAxIDoKKyMgT3VyIHRhYmxlIGhhcyBlbm91Z2ggaW5kZXhlcyBhbmQgYXBwcm9wcmlhdGUg cmVsb3B0aW9ucywgc28gYXV0b3ZhY3V1bSBtdXN0CisjIGJlIGFibGUgdG8gcHJvY2VzcyBpdCBp biBwYXJhbGxlbCBtb2RlLiBKdXN0IGNoZWNrIGlmIGl0IGNhbi4KKyMgQWxzbyBjaGVjayB3aGV0 aGVyIGFsbCByZXF1ZXN0ZWQgd29ya2VyczoKKyMgCTEpIGxhdW5jaGVkCisjIAkyKSBjb3JyZWN0 bHkgcmVsZWFzZWQKKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlBTFRFUiBU QUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVtX2VuYWJsZWQgPSB0cnVlKTsKK30pOwor CisjIFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGF1dG92YWN1dW0gb24gdGFibGUgaXMgY29tcGxl dGVkLiBBdCB0aGUgc2FtZSB0aW1lLAorIyB3ZSBjaGVjayB0aGF0IHRoZSByZXF1aXJlZCBudW1i ZXIgb2YgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiBzdGFydGVkLgorJG5vZGUtPndhaXRfZm9y X2xvZyhxci93b3JrZXJzIHVzYWdlIHN0YXRpc3RpY3MgZm9yIGFsbCBvZiBpbmRleCBzY2FucyA6 IC8gLgorCQkJCQlxci9sYXVuY2hlZCBpbiB0b3RhbCA9IDIsIHBsYW5uZWQgaW4gdG90YWwgPSAy Lyk7CisKKyRub2RlLT5wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBnZXRfcGFyYWxsZWxfYXV0 b3ZhY3V1bV9mcmVlX3dvcmtlcnMoKTsiLAorCXN0ZG91dCA9PiBcJHBzcWxfb3V0LAorKTsKK2lz KCRwc3FsX291dCwgMTAsICdBbGwgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZCBi eSB0aGUgbGVhZGVyJyk7CisKKyMgRGlzYWJsZSBhdXRvdmFjdXVtIG9uIHRhYmxlIGR1cmluZyBw cmVwYXJhdGlvbiBmb3IgdGhlIG5leHQgdGVzdAorJG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRvdmFjdXVt X2VuYWJsZWQgPSBmYWxzZSk7Cit9KTsKKworIyBDcmVhdGUgbW9yZSBkZWFkIHR1cGxlcworJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlVUERBVEUgdGVzdF9hdXRvdmFjIFNFVCBj b2xfMiA9IDAgV0hFUkUgKGNvbF8yICUgMykgPSAwOworCUFOQUxZWkUgdGVzdF9hdXRvdmFjOwor fSk7CisKKyMgVGVzdCAyOgorIyBXZSB3YW50IHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyB0 byBiZSByZWxlYXNlZCBldmVuIGlmIGxlYWRlciBnZXRzIGFuCisjIGVycm9yLiBBdCBmaXJzdCwg c2ltdWxhdGUgc2l0dWF0aW9uLCB3aGVuIGxlYWRlciBleGl0ZXMgZHVlIHRvIGFuIEVSUk9SLgor Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCB0cmlnZ2VyX2xlYWRl cl9mYWlsdXJlKCdFUlJPUicpOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0g dHJ1ZSk7Cit9KTsKKworJG5vZGUtPndhaXRfZm9yX2xvZyhxci9lcnJvciwgdHJpZ2dlcmVkIGJ5 IGluamVjdGlvbiBwb2ludC8pOworCiskbm9kZS0+cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg Z2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCk7IiwKKwlzdGRvdXQgPT4gXCRw c3FsX291dCwKKyk7CitpcygkcHNxbF9vdXQsIDEwLAorICAgJ0FsbCBwYXJhbGxlbCB3b3JrZXJz IGhhcyBiZWVuIHJlbGVhc2VkIGJ5IHRoZSBsZWFkZXIgYWZ0ZXIgRVJST1InKTsKKworIyBEaXNh YmxlIGF1dG92YWN1dW0gb24gdGFibGUgZHVyaW5nIHByZXBhcmF0aW9uIGZvciB0aGUgbmV4dCB0 ZXN0Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsIHFxeworCUFMVEVSIFRB QkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IGZhbHNlKTsKK30pOwor CisjIENyZWF0ZSBtb3JlIGRlYWQgdHVwbGVzCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs IHFxeworCVVQREFURSB0ZXN0X2F1dG92YWMgU0VUIGNvbF8zID0gMCBXSEVSRSAoY29sXzMgJSAz KSA9IDA7CisJQU5BTFlaRSB0ZXN0X2F1dG92YWM7Cit9KTsKKworIyBUZXN0IDM6CisjIFNhbWUg YXMgVGVzdCAyLCBidXQgc2ltdWxhdGUgc2l0dWF0aW9uLCB3aGVuIGxlYWRlciBleGl0ZXMgZHVl IHRvIEZBVEFMLgorCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxKAorCVNFTEVDVCB0 cmlnZ2VyX2xlYWRlcl9mYWlsdXJlKCdGQVRBTCcpOworKSk7CisKKyRub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgcXF7CisJQUxURVIgVEFCTEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1 bV9lbmFibGVkID0gdHJ1ZSk7Cit9KTsKKworJG5vZGUtPndhaXRfZm9yX2xvZyhxci9mYXRhbCwg dHJpZ2dlcmVkIGJ5IGluamVjdGlvbiBwb2ludC8pOworCiskbm9kZS0+cHNxbCgncG9zdGdyZXMn LAorCSJTRUxFQ1QgZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCk7IiwKKwlz dGRvdXQgPT4gXCRwc3FsX291dCwKKyk7CitpcygkcHNxbF9vdXQsIDEwLAorICAgJ0FsbCBwYXJh bGxlbCB3b3JrZXJzIGhhcyBiZWVuIHJlbGVhc2VkIGJ5IHRoZSBsZWFkZXIgYWZ0ZXIgRkFUQUwn KTsKKworIyBDbGVhbnVwCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVNFTEVD VCBpbmpfc2V0X2ZyZWVfd29ya2Vyc19kZXRhY2goKTsKKwlTRUxFQ1QgaW5qX2xlYWRlcl9mYWls dXJlX2RldGFjaCgpOworfSk7CisKKyRub2RlLT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0t LTEuMC5zcWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1 dW0tLTEuMC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjAxN2Q1 ZGE4NWVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1 dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCkBAIC0wLDAgKzEsMzQgQEAKKy8qIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbCAqLworCist LSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRoZXIgdGhhbiB2aWEg Q1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJDUkVBVEUgRVhURU5TSU9OIHRlc3RfYXV0b3Zh Y3V1bSIgdG8gbG9hZCB0aGlzIGZpbGUuIFxxdWl0CisKKy8qCisgKiBGdW5jdGlvbnMgZm9yIGV4 cGVjdGluZyBvciB0byBpbnRlcmZlcmUgYXV0b3ZhY3V1bSBzdGF0ZQorICovCitDUkVBVEUgRlVO Q1RJT04gZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCkKK1JFVFVSTlMgSU5U RUdFUiBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBG VU5DVElPTiB0cmlnZ2VyX2xlYWRlcl9mYWlsdXJlKGZhaWx1cmVfdHlwZSB0ZXh0KQorUkVUVVJO UyBWT0lEIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKKworLyoKKyAq IEluamVjdGlvbiBwb2ludCByZWxhdGVkIGZ1bmN0aW9ucworICovCitDUkVBVEUgRlVOQ1RJT04g aW5qX3NldF9mcmVlX3dvcmtlcnNfYXR0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdN T0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBpbmpfc2V0X2Zy ZWVfd29ya2Vyc19kZXRhY2goKQorUkVUVVJOUyBWT0lEIFNUUklDVAorQVMgJ01PRFVMRV9QQVRI TkFNRScgTEFOR1VBR0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIGlual9sZWFkZXJfZmFpbHVyZV9h dHRhY2goKQorUkVUVVJOUyBWT0lEIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VB R0UgQzsKKworQ1JFQVRFIEZVTkNUSU9OIGlual9sZWFkZXJfZmFpbHVyZV9kZXRhY2goKQorUkVU VVJOUyBWT0lEIFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5j IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJjOTc5YzQwNWJkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFj dXVtLmMKQEAgLTAsMCArMSwyNTUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rf YXV0b3ZhY3V1bS5jCisgKgkJSGVscGVycyB0byB3cml0ZSB0ZXN0cyBmb3IgcGFyYWxsZWwgYXV0 b3ZhY3V1bQorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMC0yMDI1LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0 L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJmbWdy LmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFj dXVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCisjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgorI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgorCitQR19NT0RVTEVfTUFH SUM7CisKK3R5cGVkZWYgZW51bSBBVkxlYWRlckZhdWx1cmVUeXBlCit7CisJRkFJTF9OT05FLAor CUZBSUxfRVJST1IsCisJRkFJTF9GQVRBTCwKK30JCUFWTGVhZGVyRmF1bHVyZVR5cGU7CisKK3R5 cGVkZWYgc3RydWN0IElualBvaW50U3RhdGUKK3sKKwlib29sCQkJCWVuYWJsZWRfc2V0X2ZyZWVf d29ya2VyczsKKwl1aW50MzIJCQkJZnJlZV9wYXJhbGxlbF93b3JrZXJzOworCisJYm9vbAkJCQll bmFibGVkX2xlYWRlcl9mYWlsdXJlOworCUFWTGVhZGVyRmF1bHVyZVR5cGUgZnR5cGU7Cit9CQlJ bmpQb2ludFN0YXRlOworCitzdGF0aWMgSW5qUG9pbnRTdGF0ZSAqaW5qX3BvaW50X3N0YXRlOwor CisvKiBTaGFyZWQgbWVtb3J5IGluaXQgY2FsbGJhY2tzICovCitzdGF0aWMgc2htZW1fcmVxdWVz dF9ob29rX3R5cGUgcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBOVUxMOworc3RhdGljIHNobWVt X3N0YXJ0dXBfaG9va190eXBlIHByZXZfc2htZW1fc3RhcnR1cF9ob29rID0gTlVMTDsKKworc3Rh dGljIHZvaWQKK3Rlc3RfYXV0b3ZhY3V1bV9zaG1lbV9yZXF1ZXN0KHZvaWQpCit7CisJaWYgKHBy ZXZfc2htZW1fcmVxdWVzdF9ob29rKQorCQlwcmV2X3NobWVtX3JlcXVlc3RfaG9vaygpOworCisJ UmVxdWVzdEFkZGluU2htZW1TcGFjZShzaXplb2YoSW5qUG9pbnRTdGF0ZSkpOworfQorCitzdGF0 aWMgdm9pZAordGVzdF9hdXRvdmFjdXVtX3NobWVtX3N0YXJ0dXAodm9pZCkKK3sKKwlib29sCQlm b3VuZDsKKworCWlmIChwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaykKKwkJcHJldl9zaG1lbV9zdGFy dHVwX2hvb2soKTsKKworCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBtZW1vcnkg c3RhdGUgKi8KKwlMV0xvY2tBY3F1aXJlKEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZF KTsKKworCWlual9wb2ludF9zdGF0ZSA9IFNobWVtSW5pdFN0cnVjdCgiaW5qZWN0aW9uX3BvaW50 cyIsCisJCQkJCQkJCQkgIHNpemVvZihJbmpQb2ludFN0YXRlKSwKKwkJCQkJCQkJCSAgJmZvdW5k KTsKKworCWlmICghZm91bmQpCisJeworCQkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxp emUgKi8KKwkJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX2xlYWRlcl9mYWlsdXJlID0gZmFsc2U7 CisJCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9zZXRfZnJlZV93b3JrZXJzID0gZmFsc2U7CisJ CWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlMX05PTkU7CisKKwkJLyogS2VlcCBpdCBpbiBz eW5jIHdpdGggQXV0b1ZhY3V1bVNobWVtSW5pdCAqLworCQlpbmpfcG9pbnRfc3RhdGUtPmZyZWVf cGFyYWxsZWxfd29ya2VycyA9CisJCQlNaW4oYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy cywgbWF4X3dvcmtlcl9wcm9jZXNzZXMpOworCisJCUluamVjdGlvblBvaW50QXR0YWNoKCJhdXRv dmFjdXVtLXNldC1mcmVlLXBhcmFsbGVsLXdvcmtlcnMtbnVtIiwKKwkJCQkJCQkgInRlc3RfYXV0 b3ZhY3V1bSIsCisJCQkJCQkJICJpbmpfc2V0X2ZyZWVfd29ya2VycyIsCisJCQkJCQkJIE5VTEws CisJCQkJCQkJIDApOworCisJCUluamVjdGlvblBvaW50QXR0YWNoKCJhdXRvdmFjdXVtLXRyaWdn ZXItbGVhZGVyLWZhaWx1cmUiLAorCQkJCQkJCSAidGVzdF9hdXRvdmFjdXVtIiwKKwkJCQkJCQkg Imlual90cmlnZ2VyX2xlYWRlcl9mYWlsdXJlIiwKKwkJCQkJCQkgTlVMTCwKKwkJCQkJCQkgMCk7 CisJfQorCisJTFdMb2NrUmVsZWFzZShBZGRpblNobWVtSW5pdExvY2spOworfQorCit2b2lkCitf UEdfaW5pdCh2b2lkKQoreworCWlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNf aW5fcHJvZ3Jlc3MpCisJCXJldHVybjsKKworCXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2ht ZW1fcmVxdWVzdF9ob29rOworCXNobWVtX3JlcXVlc3RfaG9vayA9IHRlc3RfYXV0b3ZhY3V1bV9z aG1lbV9yZXF1ZXN0OworCXByZXZfc2htZW1fc3RhcnR1cF9ob29rID0gc2htZW1fc3RhcnR1cF9o b29rOworCXNobWVtX3N0YXJ0dXBfaG9vayA9IHRlc3RfYXV0b3ZhY3V1bV9zaG1lbV9zdGFydHVw OworfQorCitleHRlcm4gUEdETExFWFBPUlQgdm9pZCBpbmpfc2V0X2ZyZWVfd29ya2Vycyhjb25z dCBjaGFyICpuYW1lLAorCQkJCQkJCQkJCQkgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJ CQkJCQkJCQkgdm9pZCAqYXJnKTsKK2V4dGVybiBQR0RMTEVYUE9SVCB2b2lkIGlual90cmlnZ2Vy X2xlYWRlcl9mYWlsdXJlKGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJCQkJCQkJCQkgICBjb25zdCB2 b2lkICpwcml2YXRlX2RhdGEsCisJCQkJCQkJCQkJCQkgICB2b2lkICphcmcpOworCisvKgorICog U2V0IG51bWJlciBvZiBjdXJyZW50bHkgYXZhaWxhYmxlIHBhcmFsbGVsIGEvdiB3b3JrZXJzLiBU aGlzIHZhbHVlIG1heQorICogY2hhbmdlIGFmdGVyIHJlc2VydmluZyBvciByZWxlYXNpbmcgc3Vj aCB3b3JrZXJzLgorICoKKyAqIEZ1bmN0aW9uIGNhbGxlZCBmcm9tIHBhcmFsbGVsIGF1dG92YWN1 dW0gbGVhZGVyLgorICovCit2b2lkCitpbmpfc2V0X2ZyZWVfd29ya2Vycyhjb25zdCBjaGFyICpu YW1lLCBjb25zdCB2b2lkICpwcml2YXRlX2RhdGEsIHZvaWQgKmFyZykKK3sKKwllcmVwb3J0KExP RywKKwkJCWVycm1zZygic2V0IHBhcmFsbGVsIHdvcmtlcnMgaW5qZWN0aW9uIHBvaW50IGNhbGxl ZCIpLAorCQkJZXJyaGlkZXN0bXQodHJ1ZSksIGVycmhpZGVjb250ZXh0KHRydWUpKTsKKworCWlm IChpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycykKKwl7CisJCUFzc2Vy dChhcmcgIT0gTlVMTCk7CisJCWlual9wb2ludF9zdGF0ZS0+ZnJlZV9wYXJhbGxlbF93b3JrZXJz ID0gKih1aW50MzIgKikgYXJnOworCX0KK30KKworLyoKKyAqIFRocm93IGFuIEVSUk9SIG9yIEZB VEFMLCBpZiBzb21lYm9keSByZXF1ZXN0ZWQgaXQuCisgKgorICogRnVuY3Rpb24gY2FsbGVkIGZy b20gcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIuCisgKi8KK3ZvaWQKK2lual90cmlnZ2VyX2xl YWRlcl9mYWlsdXJlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHZvaWQgKnByaXZhdGVfZGF0YSwK KwkJCQkJCSAgIHZvaWQgKmFyZykKK3sKKwlpbnQJCWVsZXZlbDsKKwljaGFyCSplbGV2ZWxfc3Ry OworCisJZXJlcG9ydChMT0csCisJCQllcnJtc2coInRyaWdnZXIgbGVhZGVyIGZhaWx1cmUgaW5q ZWN0aW9uIHBvaW50IGNhbGxlZCIpLAorCQkJZXJyaGlkZXN0bXQodHJ1ZSksIGVycmhpZGVjb250 ZXh0KHRydWUpKTsKKworCWlmIChpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID09IEZBSUxfTk9ORSB8 fAorCQkhaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX2xlYWRlcl9mYWlsdXJlKQorCXsKKwkJcmV0 dXJuOworCX0KKworCWVsZXZlbCA9IGlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPT0gRkFJTF9FUlJP UiA/IEVSUk9SIDogRkFUQUw7CisJZWxldmVsX3N0ciA9IGVsZXZlbCA9PSBFUlJPUiA/ICJlcnJv ciIgOiAiZmF0YWwiOworCisJZXJlcG9ydChlbGV2ZWwsIGVycm1zZygiJXMsIHRyaWdnZXJlZCBi eSBpbmplY3Rpb24gcG9pbnQiLCBlbGV2ZWxfc3RyKSk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9f VjEoZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKTsKK0RhdHVtCitnZXRfcGFy YWxsZWxfYXV0b3ZhY3V1bV9mcmVlX3dvcmtlcnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwl1aW50 MzIJbndvcmtlcnM7CisKKyNpZm5kZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwllbG9nKEVSUk9S LCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKworCUxXTG9ja0Fj cXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisJbndvcmtlcnMgPSBpbmpfcG9p bnRfc3RhdGUtPmZyZWVfcGFyYWxsZWxfd29ya2VyczsKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1 dW1Mb2NrKTsKKworCVBHX1JFVFVSTl9VSU5UMzIobndvcmtlcnMpOworfQorCitQR19GVU5DVElP Tl9JTkZPX1YxKHRyaWdnZXJfbGVhZGVyX2ZhaWx1cmUpOworRGF0dW0KK3RyaWdnZXJfbGVhZGVy X2ZhaWx1cmUoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwljb25zdCBjaGFyICpmYWlsdXJlX3R5cGUg PSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpOworCisjaWZuZGVmIFVTRV9J TkpFQ1RJT05fUE9JTlRTCisJZWxvZyhFUlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90IHN1cHBv cnRlZCIpOworI2VuZGlmCisKKwlpZiAoc3RyY21wKGZhaWx1cmVfdHlwZSwgIk5PTkUiKSA9PSAw KQorCQlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworCWVsc2UgaWYgKHN0cmNt cChmYWlsdXJlX3R5cGUsICJFUlJPUiIpID09IDApCisJCWlual9wb2ludF9zdGF0ZS0+ZnR5cGUg PSBGQUlMX0VSUk9SOworCWVsc2UgaWYgKHN0cmNtcChmYWlsdXJlX3R5cGUsICJGQVRBTCIpID09 IDApCisJCWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlMX0ZBVEFMOworCWVsc2UKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkgZXJybXNnKCJpbnZhbGlkIGxlYWRlciBmYWlsdXJlIHR5cGUgOiAlcyIsIGZhaWx1 cmVfdHlwZSkpKTsKKworCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9f VjEoaW5qX3NldF9mcmVlX3dvcmtlcnNfYXR0YWNoKTsKK0RhdHVtCitpbmpfc2V0X2ZyZWVfd29y a2Vyc19hdHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BP SU5UUworCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9zZXRfZnJlZV93b3JrZXJzID0gdHJ1ZTsK KwlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJTF9OT05FOworI2Vsc2UKKwllbG9nKEVSUk9S LCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5f Vk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9zZXRfZnJlZV93b3JrZXJzX2Rl dGFjaCk7CitEYXR1bQoraW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKFBHX0ZVTkNUSU9OX0FS R1MpCit7CisjaWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKKwlpbmpfcG9pbnRfc3RhdGUtPmVu YWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9IGZhbHNlOworI2Vsc2UKKwllbG9nKEVSUk9SLCAiaW5q ZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5fVk9JRCgp OworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGlual9sZWFkZXJfZmFpbHVyZV9hdHRhY2gpOwor RGF0dW0KK2lual9sZWFkZXJfZmFpbHVyZV9hdHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNp ZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9sZWFk ZXJfZmFpbHVyZSA9IHRydWU7CisjZWxzZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRz IG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZV TkNUSU9OX0lORk9fVjEoaW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaCk7CitEYXR1bQoraW5qX2xl YWRlcl9mYWlsdXJlX2RldGFjaChQR19GVU5DVElPTl9BUkdTKQoreworI2lmZGVmIFVTRV9JTkpF Q1RJT05fUE9JTlRTCisJaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX2xlYWRlcl9mYWlsdXJlID0g ZmFsc2U7CisjZWxzZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0 ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCBiL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYjdmYWQyNThmMAotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1 bS5jb250cm9sCkBAIC0wLDAgKzEsMyBAQAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9yIHBhcmFs bGVsIGF1dG92YWN1dW0nCitkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1l ID0gJyRsaWJkaXIvdGVzdF9hdXRvdmFjdXVtJwotLSAKMi40My4wCgo= --00000000000073ddc2064237bc22 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v12-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhal2qvy2 RnJvbSA1N2VhNGMzMTg2NjRmNmUwYjcyMDQwZDE0ZTdhN2Q5ZjgyZDIwMzZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBNb24sIDE4IEF1ZyAyMDI1IDE1OjE0OjI1ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTIgMi80XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyMCArKysrKysr KysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBkMmIwMzFmZGQwNi4uZDM2 NGNkZTVmZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0Nyw2ICsz NDcsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCiAJLyogSW5zdHJ1bWVudGF0aW9u IGNvdW50ZXJzICovCiAJaW50CQkJbnVtX2luZGV4X3NjYW5zOworCisJLyoKKwkgKiBOdW1iZXIg b2YgcGxhbm5lZCBhbmQgYWN0dWFsbHkgbGF1bmNoZWQgcGFyYWxsZWwgd29ya2VycyBmb3IgYWxs IGluZGV4CisJICogc2NhbnMsIG9yIE5VTEwKKwkgKi8KKwlQVldvcmtlcnNVc2FnZSAqd29ya2Vy c191c2FnZTsKIAkvKiBDb3VudGVycyB0aGF0IGZvbGxvdyBhcmUgb25seSBmb3Igc2Nhbm5lZF9w YWdlcyAqLwogCWludDY0CQl0dXBsZXNfZGVsZXRlZDsgLyogIyBkZWxldGVkIGZyb20gdGFibGUg Ki8KIAlpbnQ2NAkJdHVwbGVzX2Zyb3plbjsJLyogIyBuZXdseSBmcm96ZW4gKi8KQEAgLTcwMCw2 ICs3MDYsMTYgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgY29uc3QgVmFjdXVtUGFy YW1zIHBhcmFtcywKIAkJaW5kbmFtZXMgPSBwYWxsb2Moc2l6ZW9mKGNoYXIgKikgKiB2YWNyZWwt Pm5pbmRleGVzKTsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCB2YWNyZWwtPm5pbmRleGVzOyBpKysp CiAJCQlpbmRuYW1lc1tpXSA9IHBzdHJkdXAoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodmFjcmVs LT5pbmRyZWxzW2ldKSk7CisKKwkJLyoKKwkJICogQWxsb2NhdGUgc3BhY2UgZm9yIHdvcmtlcnMg dXNhZ2Ugc3RhdGlzdGljcy4gVGh1cywgd2UgZXhwbGljaXRseQorCQkgKiBtYWtlIGNsZWFyIHRo YXQgc3VjaCBzdGF0aXN0aWNzIG11c3QgYmUgYWNjdW11bGF0ZWQuIEZvciBub3csIHRoaXMKKwkJ ICogaXMgdXNlZCBvbmx5IGJ5IGF1dG92YWN1dW0gbGVhZGVyIHdvcmtlciwgYmVjYXVzZSBpdCBt dXN0IGxvZyBpdCBpbgorCQkgKiB0aGUgZW5kIG9mIHRhYmxlIHByb2Nlc3NpbmcuCisJCSAqLwor CQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPwor CQkJKFBWV29ya2Vyc1VzYWdlICopIHBhbGxvYzAoc2l6ZW9mKFBWV29ya2Vyc1VzYWdlKSkgOgor CQkJTlVMTDsKIAl9CiAKIAkvKgpAQCAtMTAyNCw2ICsxMDQwLDExIEBAIGhlYXBfdmFjdXVtX3Jl bChSZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCQkJCQkJIHZhY3Jl bC0+cmVsbmFtZXNwYWNlLAogCQkJCQkJCSB2YWNyZWwtPnJlbG5hbWUsCiAJCQkJCQkJIHZhY3Jl bC0+bnVtX2luZGV4X3NjYW5zKTsKKwkJCWlmICh2YWNyZWwtPndvcmtlcnNfdXNhZ2UpCisJCQkJ YXBwZW5kU3RyaW5nSW5mbygmYnVmLAorCQkJCQkJCQkgXygid29ya2VycyB1c2FnZSBzdGF0aXN0 aWNzIGZvciBhbGwgb2YgaW5kZXggc2NhbnMgOiBsYXVuY2hlZCBpbiB0b3RhbCA9ICVkLCBwbGFu bmVkIGluIHRvdGFsID0gJWRcbiIpLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLT5u bGF1bmNoZWQsCisJCQkJCQkJCSB2YWNyZWwtPndvcmtlcnNfdXNhZ2UtPm5wbGFubmVkKTsKIAkJ CWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwgXygicGFnZXM6ICV1IHJlbW92ZWQsICV1IHJlbWFpbiwg JXUgc2Nhbm5lZCAoJS4yZiUlIG9mIHRvdGFsKSwgJXUgZWFnZXJseSBzY2FubmVkXG4iKSwKIAkJ CQkJCQkgdmFjcmVsLT5yZW1vdmVkX3BhZ2VzLAogCQkJCQkJCSBuZXdfcmVsX3BhZ2VzLApAQCAt MjY1Myw3ICsyNjc0LDggQEAgbGF6eV92YWN1dW1fYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFj cmVsKQogCXsKIAkJLyogT3V0c291cmNlIGV2ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAq LwogCQlwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgb2xk X2xpdmVfdHVwbGVzLAotCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRleF9zY2Fucyk7CisJCQkJ CQkJCQkJCXZhY3JlbC0+bnVtX2luZGV4X3NjYW5zLAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtl cnNfdXNhZ2UpOwogCiAJCS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5 aW5nIHdyYXBhcm91bmQgZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzA4NSw3ICszMTA3LDggQEAg bGF6eV9jbGVhbnVwX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291 cmNlIGV2ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1f Y2xlYW51cF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2 YWNyZWwtPm51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJ CQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtlcnNfdXNh Z2UpOwogCX0KIAogCS8qIFJlc2V0IHRoZSBwcm9ncmVzcyBjb3VudGVycyAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggYWNkNTNiODViMWMuLjlhMjU4MjM4NjUwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTIyNyw3ICsyMjcsNyBAQCBz dHJ1Y3QgUGFyYWxsZWxWYWN1dW1TdGF0ZQogc3RhdGljIGludAlwYXJhbGxlbF92YWN1dW1fY29t cHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVz dGVkLAogCQkJCQkJCQkJCQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9p ZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsIGludCBudW1faW5kZXhfc2NhbnMsCi0JCQkJCQkJCQkJCQlib29sIHZhY3V1bSk7CisJ CQkJCQkJCQkJCQlib29sIHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBzdGF0aWMg dm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1T dGF0ZSAqcHZzKTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3Vuc2FmZV9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlv biBpbmRyZWwsCkBAIC01MDIsNyArNTAyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRf aXRlbXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKQogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1 dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVt X3RhYmxlX3R1cGxlcywKLQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpCisJCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zLCBQVldvcmtlcnNVc2FnZSAqd3VzYWdlKQogewogCUFzc2VydCgh SXNQYXJhbGxlbFdvcmtlcigpKTsKIApAQCAtNTEzLDcgKzUxMyw3IEBAIHBhcmFsbGVsX3ZhY3V1 bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1f dGFibGVfdHVwCiAJcHZzLT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJsZV90dXBsZXM7CiAJ cHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudCA9IHRydWU7CiAKLQlwYXJhbGxlbF92YWN1dW1f cHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgdHJ1ZSk7CisJcGFyYWxs ZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUs IHd1c2FnZSk7CiB9CiAKIC8qCkBAIC01MjEsNyArNTIxLDggQEAgcGFyYWxsZWxfdmFjdXVtX2J1 bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJs ZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkKKwkJCQkJCQkJCWludCBu dW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJUFZXb3JrZXJz VXNhZ2UgKnd1c2FnZSkKIHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUz Myw3ICs1MzQsNyBAQCBwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxl bFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0 dXBsZXMgPSBudW1fdGFibGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQg PSBlc3RpbWF0ZWRfY291bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhl cyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNz X2FsbF9pbmRleGVzKHB2cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwgd3VzYWdlKTsKIH0KIAog LyoKQEAgLTYxOCw3ICs2MTksNyBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJl bGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogICovCiBzdGF0 aWMgdm9pZAogcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJYm9vbCB2YWN1dW0p CisJCQkJCQkJCQlib29sIHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlpbnQJ CQlud29ya2VyczsKIAlQVkluZFZhY1N0YXR1cyBuZXdfc3RhdHVzOwpAQCAtNzQyLDYgKzc0Mywx MyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0 YXRlICpwdnMsIGludCBudW1faW5kZXhfc2NhbgogCQkJCQkJCQkJICJsYXVuY2hlZCAlZCBwYXJh bGxlbCB2YWN1dW0gd29ya2VycyBmb3IgaW5kZXggY2xlYW51cCAocGxhbm5lZDogJWQpIiwKIAkJ CQkJCQkJCSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkKSwKIAkJCQkJCQlwdnMtPnBjeHQt Pm53b3JrZXJzX2xhdW5jaGVkLCBud29ya2VycykpKTsKKworCQkvKiBSZW1lbWJlciB0aGVzZSB2 YWx1ZXMsIGlmIHdlIGFza2VkIHRvLiAqLworCQlpZiAod3VzYWdlICE9IE5VTEwpCisJCXsKKwkJ CXd1c2FnZS0+bmxhdW5jaGVkICs9IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7CisJCQl3 dXNhZ2UtPm5wbGFubmVkICs9IG53b3JrZXJzOworCQl9CiAJfQogCiAJLyogVmFjdXVtIHRoZSBp bmRleGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBieSBvbmx5IGxlYWRlciBwcm9jZXNzICovCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL3ZhY3V1bS5oCmluZGV4IDFmMzI5MGM3ZmJmLi45MDcwOWNhMzEwNyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmgKQEAgLTMwMCw2ICszMDAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0 ZW1zSW5mbwogCWludDY0CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmllcyAqLwog fSBWYWNEZWFkSXRlbXNJbmZvOwogCisvKgorICogUFZXb3JrZXJzVXNhZ2Ugc3RvcmVzIGluZm9y bWF0aW9uIGFib3V0IHRvdGFsIG51bWJlciBvZiBsYXVuY2hlZCBhbmQgcGxhbm5lZAorICogd29y a2VycyBkdXJpbmcgcGFyYWxsZWwgdmFjdXVtLgorICovCit0eXBlZGVmIHN0cnVjdCBQVldvcmtl cnNVc2FnZQoreworCWludAkJCW5sYXVuY2hlZDsKKwlpbnQJCQlucGxhbm5lZDsKK30gUFZXb3Jr ZXJzVXNhZ2U7CisKIC8qIEdVQyBwYXJhbWV0ZXJzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50 IGRlZmF1bHRfc3RhdGlzdGljc190YXJnZXQ7CS8qIFBHRExMSU1QT1JUIGZvciBQb3N0R0lTICov CiBleHRlcm4gUEdETExJTVBPUlQgaW50IHZhY3V1bV9mcmVlemVfbWluX2FnZTsKQEAgLTM5NCwx MSArNDA0LDEzIEBAIGV4dGVybiBUaWRTdG9yZSAqcGFyYWxsZWxfdmFjdXVtX2dldF9kZWFkX2l0 ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1 bV9yZXNldF9kZWFkX2l0ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBleHRlcm4gdm9p ZCBwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRl ICpwdnMsCiAJCQkJCQkJCQkJCQlsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQkJCQlp bnQgbnVtX2luZGV4X3NjYW5zKTsKKwkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCisJ CQkJCQkJCQkJCQlQVldvcmtlcnNVc2FnZSAqd3VzYWdlKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVs X3ZhY3V1bV9jbGVhbnVwX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJ CQkJCQkJCQkJCWxvbmcgbnVtX3RhYmxlX3R1cGxlcywKIAkJCQkJCQkJCQkJCWludCBudW1faW5k ZXhfc2NhbnMsCi0JCQkJCQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCk7CisJCQkJCQkJCQkJ CQlib29sIGVzdGltYXRlZF9jb3VudCwKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNh Z2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywg c2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQg YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90 eXBlZGVmcy5saXN0CmluZGV4IDQzZmUzYmNkNTkzLi44MzA3NjNlYjJmYSAxMDA2NDQKLS0tIGEv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKQEAgLTIzNzIsNiArMjM3Miw3IEBAIFB1bGxGaWx0ZXJPcHMKIFB1c2hG aWx0ZXIKIFB1c2hGaWx0ZXJPcHMKIFB1c2hGdW5jdGlvbgorUFZXb3JrZXJzVXNhZ2UKIFB5Q0Z1 bmN0aW9uCiBQeU1ldGhvZERlZgogUHlNb2R1bGVEZWYKLS0gCjIuNDMuMAoK --00000000000073ddc2064237bc22 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-Parallel-index-autovacuum.patch" Content-Disposition: attachment; filename="v12-0001-Parallel-index-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mhal2qw63 RnJvbSAyMjE3ZmM3YjI5M2MyNjdhYjQ5N2M4NDI1MWRhZTMxYzBiZmRhN2U5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDI4IE9jdCAyMDI1IDE3OjQ3OjEzICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTJdIFBhcmFsbGVsIGluZGV4IGF1dG92YWN1dW0KCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2NvbW1vbi9yZWxvcHRpb25zLmMgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC9jb21tYW5k cy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgNDIgKysrKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jICAgICAgICAgICB8IDE2MyArKysrKysrKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC91dGlscy9taXNjL2d1Yy5jICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0ICAgICB8ICAgOSArCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9w c3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L21pc2NhZG1pbi5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9w b3N0bWFzdGVyL2F1dG92YWN1dW0uaCAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvdXRp bHMvcmVsLmggICAgICAgICAgICAgICAgICAgICAgIHwgICA3ICsKIDExIGZpbGVzIGNoYW5nZWQs IDIzOSBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21t b24vcmVsb3B0aW9ucy5jCmluZGV4IDllMjg4ZGZlY2JmLi4zY2MyOWQ0NDU0YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKQEAgLTIyMiw2ICsyMjIsMTUgQEAgc3RhdGlj IHJlbG9wdF9pbnQgaW50UmVsT3B0c1tdID0KIAkJfSwKIAkJU1BHSVNUX0RFRkFVTFRfRklMTEZB Q1RPUiwgU1BHSVNUX01JTl9GSUxMRkFDVE9SLCAxMDAKIAl9LAorCXsKKwkJeworCQkJImF1dG92 YWN1dW1fcGFyYWxsZWxfd29ya2VycyIsCisJCQkiTWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwg YXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHByb2Nlc3NpbmcgdGhpcyB0 YWJsZS4iLAorCQkJUkVMT1BUX0tJTkRfSEVBUCwKKwkJCVNoYXJlVXBkYXRlRXhjbHVzaXZlTG9j aworCQl9LAorCQktMSwgLTEsIDEwMjQKKwl9LAogCXsKIAkJewogCQkJImF1dG92YWN1dW1fdmFj dXVtX3RocmVzaG9sZCIsCkBAIC0xODgxLDYgKzE4OTAsOCBAQCBkZWZhdWx0X3JlbG9wdGlvbnMo RGF0dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSwgcmVsb3B0X2tpbmQga2luZCkKIAkJeyJm aWxsZmFjdG9yIiwgUkVMT1BUX1RZUEVfSU5ULCBvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGZpbGxm YWN0b3IpfSwKIAkJeyJhdXRvdmFjdXVtX2VuYWJsZWQiLCBSRUxPUFRfVFlQRV9CT09MLAogCQlv ZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMs IGVuYWJsZWQpfSwKKwkJeyJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLCBSRUxPUFRfVFlQ RV9JTlQsCisJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgYXV0b3ZhY3V1bSkgKyBvZmZzZXRvZihB dXRvVmFjT3B0cywgYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzKX0sCiAJCXsiYXV0b3ZhY3V1 bV92YWN1dW1fdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVfSU5ULAogCQlvZmZzZXRvZihTdGRSZE9w dGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0b1ZhY09wdHMsIHZhY3V1bV90aHJlc2hv bGQpfSwKIAkJeyJhdXRvdmFjdXVtX3ZhY3V1bV9tYXhfdGhyZXNob2xkIiwgUkVMT1BUX1RZUEVf SU5ULApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggMGZlZWExZDMwZWMu LmFjZDUzYjg1YjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJh bGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTEs NyArMSw5IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiB2YWN1dW1wYXJhbGxlbC5jCi0g KgkgIFN1cHBvcnQgcm91dGluZXMgZm9yIHBhcmFsbGVsIHZhY3V1bSBleGVjdXRpb24uCisgKgkg IFN1cHBvcnQgcm91dGluZXMgZm9yIHBhcmFsbGVsIHZhY3V1bSBhbmQgYXV0b3ZhY3V1bSBleGVj dXRpb24uIEluIHRoZQorICoJICBjb21tZW50cyBiZWxvdywgdGhlIHdvcmQgInZhY3V1bSIgd2ls bCByZWZlciB0byBib3RoIHZhY3V1bSBhbmQKKyAqCSAgYXV0b3ZhY3V1bS4KICAqCiAgKiBUaGlz IGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0 aW5nIHVwLCB1c2luZywKICAqIGFuZCB0ZWFyaW5nIGRvd24gYSBQYXJhbGxlbFZhY3V1bVN0YXRl LgpAQCAtMzQsNiArMzYsNyBAQAogI2luY2x1ZGUgImV4ZWN1dG9yL2luc3RydW1lbnQuaCIKICNp bmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgog I2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIK QEAgLTM3Myw4ICszNzYsOSBAQCBwYXJhbGxlbF92YWN1dW1faW5pdChSZWxhdGlvbiByZWwsIFJl bGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsCiAJc2hhcmVkLT5xdWVyeWlkID0gcGdzdGF0 X2dldF9teV9xdWVyeV9pZCgpOwogCXNoYXJlZC0+bWFpbnRlbmFuY2Vfd29ya19tZW1fd29ya2Vy ID0KIAkJKG5pbmRleGVzX213bSA+IDApID8KLQkJbWFpbnRlbmFuY2Vfd29ya19tZW0gLyBNaW4o cGFyYWxsZWxfd29ya2VycywgbmluZGV4ZXNfbXdtKSA6Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVt OworCQl2YWNfd29ya19tZW0gLyBNaW4ocGFyYWxsZWxfd29ya2VycywgbmluZGV4ZXNfbXdtKSA6 CisJCXZhY193b3JrX21lbTsKKwogCXNoYXJlZC0+ZGVhZF9pdGVtc19pbmZvLm1heF9ieXRlcyA9 IHZhY193b3JrX21lbSAqIChzaXplX3QpIDEwMjQ7CiAKIAkvKiBQcmVwYXJlIERTQSBzcGFjZSBm b3IgZGVhZCBpdGVtcyAqLwpAQCAtNTUzLDEyICs1NTcsMTcgQEAgcGFyYWxsZWxfdmFjdXVtX2Nv bXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVl c3RlZCwKIAlpbnQJCQluaW5kZXhlc19wYXJhbGxlbF9idWxrZGVsID0gMDsKIAlpbnQJCQluaW5k ZXhlc19wYXJhbGxlbF9jbGVhbnVwID0gMDsKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOworCWlu dAkJCW1heF93b3JrZXJzOworCisJbWF4X3dvcmtlcnMgPSBBbUF1dG9WYWN1dW1Xb3JrZXJQcm9j ZXNzKCkgPworCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIDoKKwkJbWF4X3BhcmFs bGVsX21haW50ZW5hbmNlX3dvcmtlcnM7CiAKIAkvKgogCSAqIFdlIGRvbid0IGFsbG93IHBlcmZv cm1pbmcgcGFyYWxsZWwgb3BlcmF0aW9uIGluIHN0YW5kYWxvbmUgYmFja2VuZCBvcgogCSAqIHdo ZW4gcGFyYWxsZWxpc20gaXMgZGlzYWJsZWQuCiAJICovCi0JaWYgKCFJc1VuZGVyUG9zdG1hc3Rl ciB8fCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2VycyA9PSAwKQorCWlmICghSXNVbmRl clBvc3RtYXN0ZXIgfHwgbWF4X3dvcmtlcnMgPT0gMCkKIAkJcmV0dXJuIDA7CiAKIAkvKgpAQCAt NTk3LDggKzYwNiw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21wdXRlX3dvcmtlcnMoUmVsYXRpb24g KmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0ZWQsCiAJcGFyYWxsZWxfd29ya2Vy cyA9IChucmVxdWVzdGVkID4gMCkgPwogCQlNaW4obnJlcXVlc3RlZCwgbmluZGV4ZXNfcGFyYWxs ZWwpIDogbmluZGV4ZXNfcGFyYWxsZWw7CiAKLQkvKiBDYXAgYnkgbWF4X3BhcmFsbGVsX21haW50 ZW5hbmNlX3dvcmtlcnMgKi8KLQlwYXJhbGxlbF93b3JrZXJzID0gTWluKHBhcmFsbGVsX3dvcmtl cnMsIG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzKTsKKwkvKiBDYXAgYnkgR1VDIHZh cmlhYmxlICovCisJcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJzLCBtYXhf d29ya2Vycyk7CiAKIAlyZXR1cm4gcGFyYWxsZWxfd29ya2VyczsKIH0KQEAgLTY0Niw2ICs2NTUs MTMgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1T dGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAkgKi8KIAlud29ya2VycyA9IE1pbihud29y a2VycywgcHZzLT5wY3h0LT5ud29ya2Vycyk7CiAKKwkvKgorCSAqIFJlc2VydmUgd29ya2VycyBp biBhdXRvdmFjdXVtIGdsb2JhbCBzdGF0ZS4gTm90ZSwgdGhhdCB3ZSBtYXkgYmUgZ2l2ZW4KKwkg KiBmZXdlciB3b3JrZXJzIHRoYW4gd2UgcmVxdWVzdGVkLgorCSAqLworCWlmIChBbUF1dG9WYWN1 dW1Xb3JrZXJQcm9jZXNzKCkgJiYgbndvcmtlcnMgPiAwKQorCQlud29ya2VycyA9IEF1dG9WYWN1 dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKG53b3JrZXJzKTsKKwogCS8qCiAJICogU2V0IGluZGV4 IHZhY3V1bSBzdGF0dXMgYW5kIG1hcmsgd2hldGhlciBwYXJhbGxlbCB2YWN1dW0gd29ya2VyIGNh bgogCSAqIHByb2Nlc3MgaXQuCkBAIC02OTAsNiArNzA2LDE2IEBAIHBhcmFsbGVsX3ZhY3V1bV9w cm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRl eF9zY2FuCiAKIAkJTGF1bmNoUGFyYWxsZWxXb3JrZXJzKHB2cy0+cGN4dCk7CiAKKwkJaWYgKEFt QXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVu Y2hlZCA8IG53b3JrZXJzKQorCQl7CisJCQkvKgorCQkJICogVGVsbCBhdXRvdmFjdXVtIHRoYXQg d2UgY291bGQgbm90IGxhdW5jaCBhbGwgdGhlIHByZXZpb3VzbHkKKwkJCSAqIHJlc2VydmVkIHdv cmtlcnMuCisJCQkgKi8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKG53b3Jr ZXJzIC0gcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CisJCX0KKwogCQlpZiAocHZzLT5w Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCA+IDApCiAJCXsKIAkJCS8qCkBAIC03MzgsNiArNzY0LDEw IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBwdnMt PnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkOyBpKyspCiAJCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVy eSgmcHZzLT5idWZmZXJfdXNhZ2VbaV0sICZwdnMtPndhbF91c2FnZVtpXSk7CisKKwkJLyogQWxz byByZWxlYXNlIGFsbCBwcmV2aW91c2x5IHJlc2VydmVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyAqLworCQlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHB2cy0+cGN4dC0+ bndvcmtlcnNfbGF1bmNoZWQgPiAwKQorCQkJQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtl cnMocHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggNTA4NGFmN2RmYjYuLjk0OTlkNGYwYzEyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTUxLDYgKzE1MSwxMiBAQCBpbnQJCQlMb2df YXV0b2FuYWx5emVfbWluX2R1cmF0aW9uID0gNjAwMDAwOwogc3RhdGljIGRvdWJsZSBhdl9zdG9y YWdlX3BhcmFtX2Nvc3RfZGVsYXkgPSAtMTsKIHN0YXRpYyBpbnQJYXZfc3RvcmFnZV9wYXJhbV9j b3N0X2xpbWl0ID0gLTE7CiAKKy8qCisgKiBWYXJpYWJsZSB0byBrZWVwIG51bWJlciBvZiBjdXJy ZW50bHkgcmVzZXJ2ZWQgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLgorICogSXQgaXMgb25s eSByZWxldmFudCBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAqLwor c3RhdGljIGludAlhdl9ud29ya2Vyc19yZXNlcnZlZCA9IDA7CisKIC8qIEZsYWdzIHNldCBieSBz aWduYWwgaGFuZGxlcnMgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X1NJR1VT UjIgPSBmYWxzZTsKIApAQCAtMjg1LDYgKzI5MSw4IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1 dW1Xb3JrSXRlbQogICogYXZfd29ya0l0ZW1zCQl3b3JrIGl0ZW0gYXJyYXkKICAqIGF2X253b3Jr ZXJzRm9yQmFsYW5jZSB0aGUgbnVtYmVyIG9mIGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hl bgogICogCQkJCQljYWxjdWxhdGluZyB0aGUgcGVyIHdvcmtlciBjb3N0IGxpbWl0CisgKiBhdl9m cmVlUGFyYWxsZWxXb3JrZXJzIHRoZSBudW1iZXIgb2YgZnJlZSBwYXJhbGxlbCBhdXRvdmFjdXVt IHdvcmtlcnMKKyAqIGF2X21heFBhcmFsbGVsV29ya2VycyB0aGUgbWF4aW11bSBudW1iZXIgb2Yg cGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzCiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVj dGVkIGJ5IEF1dG92YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAq IG9mIHRoZSB3b3JrZXIgbGlzdCAoc2VlIGFib3ZlKS4KQEAgLTI5OSw2ICszMDcsOCBAQCB0eXBl ZGVmIHN0cnVjdAogCVdvcmtlckluZm8JYXZfc3RhcnRpbmdXb3JrZXI7CiAJQXV0b1ZhY3V1bVdv cmtJdGVtIGF2X3dvcmtJdGVtc1tOVU1fV09SS0lURU1TXTsKIAlwZ19hdG9taWNfdWludDMyIGF2 X253b3JrZXJzRm9yQmFsYW5jZTsKKwl1aW50MzIJCWF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CisJ dWludDMyCQlhdl9tYXhQYXJhbGxlbFdvcmtlcnM7CiB9IEF1dG9WYWN1dW1TaG1lbVN0cnVjdDsK IAogc3RhdGljIEF1dG9WYWN1dW1TaG1lbVN0cnVjdCAqQXV0b1ZhY3V1bVNobWVtOwpAQCAtMzY0 LDYgKzM3NCw3IEBAIHN0YXRpYyB2b2lkIGF1dG92YWNfcmVwb3J0X3dvcmtpdGVtKEF1dG9WYWN1 dW1Xb3JrSXRlbSAqd29ya2l0ZW0sCiBzdGF0aWMgdm9pZCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJ R05BTF9BUkdTKTsKIHN0YXRpYyBib29sIGF2X3dvcmtlcl9hdmFpbGFibGUodm9pZCk7CiBzdGF0 aWMgdm9pZCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKTsKK3N0YXRpYyB2b2lkIGFkanVzdF9m cmVlX3BhcmFsbGVsX3dvcmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpOwogCiAK IApAQCAtNzYzLDYgKzc3NCw4IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRzKHZv aWQpCiAJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcpCiAJewogCQlpbnQJCQlhdXRvdmFjdXVtX21h eF93b3JrZXJzX3ByZXYgPSBhdXRvdmFjdXVtX21heF93b3JrZXJzOworCQlpbnQJCQlhdXRvdmFj dXVtX21heF9wYXJhbGxlbF93b3JrZXJzX3ByZXYgPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxs ZWxfd29ya2VyczsKIAogCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCVByb2Nlc3ND b25maWdGaWxlKFBHQ19TSUdIVVApOwpAQCAtNzc5LDYgKzc5MiwxNSBAQCBQcm9jZXNzQXV0b1Zh Y0xhdW5jaGVySW50ZXJydXB0cyh2b2lkKQogCQlpZiAoYXV0b3ZhY3V1bV9tYXhfd29ya2Vyc19w cmV2ICE9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnMpCiAJCQljaGVja19hdl93b3JrZXJfZ3Vjcygp OwogCisJCS8qCisJCSAqIElmIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgY2hhbmdl ZCwgd2UgbXVzdCB0YWtlIGNhcmUgb2YKKwkJICogdGhlIGNvcnJlY3QgdmFsdWUgb2YgYXZhaWxh YmxlIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyBpbgorCQkgKiBzaG1lbS4KKwkJICovCisJ CWlmIChhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzX3ByZXYgIT0KKwkJCWF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMpCisJCQlhZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJz KGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldik7CisKIAkJLyogcmVidWlsZCB0 aGUgbGlzdCBpbiBjYXNlIHRoZSBuYXB0aW1lIGNoYW5nZWQgKi8KIAkJcmVidWlsZF9kYXRhYmFz ZV9saXN0KEludmFsaWRPaWQpOwogCX0KQEAgLTEzODMsNiArMTQwNSwxNyBAQCBhdmxfc2lndXNy Ml9oYW5kbGVyKFNJR05BTF9BUkdTKQogICoJCQkJCSAgQVVUT1ZBQ1VVTSBXT1JLRVIgQ09ERQog ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLwogCisvKgorICogSWYgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgaXMg ZmluaXNoaW5nIGR1ZSB0byBGQVRBTCBlcnJvciwgbWFrZSBzdXJlCisgKiB0aGF0IGFsbCByZXNl cnZlZCB3b3JrZXJzIGFyZSByZWxlYXNlZC4KKyAqLworc3RhdGljIHZvaWQKK2F1dG92YWN1dW1f d29ya2VyX2JlZm9yZV9zaG1lbV9leGl0KGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJaWYgKGNv ZGUgIT0gMCkKKwkJQXV0b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnMoKTsKK30KKwog LyoKICAqIE1haW4gZW50cnkgcG9pbnQgZm9yIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4K ICAqLwpAQCAtMTQyOSw2ICsxNDYyLDggQEAgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAq c3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9kYXRhX2xlbikKIAlwcXNpZ25hbChTSUdGUEUs IEZsb2F0RXhjZXB0aW9uSGFuZGxlcik7CiAJcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RGTCk7CiAK KwliZWZvcmVfc2htZW1fZXhpdChhdXRvdmFjdXVtX3dvcmtlcl9iZWZvcmVfc2htZW1fZXhpdCwg MCk7CisKIAkvKgogCSAqIENyZWF0ZSBhIHBlci1iYWNrZW5kIFBHUFJPQyBzdHJ1Y3QgaW4gc2hh cmVkIG1lbW9yeS4gIFdlIG11c3QgZG8gdGhpcwogCSAqIGJlZm9yZSB3ZSBjYW4gdXNlIExXTG9j a3Mgb3IgYWNjZXNzIGFueSBzaGFyZWQgbWVtb3J5LgpAQCAtMjQ4MCw2ICsyNTE1LDEyIEBAIGRv X2F1dG92YWN1dW0odm9pZCkKIAkJfQogCQlQR19DQVRDSCgpOwogCQl7CisJCQkvKgorCQkJICog UGFyYWxsZWwgYXV0b3ZhY3V1bSBjYW4gcmVzZXJ2ZSBwYXJhbGxlbCB3b3JrZXJzLiBNYWtlIHN1 cmUgdGhhdAorCQkJICogYWxsIHJlc2VydmVkIHdvcmtlcnMgYXJlIHJlbGVhc2VkLgorCQkJICov CisJCQlBdXRvVmFjdXVtUmVsZWFzZUFsbFBhcmFsbGVsV29ya2VycygpOworCiAJCQkvKgogCQkJ ICogQWJvcnQgdGhlIHRyYW5zYWN0aW9uLCBzdGFydCBhIG5ldyBvbmUsIGFuZCBwcm9jZWVkIHdp dGggdGhlCiAJCQkgKiBuZXh0IHRhYmxlIGluIG91ciBsaXN0LgpAQCAtMjg3Nyw4ICsyOTE4LDEy IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21h cCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4X2NsZWFudXAgPSBWQUNPUFRWQUxVRV9V TlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1bmNhdGUgPSBWQUNPUFRWQUxVRV9VTlNQ RUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24ndCBzdXBwb3J0IHBhcmFsbGVsIHZhY3V1 bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IC0xOworCisJ CS8qIERlY2lkZSB3aGV0aGVyIHdlIG5lZWQgdG8gcHJvY2VzcyBpbmRleGVzIG9mIHRhYmxlIGlu IHBhcmFsbGVsLiAqLworCQl0YWItPmF0X3BhcmFtcy5ud29ya2VycyA9IGF2b3B0cworCQkJPyBh dm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycworCQkJOiAtMTsKKwogCQl0YWItPmF0 X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9taW5fYWdlOwogCQl0YWItPmF0X3BhcmFt cy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxlX2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMu bXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlOwpAQCAt MzM2MCw2ICszNDA1LDg1IEBAIEF1dG9WYWN1dW1SZXF1ZXN0V29yayhBdXRvVmFjdXVtV29ya0l0 ZW1UeXBlIHR5cGUsIE9pZCByZWxhdGlvbklkLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisg KiBJbiBvcmRlciB0byBtZWV0IHRoZSAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vycycg bGltaXQsIGxlYWRlcgorICogYXV0b3ZhY3V1bSBwcm9jZXNzIG11c3QgY2FsbCB0aGlzIGZ1bmN0 aW9uLiBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YKKyAqIHBhcmFsbGVsIHdvcmtlcnMgdGhhdCBh Y3R1YWxseSBjYW4gYmUgbGF1bmNoZWQgYW5kIHJlc2VydmVzIHRoZXNlIHdvcmtlcnMKKyAqIChp ZiBhbnkpIGluIGdsb2JhbCBhdXRvdmFjdXVtIHN0YXRlLgorICoKKyAqIE5PVEU6IFdlIHdpbGwg dHJ5IHRvIHByb3ZpZGUgYXMgbWFueSB3b3JrZXJzIGFzIHJlcXVlc3RlZCwgZXZlbiBpZiBjYWxs ZXIKKyAqIHdpbGwgb2NjdXB5IGFsbCBhdmFpbGFibGUgd29ya2Vycy4KKyAqLworaW50CitBdXRv VmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCit7CisJaW50CQkJbnJl c2VydmVkOworCisJLyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24u ICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdv cmtlcigpKTsKKworCS8qCisJICogV2UgY2FuIG9ubHkgcmVzZXJ2ZSB3b3JrZXJzIGF0IHRoZSBi ZWdpbm5pbmcgb2YgcGFyYWxsZWwgaW5kZXgKKwkgKiBwcm9jZXNzaW5nLCBzbyB3ZSBtdXN0IG5v dCBoYXZlIGFueSByZXNlcnZlZCB3b3JrZXJzIHJpZ2h0IG5vdy4KKwkgKi8KKwlBc3NlcnQoYXZf bndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2Nr LCBMV19FWENMVVNJVkUpOworCisJLyogUHJvdmlkZSBhcyBtYW55IHdvcmtlcnMgYXMgd2UgY2Fu LiAqLworCW5yZXNlcnZlZCA9IE1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdv cmtlcnMsIG53b3JrZXJzKTsKKwlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtl cnMgLT0gbndvcmtlcnM7CisKKwkvKiBSZW1lbWJlciBob3cgbWFueSB3b3JrZXJzIHdlIGhhdmUg cmVzZXJ2ZWQuICovCisJYXZfbndvcmtlcnNfcmVzZXJ2ZWQgKz0gbndvcmtlcnM7CisKKwlMV0xv Y2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKKwlyZXR1cm4gbnJlc2VydmVkOworfQorCisvKgor ICogTGVhZGVyIGF1dG92YWN1dW0gcHJvY2VzcyBtdXN0IGNhbGwgdGhpcyBmdW5jdGlvbiBpbiBv cmRlciB0byB1cGRhdGUgZ2xvYmFsCisgKiBhdXRvdmFjdXVtIHN0YXRlLCBzbyBvdGhlciBsZWFk ZXJzIHdpbGwgYmUgYWJsZSB0byB1c2UgdGhlc2UgcGFyYWxsZWwKKyAqIHdvcmtlcnMuCisgKgor ICogJ253b3JrZXJzJyAtIGhvdyBtYW55IHdvcmtlcnMgY2FsbGVyIHdhbnRzIHRvIHJlbGVhc2Uu CisgKi8KK3ZvaWQKK0F1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2Vy cykKK3sKKwkvKiBPbmx5IGxlYWRlciB3b3JrZXIgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbi4gKi8K KwlBc3NlcnQoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmICFJc1BhcmFsbGVsV29ya2Vy KCkpOworCisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVTSVZFKTsKKwor CS8qCisJICogSWYgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMgd2FzIHJl ZHVjZWQgZHVyaW5nIGV4ZWN1dGlvbiwKKwkgKiB3ZSBtdXN0IGNhcCBhdmFpbGFibGUgd29ya2Vy cyBudW1iZXIgYnkgaXRzIG5ldyB2YWx1ZS4KKwkgKi8KKwlBdXRvVmFjdXVtU2htZW0tPmF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlNaW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxs ZWxXb3JrZXJzICsgbndvcmtlcnMsCisJCQlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVs V29ya2Vycyk7CisKKwkvKiBEb24ndCBoYXZlIHRvIHJlbWVtYmVyIHRoZXNlIHdvcmtlcnMgYW55 bW9yZS4gKi8KKwlhdl9ud29ya2Vyc19yZXNlcnZlZCAtPSBud29ya2VyczsKKworCUxXTG9ja1Jl bGVhc2UoQXV0b3ZhY3V1bUxvY2spOworfQorCisvKgorICogU2FtZSBhcyBhYm92ZSwgYnV0IHJl bGVhc2UgKmFsbCogcGFyYWxsZWwgd29ya2VycywgdGhhdCB3ZXJlIHJlc2VydmVkIGJ5CisgKiBj dXJyZW50IGxlYWRlciBhdXRvdmFjdXVtIHByb2Nlc3MuCisgKi8KK3ZvaWQKK0F1dG9WYWN1dW1S ZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpCit7CisJLyogT25seSBsZWFkZXIgd29ya2Vy IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclBy b2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdvcmtlcigpKTsKKworCWlmIChhdl9ud29ya2Vyc19yZXNl cnZlZCA+IDApCisJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGF2X253b3JrZXJz X3Jlc2VydmVkKTsKK30KKwogLyoKICAqIGF1dG92YWNfaW5pdAogICoJCVRoaXMgaXMgY2FsbGVk IGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6YXRpb24uCkBAIC0zNDIwLDYgKzM1NDQsMTAgQEAgQXV0 b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQogCQlBc3NlcnQoIWZvdW5kKTsKIAogCQlBdXRvVmFjdXVt U2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsKKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJh bGxlbFdvcmtlcnMgPQorCQkJTWluKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1h eF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxX b3JrZXJzID0KKwkJCUF1dG9WYWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogCQlk Y2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vycyk7CiAJCWRsaXN0X2lu aXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfcnVubmluZ1dvcmtlcnMpOwogCQlBdXRvVmFjdXVtU2ht ZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0gTlVMTDsKQEAgLTM1MDEsMyArMzYyOSwzNCBAQCBjaGVj a19hdl93b3JrZXJfZ3Vjcyh2b2lkKQogCQkJCSBlcnJkZXRhaWwoIlRoZSBzZXJ2ZXIgd2lsbCBv bmx5IHN0YXJ0IHVwIHRvIFwiYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHNcIiAoJWQpIGF1dG92YWN1 dW0gd29ya2VycyBhdCBhIGdpdmVuIHRpbWUuIiwKIAkJCQkJCSAgIGF1dG92YWN1dW1fd29ya2Vy X3Nsb3RzKSkpOwogfQorCisvKgorICogTWFrZSBzdXJlIHRoYXQgbnVtYmVyIG9mIGZyZWUgcGFy YWxsZWwgd29ya2VycyBjb3JyZXNwb25kcyB0byB0aGUKKyAqIGF1dG92YWN1dW1fbWF4X3BhcmFs bGVsX3dvcmtlcnMgcGFyYW1ldGVyIChhZnRlciBpdCB3YXMgY2hhbmdlZCkuCisgKi8KK3N0YXRp YyB2b2lkCithZGp1c3RfZnJlZV9wYXJhbGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxl bF93b3JrZXJzKQoreworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lW RSk7CisKKwkvKgorCSAqIENhcCB0aGUgbnVtYmVyIG9mIGZyZWUgd29ya2VycyBieSBuZXcgcGFy YW1ldGVyJ3MgdmFsdWUsIGlmIG5lZWRlZC4KKwkgKi8KKwlBdXRvVmFjdXVtU2htZW0tPmF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlNaW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxs ZWxXb3JrZXJzLAorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vycyk7CisKKwlpZiAo YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA+IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtl cnMpCisJeworCQkvKgorCQkgKiBJZiB1c2VyIHdhbnRzIHRvIGluY3JlYXNlIG51bWJlciBvZiBw YXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMsIHdlCisJCSAqIG11c3QgaW5jcmVhc2UgbnVtYmVy IG9mIGZyZWUgd29ya2Vycy4KKwkJICovCisJCUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFs bGVsV29ya2VycyArPQorCQkJKGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgLSBwcmV2 X21heF9wYXJhbGxlbF93b3JrZXJzKTsKKwl9CisKKwlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBh cmFsbGVsV29ya2VycyA9IGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CisKKwlMV0xv Y2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5k ZXggZDMxY2I0NWEwNTguLmZkMDBkNmY4OWRjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpA QCAtMTQzLDYgKzE0Myw3IEBAIGludAkJCU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJCQlNYXhDb25u ZWN0aW9ucyA9IDEwMDsKIGludAkJCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gODsKIGludAkJCW1h eF9wYXJhbGxlbF93b3JrZXJzID0gODsKK2ludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dv cmtlcnMgPSAwOwogaW50CQkJTWF4QmFja2VuZHMgPSAwOwogCiAvKiBHVUMgcGFyYW1ldGVycyBm b3IgdmFjdXVtICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRleCBhODIyODZjYzk4YS4uZTdjNTk4MmRh MmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpAQCAtMzM4Nyw5ICszMzg3LDEzIEBAIHNldF9jb25maWdf d2l0aF9oYW5kbGUoY29uc3QgY2hhciAqbmFtZSwgY29uZmlnX2hhbmRsZSAqaGFuZGxlLAogCSAq CiAJICogQWxzbyBhbGxvdyBub3JtYWwgc2V0dGluZyBpZiB0aGUgR1VDIGlzIG1hcmtlZCBHVUNf QUxMT1dfSU5fUEFSQUxMRUwuCiAJICoKLQkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8g YWZmZWN0IG90aGVyIHdvcmtlcnMsIHNvIGZvcmJpZCB0aGVtLgorCSAqIE90aGVyIGNoYW5nZXMg bWlnaHQgbmVlZCB0byBhZmZlY3Qgb3RoZXIgd29ya2Vycywgc28gZm9yYmlkIHRoZW0uIE5vdGUs CisJICogdGhhdCBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlciBpcyBhbiBleGNlcHRpb24sIGJl Y2F1c2Ugb25seSBjb3N0LWJhc2VkCisJICogZGVsYXlzIG5lZWQgdG8gYmUgYWZmZWN0ZWQgYWxz byB0byBwYXJhbGxlbCB2YWN1dW0gd29ya2VycywgYW5kIHdlIHdpbGwKKwkgKiBoYW5kbGUgaXQg ZWxzZXdoZXJlIGlmIGFwcHJvcHJpYXRlLgogCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkg JiYgY2hhbmdlVmFsICYmIGFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKKwlpZiAoSXNJblBh cmFsbGVsTW9kZSgpICYmICFBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgY2hhbmdlVmFs ICYmCisJCWFjdGlvbiAhPSBHVUNfQUNUSU9OX1NBVkUgJiYKIAkJKHJlY29yZC0+ZmxhZ3MgJiBH VUNfQUxMT1dfSU5fUEFSQUxMRUwpID09IDApCiAJewogCQllcmVwb3J0KGVsZXZlbCwKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVycy5kYXQKaW5kZXggZDZmYzgzMzM4NTAuLjVm YmRhNjZiM2Q0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0 ZXJzLmRhdAorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApA QCAtMjEyOSw2ICsyMTI5LDE1IEBACiAgIG1heCA9PiAnTUFYX0JBQ0tFTkRTJywKIH0sCiAKK3sg bmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycycsIHR5cGUgPT4gJ2ludCcs IGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9WQUNVVU0nLAor ICBzaG9ydF9kZXNjID0+ICdNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdv cmtlcnMsIHRoYXQgY2FuIGJlIHRha2VuIGZyb20gYmd3b3JrZXJzIHBvb2wuJywKKyAgbG9uZ19k ZXNjID0+ICdUaGlzIHBhcmFtZXRlciBpcyBjYXBwZWQgYnkgIm1heF93b3JrZXJfcHJvY2Vzc2Vz IiAobm90IGJ5ICJhdXRvdmFjdXVtX21heF93b3JrZXJzIiEpLicsCisgIHZhcmlhYmxlID0+ICdh dXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJywKKyAgYm9vdF92YWwgPT4gJzAnLAorICBt aW4gPT4gJzAnLAorICBtYXggPT4gJ01BWF9CQUNLRU5EUycsCit9LAorCiB7IG5hbWUgPT4gJ21h eF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJzJywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9 PiAnUEdDX1VTRVJTRVQnLCBncm91cCA9PiAnUkVTT1VSQ0VTX1dPUktFUl9QUk9DRVNTRVMnLAog ICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBwcm9j ZXNzZXMgcGVyIG1haW50ZW5hbmNlIG9wZXJhdGlvbi4nLAogICB2YXJpYWJsZSA9PiAnbWF4X3Bh cmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9w b3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGY2MmI2MTk2N2VmLi5iM2U0NzFlZDMzZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtNjkx LDYgKzY5MSw3IEBACiBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2CSMgYXV0b3ZhY3V1bSB3 b3JrZXIgc2xvdHMgdG8gYWxsb2NhdGUKIAkJCQkJIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQp CiAjYXV0b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMJCSMgbWF4IG51bWJlciBvZiBhdXRvdmFjdXVt IHN1YnByb2Nlc3NlcworI2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAwCSMgZGlz YWJsZWQgYnkgZGVmYXVsdCBhbmQgbGltaXRlZCBieSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogI2F1 dG92YWN1dW1fbmFwdGltZSA9IDFtaW4JCSMgdGltZSBiZXR3ZWVuIGF1dG92YWN1dW0gcnVucwog I2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUwCSMgbWluIG51bWJlciBvZiByb3cgdXBk YXRlcyBiZWZvcmUKIAkJCQkJIyB2YWN1dW0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCAzNmVh NmE0ZDU1Ny4uZDg5ZGE2MDY5MjAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTE0MTIsNiAr MTQxMiw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB0YWJsZV9zdG9yYWdlX3BhcmFtZXRl cnNbXSA9IHsKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UiLAogCSJhdXRv dmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWluX2FnZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0 X2ZyZWV6ZV90YWJsZV9hZ2UiLAorCSJhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLAogCSJh dXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9s aW1pdCIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2luc2VydF9zY2FsZV9mYWN0b3IiLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaApp bmRleCAxYmVmOTg0NzFjMy4uODU5MjY0MTU2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCisrKyBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCkBAIC0xNzcsNiArMTc3LDcg QEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhCYWNrZW5kczsKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgTWF4Q29ubmVjdGlvbnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF93b3JrZXJf cHJvY2Vzc2VzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxsZWxfd29ya2VyczsK K2V4dGVybiBQR0RMTElNUE9SVCBpbnQgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczsK IAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBjb21taXRfdGltZXN0YW1wX2J1ZmZlcnM7CiBleHRl cm4gUEdETExJTVBPUlQgaW50IG11bHRpeGFjdF9tZW1iZXJfYnVmZmVyczsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9hdXRvdmFjdXVtLmgKaW5kZXggMDIzYWM2ZDVmYTguLmY0YjkzYjQ0NTMxIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAorKysgYi9zcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjUsNiArNjUsMTEgQEAgcGdfbm9yZXR1cm4g ZXh0ZXJuIHZvaWQgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBz aXplX3Qgc3RhcnQKIGV4dGVybiBib29sIEF1dG9WYWN1dW1SZXF1ZXN0V29yayhBdXRvVmFjdXVt V29ya0l0ZW1UeXBlIHR5cGUsCiAJCQkJCQkJCSAgT2lkIHJlbGF0aW9uSWQsIEJsb2NrTnVtYmVy IGJsa25vKTsKIAorLyogcGFyYWxsZWwgYXV0b3ZhY3V1bSBzdHVmZiAqLworZXh0ZXJuIGludAlB dXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpOworZXh0ZXJuIHZv aWQgQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKTsKK2V4dGVy biB2b2lkIEF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKHZvaWQpOworCiAvKiBz aGFyZWQgbWVtb3J5IHN0dWZmICovCiBleHRlcm4gU2l6ZSBBdXRvVmFjdXVtU2htZW1TaXplKHZv aWQpOwogZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKaW5kZXgg ODAyODYwNzZhMTEuLmU4NzlmZGNmYzY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9y ZWwuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaApAQCAtMzExLDYgKzMxMSwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBGb3JlaWduS2V5Q2FjaGVJbmZvCiB0eXBlZGVmIHN0cnVjdCBBdXRvVmFj T3B0cwogewogCWJvb2wJCWVuYWJsZWQ7CisKKwkvKgorCSAqIE1heCBudW1iZXIgb2YgcGFyYWxs ZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwKKwkgKiBk ZWdyZWUgd2lsbCBjb21wdXRlZCBiYXNlZCBvbiBudW1iZXIgb2YgaW5kZXhlcy4KKwkgKi8KKwlp bnQJCQlhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM7CisKIAlpbnQJCQl2YWN1dW1fdGhyZXNo b2xkOwogCWludAkJCXZhY3V1bV9tYXhfdGhyZXNob2xkOwogCWludAkJCXZhY3V1bV9pbnNfdGhy ZXNob2xkOwotLSAKMi40My4wCgo= --00000000000073ddc2064237bc22--