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 1ue6l5-0057px-KF for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Jul 2025 06:45:52 +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 1ue6l4-005XHg-OR for pgsql-hackers@arkaria.postgresql.org; Tue, 22 Jul 2025 06:45:51 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <3danissimo@gmail.com>) id 1ue6l4-005XHW-2x for pgsql-hackers@lists.postgresql.org; Tue, 22 Jul 2025 06:45:50 +0000 Received: from mail-yw1-x112e.google.com ([2607:f8b0:4864:20::112e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1ue6kz-0009m1-2z for pgsql-hackers@lists.postgresql.org; Tue, 22 Jul 2025 06:45:49 +0000 Received: by mail-yw1-x112e.google.com with SMTP id 00721157ae682-7183d264e55so50355517b3.2 for ; Mon, 21 Jul 2025 23:45:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753166745; x=1753771545; 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=ZLG7pJvFHPjge7Mh6zMVlii/lLaOR70as4WBmLlVerw=; b=k02jvJv7fzKj4dRRMexNHM27y5itFUfqEDPb5K5sL6QXBqHeFTiauRmgqzqj5w9ufp CQEWPDJPYRLkm3vEXxMnV04xK+KCZKvTRusu+iHzdniSA3P4kgZhqd/Wlgoqc3H67aSa 2sXUROIPhf26lYQzEZMlt0F+fpLNMTkoQhAk2OBTEgE5G6oJmU5kd98FKI28JUcYldj6 THgCugAIU7hEeJ2ck+GLe2qQcEE1AYcU//XrektcUwfF2VAdzVa71ZrZepVEpu2CXKUC gIul4Bg9VIsjanA46gcScb2XrJc/EJPNzW4rNc6WMi7dzcvbihezHtIYZtMXAYJRnQxV KtAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753166745; x=1753771545; 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=ZLG7pJvFHPjge7Mh6zMVlii/lLaOR70as4WBmLlVerw=; b=KGI7sXkXetGeRT8VTrCqH4wDihPuP/nM98sxHJSwGPxbxnnSZTO85kv/PEYnnwUzLw +M3JBlN26z8HXLLKR/qbLEX8Q/alXV4wWi+JHkyf3lTv7LmjVcWIbwhXT+RvaCtbhKqJ RPdQb03/S8kKmfBsyMgZED8dBlDRE9O/UmsWNNXL4HrsrhXDgf0NhGtzazi+iz+yX3+B sgnEZg9lgIDJNeTb28KeOk9AqYv71C+1EQBlpL8pQXiTGSjDujPSl3cv1pZx+g+J1GBq njd1j+1IxeKfQFxu0CDJN9OO7PFH72gnV5jeNPPz78P9oo/5fUFXzQjdjFeE206XWTHd CsCA== X-Forwarded-Encrypted: i=1; AJvYcCUlEqGqQZlowwzeyudm2GrFjYSZYG8RNtR7c2m96LXaFJxZVrQ7odAGJfYw8qMAhcmWiuHuJyFetVuDFNaL@lists.postgresql.org X-Gm-Message-State: AOJu0Yw4i8c02ybKbapM7XzGuv3vK8lFOMnR0V4wtEHc0Yojj8Sd5gHV 3j+DkIfG8DKYabv1+qDHViQ9IriClVLpFRQGHUX/0X2Bz5uKk5K9gLEngouAvGI4NYkmBB4vBtp wXRFl6mCjinlz3uCoIRMR1E9Q/pWKggg= X-Gm-Gg: ASbGncsIwMdcyoph1GY2C8Vs6K8sTCbIVvlRg2lro4ZmmCPTA+ftDMoDRpYEyredbHB vEwwbngB9sMRZzbtGcKM0XyphV/IboUcnkR5V6eSDnGFvrv1Kb39oM3/q5K+wzv4RdmNehKxDxN IRAQ1UWqQ2cHvW7ihdXeIh6UlKhh7yaOrMf3FJYXWztgzfmY4Uy5+bWSiBcweUr8sfMG6YsiDwU i2T7A== X-Google-Smtp-Source: AGHT+IGBKKLKftkWA6eQXvr6pCKEO4IQPaM07lZpTzF1u8+D9SWvCD9b2mOW3rDHxBjFXrrFmV+sfc7Qh71GCHjVOYM= X-Received: by 2002:a05:690c:4d41:b0:718:3982:d577 with SMTP id 00721157ae682-718a9820872mr232241367b3.38.1753166744988; Mon, 21 Jul 2025 23:45:44 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Tue, 22 Jul 2025 13:45:31 +0700 X-Gm-Features: Ac12FXxjj9N5VVZR4aPRdrnI3-GpJywD24jw_T3cRvH8hpNCK3qPxP0Ew3jVjUA Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Sami Imseih Cc: Masahiko Sawada , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000011a4b0063a7ef13b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000011a4b0063a7ef13b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Jul 21, 2025 at 11:40=E2=80=AFPM Sami Imseih = wrote: > > I have only reviewed the v8-0001-Parallel-index-autovacuum.patch so far a= nd > have a few comments from my initial pass. > > 1/ Please run pgindent. OK, I'll do it. > 2/ Documentation is missing. There may be more, but here are the places I > found that likely need updates for the new behavior, reloptions, GUC, etc= . > Including docs in the patch early would help clarify expected behavior. > > https://www.postgresql.org/docs/current/routine-vacuuming.html#VACUUM-BAS= ICS > https://www.postgresql.org/docs/current/routine-vacuuming.html#AUTOVACUUM > https://www.postgresql.org/docs/current/runtime-config-autovacuum.html > https://www.postgresql.org/docs/current/sql-createtable.html > https://www.postgresql.org/docs/current/sql-altertable.html > https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-= MAX-WORKER-PROCESSES > https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-= MAX-PARALLEL-MAINTENANCE-WORKERS > Thanks for gathering it all together. I'll update the documentation so it will reflect changes in autovacuum daemon, reloptions and GUC parameters. So far, I don't see what we can add to vacuum-basics and alter-table paragraphs. I'll create separate .patch file for changes in documentation. > One thing I am unclear on is the interaction between max_worker_processes= , > max_parallel_workers, and max_parallel_maintenance_workers. For example, = does > the following change mean that manual VACUUM PARALLEL is no longer capped= by > max_parallel_maintenance_workers? > > @@ -597,8 +614,8 @@ parallel_vacuum_compute_workers(Relation *indrels, > int nindexes, int nrequested, > parallel_workers =3D (nrequested > 0) ? > Min(nrequested, nindexes_parallel) : nindexes_parallel; > > - /* Cap by max_parallel_maintenance_workers */ > - parallel_workers =3D Min(parallel_workers, > max_parallel_maintenance_workers); > + /* Cap by GUC variable */ > + parallel_workers =3D Min(parallel_workers, max_parallel_workers); > Oh, it is my poor choice of a name for a local variable (I'll rename it). This variable can get different values depending on performed operation : autovacuum_max_parallel_workers for parallel autovacuum and max_parallel_maintenance_workers for maintenance VACUUM. > > 3/ Shouldn't this be "max_parallel_workers" instead of "bgworkers pool" ? > > + "autovacuum_parallel_workers", > + "Maximum number of parallel autovacuum workers > that can be taken from bgworkers pool for processing this table. " > I don't think that we should refer to max_parallel_workers here. Actually, this reloption doesn't depend on max_parallel_workers at all. I wrote about bgworkers pool (both here and in description of autovacuum_max_parallel_workers parameter) in order to clarify that parallel autovacuum will use dynamic workers instead of launching more a/v workers. BTW, I don't really like that the comment on this option turns out to be very large. I'll leave only short description in reloptions.c and move clarification about zero value in rel.h Mentions of bgworkers pool will remain only in description of autovacuum_max_parallel_workers. > 4/ The comment "When parallel autovacuum worker die" suggests an abnormal > exit. "Terminates" seems clearer, since this applies to both normal and > abnormal exits. > > instead of: > + * When parallel autovacuum worker die, > > how about this: > * When parallel autovacuum worker terminates, > Sounds reasonable, I'll fix it. > > 5/ Any reason AutoVacuumReleaseParallelWorkers cannot be called before > DestroyParallelContext? > > + nlaunched_workers =3D pvs->pcxt->nworkers_launched; /* remember > this value */ > DestroyParallelContext(pvs->pcxt); > + > + /* Release all launched (i.e. reserved) parallel autovacuum worke= rs. */ > + if (AmAutoVacuumWorkerProcess()) > + AutoVacuumReleaseParallelWorkers(nlaunched_workers); > I wrote about it above [1], but I think I can duplicate my thoughts here : """ Destroying parallel context includes waiting for all workers to exit (after which, other operations can use them). If we first call ParallelAutoVacuumReleaseWorkers, some operation can reasonably request all released workers. But this request can fail, because there is no guarantee that workers managed to finish. Actually, there's nothing wrong with that, but I think releasing workers only after finishing work is a more logical approach. """ > > 6/ Also, would it be cleaner to move AmAutoVacuumWorkerProcess() inside > AutoVacuumReleaseParallelWorkers()? > > if (!AmAutoVacuumWorkerProcess()) > return; > It seems to me that the opposite is true. If there is no alternative to cal= ling AmAutoVacuumWorkerProcess, it might confuse somebody. All doubts will disappear after viewing the AmAutoVacuumWorkerProcess code, but IMO code in vacuumparallel.c will become less intuitive. > 7/ It looks like the psql tab completion for autovacuum_parallel_workers = is > missing: > > test=3D# alter table t set (autovacuum_ > autovacuum_analyze_scale_factor > autovacuum_analyze_threshold > autovacuum_enabled > autovacuum_freeze_max_age > autovacuum_freeze_min_age > autovacuum_freeze_table_age > autovacuum_multixact_freeze_max_age > autovacuum_multixact_freeze_min_age > autovacuum_multixact_freeze_table_age > autovacuum_vacuum_cost_delay > autovacuum_vacuum_cost_limit > autovacuum_vacuum_insert_scale_factor > autovacuum_vacuum_insert_threshold > autovacuum_vacuum_max_threshold > autovacuum_vacuum_scale_factor > autovacuum_vacuum_threshold > Good catch, I'll fix it. Thank you for the review! Please, see v9 patches : 1) Run pgindent + rebase patches on newest commit in master. 2) Introduce changes for documentation. 3) Rename local variable in parallel_vacuum_compute_workers. 4) Shorten the description of autovacuum_parallel_workers in reloptions.c (move clarifications for it into rel.h). 5) Reword "When parallel autovacuum worker die" comment. 6) Add tab completion for autovacuum_parallel_workers table option. [1] https://www.postgresql.org/message-id/CAJDiXgi7KB7wSQ%3DUx%3DngdaCvJnJ5= x-ehvTyiuZez%2B5uKHtV6iQ%40mail.gmail.com -- Best regards, Daniil Davydov --00000000000011a4b0063a7ef13b Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v9-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mde5ty4u1 RnJvbSAxYzRjNjVjYWQyN2UyOTg2OTYyZWYwZDA0MWJmNGYzMzJjNThmNjY4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDIyIEp1bCAyMDI1IDAyOjQ3OjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2OSAyLzNdIExvZ2dpbmcgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0KCi0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysr KystLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyB8IDIwICsrKysrKysr KysrKysrLS0tLS0tCiBzcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCAgICAgICAgIHwgMTYg KysrKysrKysrKysrKystLQogMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAxMCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggMTQwMzZj MjdlODcuLmYxYTY0NWU3OWE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC0zNDgsNiArMzQ4LDEyIEBAIHR5cGVkZWYgc3RydWN0IExWUmVsU3RhdGUKIAogCS8qIEluc3Ry dW1lbnRhdGlvbiBjb3VudGVycyAqLwogCWludAkJCW51bV9pbmRleF9zY2FuczsKKworCS8qCisJ ICogTnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5IGxhdW5jaGVkIHBhcmFsbGVsIHdvcmtl cnMgZm9yIGFsbCBpbmRleAorCSAqIHNjYW5zLCBvciBOVUxMCisJICovCisJUFZXb3JrZXJzVXNh Z2UgKndvcmtlcnNfdXNhZ2U7CiAJLyogQ291bnRlcnMgdGhhdCBmb2xsb3cgYXJlIG9ubHkgZm9y IHNjYW5uZWRfcGFnZXMgKi8KIAlpbnQ2NAkJdHVwbGVzX2RlbGV0ZWQ7IC8qICMgZGVsZXRlZCBm cm9tIHRhYmxlICovCiAJaW50NjQJCXR1cGxlc19mcm96ZW47CS8qICMgbmV3bHkgZnJvemVuICov CkBAIC02ODgsNiArNjk0LDE2IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIGNvbnN0 IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCWluZG5hbWVzID0gcGFsbG9jKHNpemVvZihjaGFyICop ICogdmFjcmVsLT5uaW5kZXhlcyk7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgdmFjcmVsLT5uaW5k ZXhlczsgaSsrKQogCQkJaW5kbmFtZXNbaV0gPSBwc3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHZhY3JlbC0+aW5kcmVsc1tpXSkpOworCisJCS8qCisJCSAqIEFsbG9jYXRlIHNwYWNlIGZv ciB3b3JrZXJzIHVzYWdlIHN0YXRpc3RpY3MuIFRodXMsIHdlIGV4cGxpY2l0bHkKKwkJICogbWFr ZSBjbGVhciB0aGF0IHN1Y2ggc3RhdGlzdGljcyBtdXN0IGJlIGFjY3VtdWxhdGVkLiBGb3Igbm93 LCB0aGlzCisJCSAqIGlzIHVzZWQgb25seSBieSBhdXRvdmFjdXVtIGxlYWRlciB3b3JrZXIsIGJl Y2F1c2UgaXQgbXVzdCBsb2cgaXQgaW4KKwkJICogdGhlIGVuZCBvZiB0YWJsZSBwcm9jZXNzaW5n LgorCQkgKi8KKwkJdmFjcmVsLT53b3JrZXJzX3VzYWdlID0gQW1BdXRvVmFjdXVtV29ya2VyUHJv Y2VzcygpID8KKwkJCShQVldvcmtlcnNVc2FnZSAqKSBwYWxsb2MwKHNpemVvZihQVldvcmtlcnNV c2FnZSkpIDoKKwkJCU5VTEw7CiAJfQogCiAJLyoKQEAgLTEwMTIsNiArMTAyOCwxMSBAQCBoZWFw X3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJhbXMgcGFyYW1zLAogCQkJ CQkJCSB2YWNyZWwtPnJlbG5hbWVzcGFjZSwKIAkJCQkJCQkgdmFjcmVsLT5yZWxuYW1lLAogCQkJ CQkJCSB2YWNyZWwtPm51bV9pbmRleF9zY2Fucyk7CisJCQlpZiAodmFjcmVsLT53b3JrZXJzX3Vz YWdlKQorCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1ZiwKKwkJCQkJCQkJIF8oIndvcmtlcnMgdXNh Z2Ugc3RhdGlzdGljcyBmb3IgYWxsIG9mIGluZGV4IHNjYW5zIDogbGF1bmNoZWQgaW4gdG90YWwg PSAlZCwgcGxhbm5lZCBpbiB0b3RhbCA9ICVkXG4iKSwKKwkJCQkJCQkJIHZhY3JlbC0+d29ya2Vy c191c2FnZS0+bmxhdW5jaGVkLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLT5ucGxh bm5lZCk7CiAJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsIF8oInBhZ2VzOiAldSByZW1vdmVkLCAl dSByZW1haW4sICV1IHNjYW5uZWQgKCUuMmYlJSBvZiB0b3RhbCksICV1IGVhZ2VybHkgc2Nhbm5l ZFxuIiksCiAJCQkJCQkJIHZhY3JlbC0+cmVtb3ZlZF9wYWdlcywKIAkJCQkJCQkgbmV3X3JlbF9w YWdlcywKQEAgLTI2MzQsNyArMjY1NSw4IEBAIGxhenlfdmFjdXVtX2FsbF9pbmRleGVzKExWUmVs U3RhdGUgKnZhY3JlbCkKIAl7CiAJCS8qIE91dHNvdXJjZSBldmVyeXRoaW5nIHRvIHBhcmFsbGVs IHZhcmlhbnQgKi8KIAkJcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXModmFjcmVs LT5wdnMsIG9sZF9saXZlX3R1cGxlcywKLQkJCQkJCQkJCQkJdmFjcmVsLT5udW1faW5kZXhfc2Nh bnMpOworCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRleF9zY2FucywKKwkJCQkJCQkJCQkJdmFj cmVsLT53b3JrZXJzX3VzYWdlKTsKIAogCQkvKgogCQkgKiBEbyBhIHBvc3RjaGVjayB0byBjb25z aWRlciBhcHBseWluZyB3cmFwYXJvdW5kIGZhaWxzYWZlIG5vdy4gIE5vdGUKQEAgLTMwNDcsNyAr MzA2OSw4IEBAIGxhenlfY2xlYW51cF9hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpCiAJ CS8qIE91dHNvdXJjZSBldmVyeXRoaW5nIHRvIHBhcmFsbGVsIHZhcmlhbnQgKi8KIAkJcGFyYWxs ZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXModmFjcmVsLT5wdnMsIHJlbHR1cGxlcywKIAkJ CQkJCQkJCQkJdmFjcmVsLT5udW1faW5kZXhfc2NhbnMsCi0JCQkJCQkJCQkJCWVzdGltYXRlZF9j b3VudCk7CisJCQkJCQkJCQkJCWVzdGltYXRlZF9jb3VudCwKKwkJCQkJCQkJCQkJdmFjcmVsLT53 b3JrZXJzX3VzYWdlKTsKIAl9CiAKIAkvKiBSZXNldCB0aGUgcHJvZ3Jlc3MgY291bnRlcnMgKi8K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGZmYzE0MGRhYmNmLi41MTUx MWJmMjEwMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0yMjcsNyAr MjI3LDcgQEAgc3RydWN0IFBhcmFsbGVsVmFjdXVtU3RhdGUKIHN0YXRpYyBpbnQJcGFyYWxsZWxf dmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBp bnQgbnJlcXVlc3RlZCwKIAkJCQkJCQkJCQkJYm9vbCAqd2lsbF9wYXJhbGxlbF92YWN1dW0pOwog c3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxW YWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJCQkJYm9vbCB2 YWN1dW0pOworCQkJCQkJCQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1VzYWdlICogd3VzYWdl KTsKIHN0YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3NhZmVfaW5kZXhlcyhQYXJh bGxlbFZhY3V1bVN0YXRlICpwdnMpOwogc3RhdGljIHZvaWQgcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfdW5zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKTsKIHN0YXRpYyB2b2lk IHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX29uZV9pbmRleChQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIFJlbGF0aW9uIGluZHJlbCwKQEAgLTUxMCw3ICs1MTAsNyBAQCBwYXJhbGxlbF92YWN1dW1f cmVzZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMpCiAgKi8KIHZvaWQKIHBh cmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgbG9uZyBudW1fdGFibGVfdHVwbGVzLAotCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2FucykK KwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIFBWV29ya2Vyc1VzYWdlICogd3VzYWdlKQog ewogCUFzc2VydCghSXNQYXJhbGxlbFdvcmtlcigpKTsKIApAQCAtNTIxLDcgKzUyMSw3IEBAIHBh cmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2 cywgbG9uZyBudW1fdGFibGVfdHVwCiAJcHZzLT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJs ZV90dXBsZXM7CiAJcHZzLT5zaGFyZWQtPmVzdGltYXRlZF9jb3VudCA9IHRydWU7CiAKLQlwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgdHJ1 ZSk7CisJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhf c2NhbnMsIHRydWUsIHd1c2FnZSk7CiB9CiAKIC8qCkBAIC01MjksNyArNTI5LDggQEAgcGFyYWxs ZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBs b25nIG51bV90YWJsZV90dXAKICAqLwogdm9pZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxs X2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMs Ci0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3NjYW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkKKwkJ CQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsIGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJ CQkJUFZXb3JrZXJzVXNhZ2UgKiB3dXNhZ2UpCiB7CiAJQXNzZXJ0KCFJc1BhcmFsbGVsV29ya2Vy KCkpOwogCkBAIC01NDEsNyArNTQyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2lu ZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXAKIAlwdnMt PnNoYXJlZC0+cmVsdHVwbGVzID0gbnVtX3RhYmxlX3R1cGxlczsKIAlwdnMtPnNoYXJlZC0+ZXN0 aW1hdGVkX2NvdW50ID0gZXN0aW1hdGVkX2NvdW50OwogCi0JcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIGZhbHNlKTsKKwlwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgZmFsc2UsIHd1 c2FnZSk7CiB9CiAKIC8qCkBAIC02MjYsNyArNjI3LDcgQEAgcGFyYWxsZWxfdmFjdXVtX2NvbXB1 dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3Rl ZCwKICAqLwogc3RhdGljIHZvaWQKIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVz KFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJ CWJvb2wgdmFjdXVtKQorCQkJCQkJCQkJYm9vbCB2YWN1dW0sIFBWV29ya2Vyc1VzYWdlICogd3Vz YWdlKQogewogCWludAkJCW53b3JrZXJzOwogCVBWSW5kVmFjU3RhdHVzIG5ld19zdGF0dXM7CkBA IC03NTAsNiArNzUxLDEzIEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBh cmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJCQkJCQkJCQkgImxh dW5jaGVkICVkIHBhcmFsbGVsIHZhY3V1bSB3b3JrZXJzIGZvciBpbmRleCBjbGVhbnVwIChwbGFu bmVkOiAlZCkiLAogCQkJCQkJCQkJIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQpLAogCQkJ CQkJCXB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQsIG53b3JrZXJzKSkpOworCisJCS8qIFJl bWVtYmVyIHRoZXNlIHZhbHVlcywgaWYgd2UgYXNrZWQgdG8uICovCisJCWlmICh3dXNhZ2UgIT0g TlVMTCkKKwkJeworCQkJd3VzYWdlLT5ubGF1bmNoZWQgKz0gcHZzLT5wY3h0LT5ud29ya2Vyc19s YXVuY2hlZDsKKwkJCXd1c2FnZS0+bnBsYW5uZWQgKz0gbndvcmtlcnM7CisJCX0KIAl9CiAKIAkv KiBWYWN1dW0gdGhlIGluZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVy IHByb2Nlc3MgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMTRlZWNjYmQ3MTguLmQwNWVmNzQ2 MWVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaAorKysgYi9zcmMv aW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaApAQCAtMjk1LDYgKzI5NSwxNiBAQCB0eXBlZGVmIHN0 cnVjdCBWYWNEZWFkSXRlbXNJbmZvCiAJaW50NjQJCW51bV9pdGVtczsJCS8qIGN1cnJlbnQgIyBv ZiBlbnRyaWVzICovCiB9IFZhY0RlYWRJdGVtc0luZm87CiAKKy8qCisgKiBQVldvcmtlcnNVc2Fn ZSBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdG90YWwgbnVtYmVyIG9mIGxhdW5jaGVkIGFuZCBw bGFubmVkCisgKiB3b3JrZXJzIGR1cmluZyBwYXJhbGxlbCB2YWN1dW0uCisgKi8KK3R5cGVkZWYg c3RydWN0IFBWV29ya2Vyc1VzYWdlCit7CisJaW50CQkJbmxhdW5jaGVkOworCWludAkJCW5wbGFu bmVkOworfQkJCVBWV29ya2Vyc1VzYWdlOworCiAvKiBHVUMgcGFyYW1ldGVycyAqLwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBkZWZhdWx0X3N0YXRpc3RpY3NfdGFyZ2V0OwkvKiBQR0RMTElNUE9S VCBmb3IgUG9zdEdJUyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCB2YWN1dW1fZnJlZXplX21p bl9hZ2U7CkBAIC0zODksMTEgKzM5OSwxMyBAQCBleHRlcm4gVGlkU3RvcmUgKnBhcmFsbGVsX3Zh Y3V1bV9nZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiBleHRlcm4gdm9p ZCBwYXJhbGxlbF92YWN1dW1fcmVzZXRfZGVhZF9pdGVtcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4ZXMoUGFy YWxsZWxWYWN1dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVz LAotCQkJCQkJCQkJCQkJaW50IG51bV9pbmRleF9zY2Fucyk7CisJCQkJCQkJCQkJCQlpbnQgbnVt X2luZGV4X3NjYW5zLAorCQkJCQkJCQkJCQkJUFZXb3JrZXJzVXNhZ2UgKiB3dXNhZ2UpOwogZXh0 ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLAogCQkJCQkJCQkJCQkJbG9uZyBudW1fdGFibGVfdHVwbGVzLAogCQkJCQkJ CQkJCQkJaW50IG51bV9pbmRleF9zY2FucywKLQkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2Nv dW50KTsKKwkJCQkJCQkJCQkJCWJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJCQkJUFZX b3JrZXJzVXNhZ2UgKiB3dXNhZ2UpOwogZXh0ZXJuIHZvaWQgcGFyYWxsZWxfdmFjdXVtX21haW4o ZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsKIAogLyogaW4gY29tbWFuZHMvYW5hbHl6 ZS5jICovCi0tIAoyLjQzLjAKCg== --00000000000011a4b0063a7ef13b Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0003-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v9-0003-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mde5ty582 RnJvbSBkZTQ2YzgyMzI2NDFlMjg4YTQ2ZTZhZjE3OTk5NjFjMWIwMGE0NjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBUdWUsIDIyIEp1bCAyMDI1IDEyOjMxOjIwICswNzAwClN1YmplY3Q6IFtQQVRD SCB2OSAzLzNdIERvY3VtZW50YXRpb24gZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0KCi0tLQogZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDUwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggYzdhY2Mw ZjE4MmYuLjA2YjBhZmY2Y2I3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yODM1LDYgKzI4MzUsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MTg3LDYgKzkxODgsMjMgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+LiBUaGUgZGVmYXVsdCBp cyAwLAorICAgICAgICAgIHdoaWNoIG1lYW5zIG5vIHBhcmFsbGVsIGluZGV4IHZhY3V1bWluZy4K KyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50 cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9zZWN0Mj4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uu c2dtbAppbmRleCBlN2E5ZjU4YzAxNS4uNGU0NTBiYTkwNjYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9tYWludGVuYW5jZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21s CkBAIC04OTYsNiArODk2LDE4IEBAIEhJTlQ6ICBFeGVjdXRlIGEgZGF0YWJhc2Utd2lkZSBWQUNV VU0gaW4gdGhhdCBkYXRhYmFzZS4KICAgICBhdXRvdmFjdXVtIHdvcmtlcnMnIGFjdGl2aXR5Lgog ICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBJZiBhbiBhdXRvdmFjdXVtIHdvcmtlciBwcm9j ZXNzIGNvbWVzIGFjcm9zcyBhIHRhYmxlIHdpdGggdGhlIGVuYWJsZWQKKyAgICA8eHJlZiBsaW5r ZW5kPSJyZWxvcHRpb24tYXV0b3ZhY3V1bS1wYXJhbGxlbC13b3JrZXJzIi8+IHN0b3JhZ2UgcGFy YW1ldGVyLAorICAgIGl0IHdpbGwgbGF1bmNoIHBhcmFsbGVsIHdvcmtlcnMgaW4gb3JkZXIgdG8g dmFjdXVtIGluZGV4ZXMgb2YgdGhpcyB0YWJsZQorICAgIGluIGEgcGFyYWxsZWwgbW9kZS4gUGFy YWxsZWwgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBvZiBwcm9jZXNzZXMKKyAgICBl c3RhYmxpc2hlZCBieSA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXdvcmtlci1wcm9jZXNzZXMiLz4s IGxpbWl0ZWQgYnkKKyAgICA8eHJlZiBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLXdvcmtlcnMi Lz4uCisgICAgVGhlIHRvdGFsIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMg dGhhdCBjYW4gYmUgYWN0aXZlIGF0IG9uZQorICAgIHRpbWUgaXMgbGltaXRlZCBieSB0aGUgPHhy ZWYgbGlua2VuZD0iZ3VjLWF1dG92YWN1dW0tbWF4LXBhcmFsbGVsLXdvcmtlcnMiLz4KKyAgICBj b25maWd1cmF0aW9uIHBhcmFtZXRlci4KKyAgIDwvcGFyYT4KKwogICAgPHBhcmE+CiAgICAgSWYg c2V2ZXJhbCBsYXJnZSB0YWJsZXMgYWxsIGJlY29tZSBlbGlnaWJsZSBmb3IgdmFjdXVtaW5nIGlu IGEgc2hvcnQKICAgICBhbW91bnQgb2YgdGltZSwgYWxsIGF1dG92YWN1dW0gd29ya2VycyBtaWdo dCBiZWNvbWUgb2NjdXBpZWQgd2l0aApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXgg ZGMwMDBlOTEzYzEuLjI4OGRlNmIwZmZkIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTE3MTcsNiArMTcxNywyNiBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlz dGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICA8dmFybGlzdGVudHJ5IGlkPSJyZWxvcHRp b24tYXV0b3ZhY3V1bS1wYXJhbGxlbC13b3JrZXJzIiB4cmVmbGFiZWw9ImF1dG92YWN1dW1fcGFy YWxsZWxfd29ya2VycyI+CisgICAgPHRlcm0+PGxpdGVyYWw+YXV0b3ZhY3V1bV9wYXJhbGxlbF93 b3JrZXJzPC9saXRlcmFsPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgPGluZGV4dGVybT4K KyAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzPC92YXJu YW1lPiBzdG9yYWdlIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKyAgICA8 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFNldHMgdGhlIG1heGlt dW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBwcm9jZXNz CisgICAgICBpbmRleGVzIG9mIHRoaXMgdGFibGUuCisgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBp cyAtMSwgd2hpY2ggbWVhbnMgbm8gcGFyYWxsZWwgaW5kZXggdmFjdXVtaW5nIGZvcgorICAgICAg dGhpcyB0YWJsZS4gSWYgdmFsdWUgaXMgMCB0aGVuIHBhcmFsbGVsIGRlZ3JlZSB3aWxsIGNvbXB1 dGVkIGJhc2VkIG9uCisgICAgICBudW1iZXIgb2YgaW5kZXhlcy4KKyAgICAgIE5vdGUgdGhhdCB0 aGUgY29tcHV0ZWQgbnVtYmVyIG9mIHdvcmtlcnMgbWF5IG5vdCBhY3R1YWxseSBiZSBhdmFpbGFi bGUgYXQKKyAgICAgIHJ1biB0aW1lLiBJZiB0aGlzIG9jY3VycywgdGhlIGF1dG92YWN1dW0gd2ls bCBydW4gd2l0aCBmZXdlciB3b3JrZXJzCisgICAgICB0aGFuIGV4cGVjdGVkLgorICAgICA8L3Bh cmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVu dHJ5IGlkPSJyZWxvcHRpb24tYXV0b3ZhY3V1bS12YWN1dW0tdGhyZXNob2xkIiB4cmVmbGFiZWw9 ImF1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+YXV0b3Zh Y3V1bV92YWN1dW1fdGhyZXNob2xkPC9saXRlcmFsPiwgPGxpdGVyYWw+dG9hc3QuYXV0b3ZhY3V1 bV92YWN1dW1fdGhyZXNob2xkPC9saXRlcmFsPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCiAgICAg PGluZGV4dGVybT4KLS0gCjIuNDMuMAoK --00000000000011a4b0063a7ef13b Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0001-Parallel-index-autovacuum.patch" Content-Disposition: attachment; filename="v9-0001-Parallel-index-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mde5ty3r0 RnJvbSBmNWUyMWY0NGZhYTg2MThiZmQ1NzUwOTkzMTdlY2YwNjIxM2Y2MmYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIwIEp1bCAyMDI1IDIzOjAzOjU3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2OSAxLzNdIFBhcmFsbGVsIGluZGV4IGF1dG92YWN1dW0KCi0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgICAgICAgIHwgIDExICsrCiBzcmMvYmFja2VuZC9jb21t YW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgNDYgKysrKysrLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgMTIxICsrKysrKysrKysrKysrKysr LQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICB8ICAxMCArKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAxICsKIHNy Yy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9taXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNs dWRlL3V0aWxzL2d1Y19ob29rcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9yZWwuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDcgKwogMTEgZmlsZXMgY2hh bmdlZCwgMTk2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv Y29tbW9uL3JlbG9wdGlvbnMuYwppbmRleCA1MDc0N2MxNjM5Ni4uY2MzZmZjNDNhMDUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMjIsNiArMjIyLDE1IEBAIHN0 YXRpYyByZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJ TExGQUNUT1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJh dXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFs bGVsIGF1dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRo aXMgdGFibGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2 ZUxvY2sKKwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVt X3ZhY3V1bV90aHJlc2hvbGQiLApAQCAtMTg3Miw2ICsxODgxLDggQEAgZGVmYXVsdF9yZWxvcHRp b25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJ CXsiZmlsbGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBm aWxsZmFjdG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwK IAkJb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNP cHRzLCBlbmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BU X1RZUEVfSU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0 b2YoQXV0b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92 YWN1dW1fdmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3Rk UmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhy ZXNob2xkKX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9U WVBFX0lOVCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVs LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IDBmZWVhMWQz MGVjLi5mZmMxNDBkYWJjZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBA IC0xLDcgKzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwu YwotICoJICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgor ICoJICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0g ZXhlY3V0aW9uLiBJbiB0aGUKKyAqCSAgZnV0dXJlIGNvbW1lbnRzLCB0aGUgd29yZCAidmFjdXVt IiB3aWxsIHJlZmVyIHRvIGJvdGggdmFjdXVtIGFuZAorICoJICBhdXRvdmFjdXVtLgogICoKICAq IFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0 IHNldHRpbmcgdXAsIHVzaW5nLAogICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsVmFjdXVt U3RhdGUuCkBAIC0zNCw2ICszNiw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wYXRocy5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2lu Y2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdy LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgpAQCAtMzczLDggKzM3Niw5IEBAIHBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJl bCwgUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywKIAlzaGFyZWQtPnF1ZXJ5aWQgPSBw Z3N0YXRfZ2V0X215X3F1ZXJ5X2lkKCk7CiAJc2hhcmVkLT5tYWludGVuYW5jZV93b3JrX21lbV93 b3JrZXIgPQogCQkobmluZGV4ZXNfbXdtID4gMCkgPwotCQltYWludGVuYW5jZV93b3JrX21lbSAv IE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19td20pIDoKLQkJbWFpbnRlbmFuY2Vfd29y a19tZW07CisJCXZhY193b3JrX21lbSAvIE1pbihwYXJhbGxlbF93b3JrZXJzLCBuaW5kZXhlc19t d20pIDoKKwkJdmFjX3dvcmtfbWVtOworCiAJc2hhcmVkLT5kZWFkX2l0ZW1zX2luZm8ubWF4X2J5 dGVzID0gdmFjX3dvcmtfbWVtICogKHNpemVfdCkgMTAyNDsKIAogCS8qIFByZXBhcmUgRFNBIHNw YWNlIGZvciBkZWFkIGl0ZW1zICovCkBAIC00MzUsNiArNDM5LDggQEAgcGFyYWxsZWxfdmFjdXVt X2luaXQoUmVsYXRpb24gcmVsLCBSZWxhdGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogdm9p ZAogcGFyYWxsZWxfdmFjdXVtX2VuZChQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIEluZGV4QnVs a0RlbGV0ZVJlc3VsdCAqKmlzdGF0cykKIHsKKwlpbnQJCQlubGF1bmNoZWRfd29ya2VyczsKKwog CUFzc2VydCghSXNQYXJhbGxlbFdvcmtlcigpKTsKIAogCS8qIENvcHkgdGhlIHVwZGF0ZWQgc3Rh dGlzdGljcyAqLwpAQCAtNDUzLDcgKzQ1OSwxMyBAQCBwYXJhbGxlbF92YWN1dW1fZW5kKFBhcmFs bGVsVmFjdXVtU3RhdGUgKnB2cywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICoqaXN0YXRzKQogCiAJ VGlkU3RvcmVEZXN0cm95KHB2cy0+ZGVhZF9pdGVtcyk7CiAKKwlubGF1bmNoZWRfd29ya2VycyA9 IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7CS8qIHJlbWVtYmVyIHRoaXMgdmFsdWUgKi8K IAlEZXN0cm95UGFyYWxsZWxDb250ZXh0KHB2cy0+cGN4dCk7CisKKwkvKiBSZWxlYXNlIGFsbCBs YXVuY2hlZCAoaS5lLiByZXNlcnZlZCkgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLiAqLwor CWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkpCisJCUF1dG9WYWN1dW1SZWxlYXNlUGFy YWxsZWxXb3JrZXJzKG5sYXVuY2hlZF93b3JrZXJzKTsKKwogCUV4aXRQYXJhbGxlbE1vZGUoKTsK IAogCXBmcmVlKHB2cy0+d2lsbF9wYXJhbGxlbF92YWN1dW0pOwpAQCAtNTUzLDEyICs1NjUsMTcg QEAgcGFyYWxsZWxfdmFjdXVtX2NvbXB1dGVfd29ya2VycyhSZWxhdGlvbiAqaW5kcmVscywgaW50 IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZCwKIAlpbnQJCQluaW5kZXhlc19wYXJhbGxlbF9idWxr ZGVsID0gMDsKIAlpbnQJCQluaW5kZXhlc19wYXJhbGxlbF9jbGVhbnVwID0gMDsKIAlpbnQJCQlw YXJhbGxlbF93b3JrZXJzOworCWludAkJCW1heF93b3JrZXJzOworCisJbWF4X3dvcmtlcnMgPSBB bUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgPworCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93 b3JrZXJzIDoKKwkJbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnM7CiAKIAkvKgogCSAq IFdlIGRvbid0IGFsbG93IHBlcmZvcm1pbmcgcGFyYWxsZWwgb3BlcmF0aW9uIGluIHN0YW5kYWxv bmUgYmFja2VuZCBvcgogCSAqIHdoZW4gcGFyYWxsZWxpc20gaXMgZGlzYWJsZWQuCiAJICovCi0J aWYgKCFJc1VuZGVyUG9zdG1hc3RlciB8fCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vy cyA9PSAwKQorCWlmICghSXNVbmRlclBvc3RtYXN0ZXIgfHwgbWF4X3dvcmtlcnMgPT0gMCkKIAkJ cmV0dXJuIDA7CiAKIAkvKgpAQCAtNTk3LDggKzYxNCw4IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJcGFyYWxsZWxfd29ya2VycyA9IChucmVxdWVzdGVkID4gMCkgPwogCQlNaW4obnJlcXVl c3RlZCwgbmluZGV4ZXNfcGFyYWxsZWwpIDogbmluZGV4ZXNfcGFyYWxsZWw7CiAKLQkvKiBDYXAg YnkgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgKi8KLQlwYXJhbGxlbF93b3JrZXJz ID0gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG1heF9wYXJhbGxlbF9tYWludGVuYW5jZV93b3JrZXJz KTsKKwkvKiBDYXAgYnkgR1VDIHZhcmlhYmxlICovCisJcGFyYWxsZWxfd29ya2VycyA9IE1pbihw YXJhbGxlbF93b3JrZXJzLCBtYXhfd29ya2Vycyk7CiAKIAlyZXR1cm4gcGFyYWxsZWxfd29ya2Vy czsKIH0KQEAgLTY0Niw2ICs2NjMsMTMgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2lu ZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAkgKi8K IAlud29ya2VycyA9IE1pbihud29ya2VycywgcHZzLT5wY3h0LT5ud29ya2Vycyk7CiAKKwkvKgor CSAqIEFsc28gcmVzZXJ2ZSB3b3JrZXJzIGluIGF1dG92YWN1dW0gZ2xvYmFsIHN0YXRlLiBOb3Rl LCB0aGF0IHdlIG1heSBiZQorCSAqIGdpdmVuIGZld2VyIHdvcmtlcnMgdGhhbiB3ZSByZXF1ZXN0 ZWQuCisJICovCisJaWYgKEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiBud29ya2VycyA+ IDApCisJCW53b3JrZXJzID0gQXV0b1ZhY3V1bVJlc2VydmVQYXJhbGxlbFdvcmtlcnMobndvcmtl cnMpOworCiAJLyoKIAkgKiBTZXQgaW5kZXggdmFjdXVtIHN0YXR1cyBhbmQgbWFyayB3aGV0aGVy IHBhcmFsbGVsIHZhY3V1bSB3b3JrZXIgY2FuCiAJICogcHJvY2VzcyBpdC4KQEAgLTY5MCw2ICs3 MTQsMTYgQEAgcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBpbnQgbnVtX2luZGV4X3NjYW4KIAogCQlMYXVuY2hQYXJhbGxlbFdvcmtl cnMocHZzLT5wY3h0KTsKIAorCQlpZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmCisJ CQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkIDwgbndvcmtlcnMpCisJCXsKKwkJCS8qCisJ CQkgKiBUZWxsIGF1dG92YWN1dW0gdGhhdCB3ZSBjb3VsZCBub3QgbGF1bmNoIGFsbCB0aGUgcHJl dmlvdXNseQorCQkJICogcmVzZXJ2ZWQgd29ya2Vycy4KKwkJCSAqLworCQkJQXV0b1ZhY3V1bVJl bGVhc2VQYXJhbGxlbFdvcmtlcnMobndvcmtlcnMgLSBwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5j aGVkKTsKKwkJfQorCiAJCWlmIChwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5jaGVkID4gMCkKIAkJ ewogCQkJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggOTQ3NDA5NWYyNzEu Ljc2ZWIwNDAyOWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMjg1LDYg KzI4NSw3IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRlbQogICogYXZfd29ya0l0 ZW1zCQl3b3JrIGl0ZW0gYXJyYXkKICAqIGF2X253b3JrZXJzRm9yQmFsYW5jZSB0aGUgbnVtYmVy IG9mIGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hlbgogICogCQkJCQljYWxjdWxhdGluZyB0 aGUgcGVyIHdvcmtlciBjb3N0IGxpbWl0CisgKiBhdl9mcmVlUGFyYWxsZWxXb3JrZXJzIHRoZSBu dW1iZXIgb2YgZnJlZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMKICAqCiAgKiBUaGlzIHN0 cnVjdCBpcyBwcm90ZWN0ZWQgYnkgQXV0b3ZhY3V1bUxvY2ssIGV4Y2VwdCBmb3IgYXZfc2lnbmFs IGFuZCBwYXJ0cwogICogb2YgdGhlIHdvcmtlciBsaXN0IChzZWUgYWJvdmUpLgpAQCAtMjk5LDYg KzMwMCw3IEBAIHR5cGVkZWYgc3RydWN0CiAJV29ya2VySW5mbwlhdl9zdGFydGluZ1dvcmtlcjsK IAlBdXRvVmFjdXVtV29ya0l0ZW0gYXZfd29ya0l0ZW1zW05VTV9XT1JLSVRFTVNdOwogCXBnX2F0 b21pY191aW50MzIgYXZfbndvcmtlcnNGb3JCYWxhbmNlOworCXVpbnQzMgkJYXZfZnJlZVBhcmFs bGVsV29ya2VyczsKIH0gQXV0b1ZhY3V1bVNobWVtU3RydWN0OwogCiBzdGF0aWMgQXV0b1ZhY3V1 bVNobWVtU3RydWN0ICpBdXRvVmFjdXVtU2htZW07CkBAIC0zNTQsNiArMzU2LDcgQEAgc3RhdGlj IHZvaWQgYXV0b3ZhY19yZXBvcnRfd29ya2l0ZW0oQXV0b1ZhY3V1bVdvcmtJdGVtICp3b3JraXRl bSwKIHN0YXRpYyB2b2lkIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lHTkFMX0FSR1MpOwogc3RhdGlj IGJvb2wgYXZfd29ya2VyX2F2YWlsYWJsZSh2b2lkKTsKIHN0YXRpYyB2b2lkIGNoZWNrX2F2X3dv cmtlcl9ndWNzKHZvaWQpOworc3RhdGljIHZvaWQgYWRqdXN0X2ZyZWVfcGFyYWxsZWxfd29ya2Vy cyhpbnQgcHJldl9tYXhfcGFyYWxsZWxfd29ya2Vycyk7CiAKIAogCkBAIC03NTMsNiArNzU2LDgg QEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAlpZiAoQ29uZmlnUmVs b2FkUGVuZGluZykKIAl7CiAJCWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJldiA9IGF1 dG92YWN1dW1fbWF4X3dvcmtlcnM7CisJCWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dv cmtlcnNfcHJldiA9CisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiAJCUNv bmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hV UCk7CkBAIC03NjksNiArNzc0LDE1IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRlcnJ1cHRz KHZvaWQpCiAJCWlmIChhdXRvdmFjdXVtX21heF93b3JrZXJzX3ByZXYgIT0gYXV0b3ZhY3V1bV9t YXhfd29ya2VycykKIAkJCWNoZWNrX2F2X3dvcmtlcl9ndWNzKCk7CiAKKwkJLyoKKwkJICogSWYg YXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBjaGFuZ2VkLCB3ZSBtdXN0IHRha2UgY2Fy ZSBvZgorCQkgKiB0aGUgY29ycmVjdCB2YWx1ZSBvZiBhdmFpbGFibGUgcGFyYWxsZWwgYXV0b3Zh Y3V1bSB3b3JrZXJzIGluCisJCSAqIHNobWVtLgorCQkgKi8KKwkJaWYgKGF1dG92YWN1dW1fbWF4 X3BhcmFsbGVsX3dvcmtlcnNfcHJldiAhPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29y a2VycykKKwkJCWFkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoYXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2Vyc19wcmV2KTsKKwogCQkvKiByZWJ1aWxkIHRoZSBsaXN0IGluIGNhc2UgdGhl IG5hcHRpbWUgY2hhbmdlZCAqLwogCQlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxpZE9pZCk7 CiAJfQpAQCAtMjg0Nyw4ICsyODYxLDEyIEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVs aWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJICovCiAJCXRhYi0+YXRfcGFyYW1zLmluZGV4 X2NsZWFudXAgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKIAkJdGFiLT5hdF9wYXJhbXMudHJ1 bmNhdGUgPSBWQUNPUFRWQUxVRV9VTlNQRUNJRklFRDsKLQkJLyogQXMgb2Ygbm93LCB3ZSBkb24n dCBzdXBwb3J0IHBhcmFsbGVsIHZhY3V1bSBmb3IgYXV0b3ZhY3V1bSAqLwotCQl0YWItPmF0X3Bh cmFtcy5ud29ya2VycyA9IC0xOworCisJCS8qIERlY2lkZSB3aGV0aGVyIHdlIG5lZWQgdG8gcHJv Y2VzcyBpbmRleGVzIG9mIHRhYmxlIGluIHBhcmFsbGVsLiAqLworCQl0YWItPmF0X3BhcmFtcy5u d29ya2VycyA9IGF2b3B0cworCQkJPyBhdm9wdHMtPmF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vy cworCQkJOiAtMTsKKwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfbWluX2FnZSA9IGZyZWV6ZV9t aW5fYWdlOwogCQl0YWItPmF0X3BhcmFtcy5mcmVlemVfdGFibGVfYWdlID0gZnJlZXplX3RhYmxl X2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlID0gbXVsdGl4 YWN0X2ZyZWV6ZV9taW5fYWdlOwpAQCAtMzMyOSw2ICszMzQ3LDY4IEBAIEF1dG9WYWN1dW1SZXF1 ZXN0V29yayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsIE9pZCByZWxhdGlvbklkLAogCXJl dHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiBJbiBvcmRlciB0byBtZWV0IHRoZSAnYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycycgbGltaXQsIGxlYWRlciB3b3JrZXIKKyAqIG11c3QgY2Fs bCB0aGlzIGZ1bmN0aW9uLiBJdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgd29ya2Vy cyB0aGF0CisgKiBhY3R1YWxseSBjYW4gYmUgbGF1bmNoZWQgYW5kIHJlc2VydmVzIChpZiBhbnkp IHRoZXNlIHdvcmtlcnMgaW4gZ2xvYmFsCisgKiBhdXRvdmFjdXVtIHN0YXRlLgorICoKKyAqIE5P VEU6IFdlIHdpbGwgdHJ5IHRvIHByb3ZpZGUgYXMgbWFueSB3b3JrZXJzIGFzIHJlcXVlc3RlZCwg ZXZlbiBpZiBjYWxsZXIKKyAqIHdpbGwgb2NjdXB5IGFsbCBhdmFpbGFibGUgd29ya2Vycy4KKyAq LworaW50CitBdXRvVmFjdXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMpCit7 CisJaW50CQkJY2FuX2xhdW5jaDsKKworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0 aGlzIGZ1bmN0aW9uLiAqLworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYg IUlzUGFyYWxsZWxXb3JrZXIoKSk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBM V19FWENMVVNJVkUpOworCisJLyogUHJvdmlkZSBhcyBtYW55IHdvcmtlcnMgYXMgd2UgY2FuLiAq LworCWNhbl9sYXVuY2ggPSBNaW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3Jr ZXJzLCBud29ya2Vycyk7CisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJz IC09IG53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CisJcmV0dXJu IGNhbl9sYXVuY2g7Cit9CisKKy8qCisgKiBXaGVuIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vy IHRlcm1pbmF0ZXMsIGxlYWRlciB3b3JrZXIgbXVzdCBjYWxsIHRoaXMKKyAqIGZ1bmN0aW9uIGlu IG9yZGVyIHRvIHJlZnJlc2ggZ2xvYmFsIGF1dG92YWN1dW0gc3RhdGUuIFRodXMsIG90aGVyIGxl YWRlcnMKKyAqIHdpbGwgYmUgYWJsZSB0byB1c2UgdGhlc2Ugd29ya2Vycy4KKyAqCisgKiAnbndv cmtlcnMnIC0gaG93IG1hbnkgd29ya2VycyBjYWxsZXIgd2FudHMgdG8gcmVsZWFzZS4KKyAqLwor dm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKQorewor CS8qIE9ubHkgbGVhZGVyIHdvcmtlciBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAqLworCUFzc2Vy dChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgIUlzUGFyYWxsZWxXb3JrZXIoKSk7CisK KwkvKiBSZWZyZXNoIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgcGFyZW1ldGVyICov CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7 CisJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdD X1NJR0hVUCk7CisJfQorCisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhDTFVT SVZFKTsKKworCS8qCisJICogSWYgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBwYXJh bWV0ZXIgd2FzIHJlZHVjZWQgZHVyaW5nCisJICogcGFyYWxsZWwgYXV0b3ZhY3V1bSBleGVjdXRp b24sIHdlIG11c3QgY2FwIGF2YWlsYWJsZSB3b3JrZXJzIG51bWJlciBieQorCSAqIGl0cyBuZXcg dmFsdWUuCisJICovCisJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzID0K KwkJTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyArIG53b3JrZXJz LAorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vycyk7CisKKwlMV0xvY2tSZWxlYXNl KEF1dG92YWN1dW1Mb2NrKTsKK30KKwogLyoKICAqIGF1dG92YWNfaW5pdAogICoJCVRoaXMgaXMg Y2FsbGVkIGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6YXRpb24uCkBAIC0zMzg5LDYgKzM0NjksOCBA QCBBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQpCiAJCUFzc2VydCghZm91bmQpOwogCiAJCUF1dG9W YWN1dW1TaG1lbS0+YXZfbGF1bmNoZXJwaWQgPSAwOworCQlBdXRvVmFjdXVtU2htZW0tPmF2X2Zy ZWVQYXJhbGxlbFdvcmtlcnMgPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczsK IAkJZGNsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMpOwogCQlkbGlz dF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKTsKIAkJQXV0b1ZhY3V1 bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7CkBAIC0zNDM5LDYgKzM1MjEsMTIgQEAg Y2hlY2tfYXV0b3ZhY3V1bV93b3JrX21lbShpbnQgKm5ld3ZhbCwgdm9pZCAqKmV4dHJhLCBHdWNT b3VyY2Ugc291cmNlKQogCXJldHVybiB0cnVlOwogfQogCit2b2lkCithc3NpZ25fYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2VycyhpbnQgbmV3dmFsLCB2b2lkICpleHRyYSkKK3sKKwlhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID0gTWluKG5ld3ZhbCwgbWF4X3dvcmtlcl9wcm9j ZXNzZXMpOworfQorCiAvKgogICogUmV0dXJucyB3aGV0aGVyIHRoZXJlIGlzIGEgZnJlZSBhdXRv dmFjdXVtIHdvcmtlciBzbG90IGF2YWlsYWJsZS4KICAqLwpAQCAtMzQ3MCwzICszNTU4LDMyIEBA IGNoZWNrX2F2X3dvcmtlcl9ndWNzKHZvaWQpCiAJCQkJIGVycmRldGFpbCgiVGhlIHNlcnZlciB3 aWxsIG9ubHkgc3RhcnQgdXAgdG8gXCJhdXRvdmFjdXVtX3dvcmtlcl9zbG90c1wiICglZCkgYXV0 b3ZhY3V1bSB3b3JrZXJzIGF0IGEgZ2l2ZW4gdGltZS4iLAogCQkJCQkJICAgYXV0b3ZhY3V1bV93 b3JrZXJfc2xvdHMpKSk7CiB9CisKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCBudW1iZXIgb2YgZnJl ZSBwYXJhbGxlbCB3b3JrZXJzIGNvcnJlc3BvbmRzIHRvIHRoZQorICogYXV0b3ZhY3V1bV9tYXhf cGFyYWxsZWxfd29ya2VycyBwYXJhbWV0ZXIgKGFmdGVyIGl0IHdhcyBjaGFuZ2VkKS4KKyAqLwor c3RhdGljIHZvaWQKK2FkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoaW50IHByZXZfbWF4X3Bh cmFsbGVsX3dvcmtlcnMpCit7CisJTFdMb2NrQWNxdWlyZShBdXRvdmFjdXVtTG9jaywgTFdfRVhD TFVTSVZFKTsKKworCS8qCisJICogQ2FwIHRoZSBudW1iZXIgb2YgZnJlZSB3b3JrZXJzIGJ5IG5l dyBwYXJhbWV0ZXIncyB2YWx1ZSwgaWYgbmVlZGVkLgorCSAqLworCUF1dG9WYWN1dW1TaG1lbS0+ YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCU1pbihBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQ YXJhbGxlbFdvcmtlcnMsCisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzKTsKKwor CWlmIChhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzID4gcHJldl9tYXhfcGFyYWxsZWxf d29ya2VycykKKwl7CisJCS8qCisJCSAqIElmIHVzZXIgd2FudHMgdG8gaW5jcmVhc2UgbnVtYmVy IG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2Vycywgd2UKKwkJICogbXVzdCBpbmNyZWFzZSBu dW1iZXIgb2YgZnJlZSB3b3JrZXJzLgorCQkgKi8KKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVl UGFyYWxsZWxXb3JrZXJzICs9CisJCQkoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyAt IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpOworCX0KKworCUxXTG9ja1JlbGVhc2UoQXV0b3Zh Y3V1bUxvY2spOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwppbmRleCBkMzFjYjQ1YTA1OC4u ZmQwMGQ2Zjg5ZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jCkBAIC0xNDMsNiArMTQzLDcg QEAgaW50CQkJTkJ1ZmZlcnMgPSAxNjM4NDsKIGludAkJCU1heENvbm5lY3Rpb25zID0gMTAwOwog aW50CQkJbWF4X3dvcmtlcl9wcm9jZXNzZXMgPSA4OwogaW50CQkJbWF4X3BhcmFsbGVsX3dvcmtl cnMgPSA4OworaW50CQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDA7CiBpbnQJ CQlNYXhCYWNrZW5kcyA9IDA7CiAKIC8qIEdVQyBwYXJhbWV0ZXJzIGZvciB2YWN1dW0gKi8KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXggZDE0YjE2NzhlN2YuLjQ5NDFhZDk3NmRm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzYwNCw2ICszNjA0LDE2IEBA IHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBO VUxMCiAJfSwKIAorCXsKKwkJeyJhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIiwgUEdD X1NJR0hVUCwgVkFDVVVNX0FVVE9WQUNVVU0sCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVt YmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycywgdGhhdCBjYW4gYmUgdGFrZW4gZnJv bSBiZ3dvcmtlcnMgcG9vbC4iKSwKKwkJCWdldHRleHRfbm9vcCgiVGhpcyBwYXJhbWV0ZXIgaXMg Y2FwcGVkIGJ5IFwibWF4X3dvcmtlcl9wcm9jZXNzZXNcIiAobm90IGJ5IFwiYXV0b3ZhY3V1bV9t YXhfd29ya2Vyc1wiISkuIiksCisJCX0sCisJCSZhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3Jr ZXJzLAorCQkwLCAwLCBNQVhfQkFDS0VORFMsCisJCU5VTEwsIGFzc2lnbl9hdXRvdmFjdXVtX21h eF9wYXJhbGxlbF93b3JrZXJzLCBOVUxMCisJfSwKKwogCXsKIAkJeyJtYXhfcGFyYWxsZWxfbWFp bnRlbmFuY2Vfd29ya2VycyIsIFBHQ19VU0VSU0VULCBSRVNPVVJDRVNfV09SS0VSX1BST0NFU1NF UywKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwg cHJvY2Vzc2VzIHBlciBtYWludGVuYW5jZSBvcGVyYXRpb24uIiksCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYTlkODI5MzQ3NGEuLmJiZjUz MDcwMDBmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlCkBAIC02ODMsNiArNjgzLDcgQEAKIGF1dG92YWN1dW1fd29ya2VyX3Nsb3RzID0gMTYJIyBh dXRvdmFjdXVtIHdvcmtlciBzbG90cyB0byBhbGxvY2F0ZQogCQkJCQkjIChjaGFuZ2UgcmVxdWly ZXMgcmVzdGFydCkKICNhdXRvdmFjdXVtX21heF93b3JrZXJzID0gMwkJIyBtYXggbnVtYmVyIG9m IGF1dG92YWN1dW0gc3VicHJvY2Vzc2VzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2Vy cyA9IDAJIyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBsaW1pdGVkIGJ5IG1heF93b3JrZXJfcHJv Y2Vzc2VzCiAjYXV0b3ZhY3V1bV9uYXB0aW1lID0gMW1pbgkJIyB0aW1lIGJldHdlZW4gYXV0b3Zh Y3V1bSBydW5zCiAjYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkID0gNTAJIyBtaW4gbnVtYmVy IG9mIHJvdyB1cGRhdGVzIGJlZm9yZQogCQkJCQkjIHZhY3V1bQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5j CmluZGV4IDM3NTI0MzY0MjkwLi4zYjNkNDQzOGU2NSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpA QCAtMTM5OSw2ICsxMzk5LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRhYmxlX3N0b3Jh Z2VfcGFyYW1ldGVyc1tdID0gewogCSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2Fn ZSIsCiAJImF1dG92YWN1dW1fbXVsdGl4YWN0X2ZyZWV6ZV9taW5fYWdlIiwKIAkiYXV0b3ZhY3V1 bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZSIsCisJImF1dG92YWN1dW1fcGFyYWxsZWxfd29y a2VycyIsCiAJImF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfZGVsYXkiLAogCSJhdXRvdmFjdXVtX3Zh Y3V1bV9jb3N0X2xpbWl0IiwKIAkiYXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0X3NjYWxlX2ZhY3Rv ciIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21p c2NhZG1pbi5oCmluZGV4IDFiZWY5ODQ3MWMzLi44NTkyNjQxNTY1NyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbWlzY2FkbWluLmgKKysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE3 Nyw2ICsxNzcsNyBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IE1heEJhY2tlbmRzOwogZXh0ZXJu IFBHRExMSU1QT1JUIGludCBNYXhDb25uZWN0aW9uczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQg bWF4X3dvcmtlcl9wcm9jZXNzZXM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxl bF93b3JrZXJzOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBhdXRvdmFjdXVtX21heF9wYXJhbGxl bF93b3JrZXJzOwogCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1lc3RhbXBfYnVm ZmVyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5j bHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCBlODEzNWY0MWExYy4uNDJkNGE2M2Qw MzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBi L3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCkBAIC02NCw2ICs2NCwxMCBAQCBw Z19ub3JldHVybiBleHRlcm4gdm9pZCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFy dHVwX2RhdGEsIHNpemVfdCBzdGFydAogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1bVJlcXVlc3RXb3Jr KEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlwZSwKIAkJCQkJCQkJICBPaWQgcmVsYXRpb25JZCwg QmxvY2tOdW1iZXIgYmxrbm8pOwogCisvKiBwYXJhbGxlbCBhdXRvdmFjdXVtIHN0dWZmICovCitl eHRlcm4gaW50CUF1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2Vycyk7 CitleHRlcm4gdm9pZCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtl cnMpOworCiAvKiBzaGFyZWQgbWVtb3J5IHN0dWZmICovCiBleHRlcm4gU2l6ZSBBdXRvVmFjdXVt U2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oIGIvc3JjL2luY2x1ZGUv dXRpbHMvZ3VjX2hvb2tzLmgKaW5kZXggODJhYzg2NDZhOGQuLjA0ODMzYjRmMTQ3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfaG9va3MuaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9ndWNfaG9va3MuaApAQCAtMzEsNiArMzEsNyBAQCBleHRlcm4gdm9pZCBhc3NpZ25fYXBwbGlj YXRpb25fbmFtZShjb25zdCBjaGFyICpuZXd2YWwsIHZvaWQgKmV4dHJhKTsKIGV4dGVybiBjb25z dCBjaGFyICpzaG93X2FyY2hpdmVfY29tbWFuZCh2b2lkKTsKIGV4dGVybiBib29sIGNoZWNrX2F1 dG92YWN1dW1fd29ya19tZW0oaW50ICpuZXd2YWwsIHZvaWQgKipleHRyYSwKIAkJCQkJCQkJCSAg R3VjU291cmNlIHNvdXJjZSk7CitleHRlcm4gdm9pZCBhc3NpZ25fYXV0b3ZhY3V1bV9tYXhfcGFy YWxsZWxfd29ya2VycyhpbnQgbmV3dmFsLCB2b2lkICpleHRyYSk7CiBleHRlcm4gYm9vbCBjaGVj a192YWN1dW1fYnVmZmVyX3VzYWdlX2xpbWl0KGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsCiAJ CQkJCQkJCQkJCUd1Y1NvdXJjZSBzb3VyY2UpOwogZXh0ZXJuIGJvb2wgY2hlY2tfYmFja3RyYWNl X2Z1bmN0aW9ucyhjaGFyICoqbmV3dmFsLCB2b2lkICoqZXh0cmEsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS91dGlscy9yZWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCmluZGV4IGI1NTIz NTk5MTVmLi5lZGQyODY4MDhiZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmgKQEAgLTMxMSw2ICszMTEsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QgRm9yZWlnbktleUNhY2hlSW5mbwogdHlwZWRlZiBzdHJ1Y3QgQXV0b1ZhY09wdHMK IHsKIAlib29sCQllbmFibGVkOworCisJLyoKKwkgKiBNYXggbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2Vycy4gSWYgdmFsdWUgaXMgMCB0aGVuIHBhcmFsbGVsCisJICogZGVncmVl IHdpbGwgY29tcHV0ZWQgYmFzZWQgb24gbnVtYmVyIG9mIGluZGV4ZXMuCisJICovCisJaW50CQkJ YXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzOworCiAJaW50CQkJdmFjdXVtX3RocmVzaG9sZDsK IAlpbnQJCQl2YWN1dW1fbWF4X3RocmVzaG9sZDsKIAlpbnQJCQl2YWN1dW1faW5zX3RocmVzaG9s ZDsKLS0gCjIuNDMuMAoK --00000000000011a4b0063a7ef13b--