Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wJicf-000ANn-0i for pgsql-hackers@arkaria.postgresql.org; Mon, 04 May 2026 02:01:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wJicb-005DAp-2w for pgsql-hackers@arkaria.postgresql.org; Mon, 04 May 2026 02:01:21 +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.96) (envelope-from ) id 1wJicb-005DAg-10 for pgsql-hackers@lists.postgresql.org; Mon, 04 May 2026 02:01:21 +0000 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wJicY-000000004pe-3i2Z for pgsql-hackers@lists.postgresql.org; Mon, 04 May 2026 02:01:20 +0000 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-415c8a4d2e6so1534330fac.0 for ; Sun, 03 May 2026 19:01:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1777860078; cv=none; d=google.com; s=arc-20240605; b=OGub5BvNYUiC6nsg693DRCIFOfhiFKeKD22J4vvS8RHC4rc8TLgRuxpX8ebKiPckwA fKkaXhMlrbzcZd7xAxo4HUvcit0c+wofDxtnK+AqZd3Y4Oe4bbD/PF739sKVMwD3JAwT Lp7YFVwOFtB23huxlkELmUqMh9ULk0W9eh35CLfqrnav0D+ZUMJ0LNdq/Nus2lUthv58 rOvrAYRqpSiRJ6Ia3BDGeIz+KtJEWO675+LyzfpsDxOrDls0sZ5MCTInG7JxRVPz/b6u eynmiBFdNMpaE6eIkHcUTKOBYgBAElo9T9mv40n2ScaHPrI1VUJdFq+u0QAcWYJVeYPD 8GKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=9CnJzy/S1XGlXzIL3pZC0bUZnmZHvlj2B5Snjx430fo=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=A5t7B2JDfRvDZZaeXILwX01gV9p0JuPQjSjwrMcXKAZ6hxjzhjlc9SCX6FzsJY5Vh0 cuX2781vSBgJhQYj/QlCMGs21niomqPwNFo5NTl3DZL8JLdzQj91NflzbS6K8+cygXdb A9jkSYDw7yFNRNBxcDrScwD6G5ArZqSJriJ2OADnk65gpCSLzveksTHKgUjmFQyIQtVl zruDUJD7LlqD9zOhrlHHBmEcc1MQsT0l2SQtbLXtX6Uawzv6kmzEPtN78su0wc5c1Gw0 DhswyE8ruT6Pszydz2y4rjhxNySoeCvoQgBY2XzJYbXUoyaQQvMvbk6oNssy02B4Dvvg JXKQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777860078; x=1778464878; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=9CnJzy/S1XGlXzIL3pZC0bUZnmZHvlj2B5Snjx430fo=; b=HSqT8xLrBzmM9wqE8ob7zUkmTBuSCz/88HWHjU9/GBtKnkwSKMxFkudZJCiHv1xpml J0Zp4c0KQKXGYlfZlOfEr+zp8RUUuOQB6+wW1VtnfsrkYzuZ9SPTwTPLCeBZdYrNXEUs 89G8MCw3afQNK00VvMLOxYyOIMCFovWteXS+XaRXD6EPp6chVqc6oIuXaPNnRgAWECN0 0EGQr4P5VJcIY6YSn56MqcUTPGkizKUpz8ChjeqC6nQLQtdybv/R5vQccDw02eMqcWdg vefhVPMOHUk7ErUSuhF+zKpgKIElSoRsOddz8QUMsUeEXBJ9WmG7xxBAtZAeYY5FmCQu LASA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777860078; x=1778464878; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=9CnJzy/S1XGlXzIL3pZC0bUZnmZHvlj2B5Snjx430fo=; b=bA93NKoayKUaJRe+wM1WiLDvdXNeH+P8jbviMVU6UJD/qGgIfXjA1M6qIoaQUVdB7j VDeTXjH3SVbHQGFqFu/zOWvolCW9JGWsGqzcGwRcUtucAtLWr48cSj0XPF+Fm0PpMLzZ hcSdkLfvnxoitqpTpHCu9qx5ZzDxxM6a2fsnmizTEBKpKEKs0Vh9smPYEnXDzw/pZ49Q XgiwBMwnTQGDL+ovvmWrFbfXtfdqg2pqrh1s3GMojro7N2Abu6ZsCEQGINcDtmx+bS4D GuFHa2TlRGHOhNQOycP6uRspFx/d2J5chKFgTVYpxoh0/RNu+vJrMFe6ihNBjdedKIZK kcrQ== X-Gm-Message-State: AOJu0YxMcVqmE6E2r8f4mHCwSotMxDl2O3JkZ3j/kPyk6XEzXXgJRM9s bs9me+t+BxvKvy2Aakd7HH5Pg7MDk94HtVpq9IvIw1sKmhr5tq97b5lyInmN+3Dsvu3GNxMv6d0 mzlovrtI3izdAhtSMa+i7ACXpRzly1dpkhg== X-Gm-Gg: AeBDieuz0OPnGKZgY/czZL3FHGAOnV9VpGxq6LS+RAe9AKIcEEVF12v2wI7Vo0UO9du 6U0ro7Q/JtPZ91KUDlKg816QXYlwdhReo7WTz1XK9uvKt2XNsC26Uia1u3QipzB02Np3334fPF5 wFVM+Gl2Ux4hBuOMmBqH9eRZQLPzJq+83jq/mp7r6daA8o+ZKBV5OuQfc90tTExGtHt2HkbMLg4 5U1uL5OYRCbkpxcPPN4eJFGhggWbTKZXZIRHDFX1coNREv+c5UBRCzvYnmDLfvBU03gwQ6ulaLR CO2tgjJEimGuRyayi3INmqqZLM8l+rlc2ADBVaQ4JjKb15zZfUQ= X-Received: by 2002:a05:6820:629:b0:696:573c:9f12 with SMTP id 006d021491bc7-696979a4e38mr3665114eaf.4.1777860078374; Sun, 03 May 2026 19:01:18 -0700 (PDT) MIME-Version: 1.0 From: Bharath Rupireddy Date: Sun, 3 May 2026 19:00:00 -0700 X-Gm-Features: AVHnY4LhsA7lg2BDFPVUPl-vR4tZ49CuxmE9g4nZMVOlMk1l4r84Me4dFLCH7QE Message-ID: Subject: Report index currently being vacuumed in pg_stat_progress_vacuum To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000006ea9640650f44e9e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000006ea9640650f44e9e Content-Type: multipart/alternative; boundary="0000000000006ea9620650f44e9c" --0000000000006ea9620650f44e9c Content-Type: text/plain; charset="UTF-8" Hi, When VACUUM is in the "vacuuming indexes" or "cleaning up indexes" phase, there is currently no easy way to tell which specific index is being processed. The progress report view shows indexes_total and indexes_processed counters, but not which index is actively being worked on. This makes it difficult to debug slow or stuck autovacuum workers on tables with multiple indexes of different types (btree, GIN, GiST, BRIN, HNSW, etc.), since one cannot determine which index type or which specific index is causing the delay. Please find the attached patch adds a new column current_index_relid to pg_stat_progress_vacuum that reports the OID of the index currently being vacuumed or cleaned up. The column is reported for both the "vacuuming indexes" phase and the "cleaning up indexes" phase. When indexes are being vacuumed in parallel, each parallel worker emits its own row in pg_stat_progress_vacuum with current_index_relid set to the index it is currently processing, and leader_pid pointing to the leader process. Appreciate any feedback. Thank you! [1] Example output: pid | datname | relid | table_name | phase | started_by | current_index_relid | index_name | leader_pid ------+----------+-------+------------+-------------------+------------+---------------------+---------------+------------ 1420 | postgres | 16395 | vac_test | vacuuming indexes | autovacuum | 16398 | vac_test_idx1 | 1421 | postgres | 16395 | vac_test | vacuuming indexes | | 16399 | vac_test_idx2 | 1420 1423 | postgres | 16395 | vac_test | vacuuming indexes | | 16400 | vac_test_idx3 | 1420 (3 rows) pid | datname | relid | table_name | phase | started_by | current_index_relid | index_name | leader_pid ------+----------+-------+------------+-------------------+------------+---------------------+---------------+------------ 1346 | postgres | 16395 | vac_test | vacuuming indexes | manual | 16398 | vac_test_idx1 | (1 row) [2] SELECT v.pid, v.datname, v.relid, c.relname AS table_name, v.phase, v.started_by, v.current_index_relid, COALESCE(ic.relname, '') AS index_name, v.leader_pid FROM pg_stat_progress_vacuum v JOIN pg_class c ON c.oid = v.relid LEFT JOIN pg_class ic ON ic.oid = v.current_index_relid WHERE v.relid = $tbl_oid ORDER BY v.leader_pid, v.pid; -- Bharath Rupireddy Amazon Web Services: https://aws.amazon.com --0000000000006ea9620650f44e9c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

When VACUUM i= s in the "vacuuming indexes" or "cleaning up indexes" p= hase, there is currently no easy way to tell which specific index is being = processed. The progress report view shows indexes_total and indexes_process= ed counters, but not which index is actively being worked on.

This m= akes it difficult to debug slow or stuck autovacuum workers on tables with = multiple indexes of different types (btree, GIN, GiST, BRIN, HNSW, etc.), s= ince one cannot determine which index type or which specific index is causi= ng the delay.

Please find the attached patch adds a new column curre= nt_index_relid to pg_stat_progress_vacuum that reports the OID of the index= currently being vacuumed or cleaned up. The column is reported for both th= e "vacuuming indexes" phase and the "cleaning up indexes&quo= t; phase.

When indexes are being vacuumed in parallel, each parallel= worker emits its own row in pg_stat_progress_vacuum with current_index_rel= id set to the index it is currently processing, and leader_pid pointing to = the leader process.

Appreciate any feedback. Thank you!

[1] E= xample output:

=C2=A0pid =C2=A0| datname = =C2=A0| relid | table_name | =C2=A0 =C2=A0 =C2=A0 phase =C2=A0 =C2=A0 =C2= =A0 | started_by | current_index_relid | =C2=A0index_name =C2=A0 | leader_p= id
------+----------+-------+------------+-------------------+---------= ---+---------------------+---------------+------------
=C2=A01420 | post= gres | 16395 | vac_test =C2=A0 | vacuuming indexes | autovacuum | =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 16398 | vac_test_idx1 | =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0
=C2=A01421 | postgres | 16395 | vac_test =C2= =A0 | vacuuming indexes | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 16399 | vac_test_idx2 | =C2=A0 = =C2=A0 =C2=A0 1420
=C2=A01423 | postgres | 16395 | vac_test =C2=A0 | vac= uuming indexes | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 16400 | vac_test_idx3 | =C2=A0 =C2=A0 = =C2=A0 1420
(3 rows)

=C2=A0pid = =C2=A0| datname =C2=A0| relid | table_name | =C2=A0 =C2=A0 =C2=A0 phase =C2= =A0 =C2=A0 =C2=A0 | started_by | current_index_relid | =C2=A0index_name =C2= =A0 | leader_pid
------+----------+-------+------------+---------------= ----+------------+---------------------+---------------+------------
=C2= =A01346 | postgres | 16395 | vac_test =C2=A0 | vacuuming indexes | manual = =C2=A0 =C2=A0 | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 16398 | va= c_test_idx1 | =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0
(1 row)


[= 2]
SELECT v.pid, v.datname, v.relid, c.relname = AS table_name,
=C2=A0 =C2=A0 =C2=A0 =C2=A0v.phase, v.started_by, v.curre= nt_index_relid,
=C2=A0 =C2=A0 =C2=A0 =C2=A0COALESCE(ic.relname, '= 9;) AS index_name, v.leader_pid
FROM pg_stat_progress_vacuum v
JOIN p= g_class c
=C2=A0 =C2=A0 ON c.oid =3D v.relid
LEFT JOIN pg_class ic=C2=A0 =C2=A0 ON ic.oid =3D v.current_index_relid
WHERE v.relid =3D $tb= l_oid
ORDER BY
=C2=A0 =C2=A0 v.leader_pid,
=C2=A0 =C2=A0 v.pid;

--
Bharath Rupireddy
Amazon Web Services: https://aws.amazon.com
--0000000000006ea9620650f44e9c-- --0000000000006ea9640650f44e9e Content-Type: application/x-patch; name="v1-0001-Report-index-currently-being-vacuumed-in-pg_stat_.patch" Content-Disposition: attachment; filename="v1-0001-Report-index-currently-being-vacuumed-in-pg_stat_.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo3h1ldf0 RnJvbSA1NTZkOGM0YThkYjFiMWVlMjNmMTk2MzFlOGM5NGFjNzAyYTI2MDQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTcgQXByIDIwMjYgMjI6MTE6MjAgKzAw MDAKU3ViamVjdDogW1BBVENIIHYxXSBSZXBvcnQgaW5kZXggY3VycmVudGx5IGJlaW5nIHZhY3V1 bWVkIGluCiBwZ19zdGF0X3Byb2dyZXNzX3ZhY3V1bQoKV2hlbiBWQUNVVU0gaXMgaW4gdGhlICJ2 YWN1dW1pbmcgaW5kZXhlcyIgb3IgImNsZWFuaW5nIHVwIGluZGV4ZXMiCnBoYXNlLCB0aGVyZSBp cyBubyB3YXkgdG8gdGVsbCB3aGljaCBzcGVjaWZpYyBpbmRleCBpcyBiZWluZwpwcm9jZXNzZWQu IFRoZSB2aWV3IHNob3dzIGluZGV4ZXNfdG90YWwgYW5kIGluZGV4ZXNfcHJvY2Vzc2VkCmNvdW50 ZXJzLCBidXQgbm90IHdoaWNoIGluZGV4IGlzIGFjdGl2ZWx5IGJlaW5nIHdvcmtlZCBvbi4KClRo aXMgbWFrZXMgaXQgZGlmZmljdWx0IHRvIGRlYnVnIHNsb3cgb3Igc3R1Y2sgYXV0b3ZhY3V1bSB3 b3JrZXJzCm9uIHRhYmxlcyB3aXRoIG11bHRpcGxlIGluZGV4ZXMgKGJ0cmVlLCBHSU4sIEdpU1Qs IEJSSU4sIEhOU1csCmV0Yy4pLCBzaW5jZSBvbmUgY2Fubm90IGRldGVybWluZSB3aGljaCBpbmRl eCB0eXBlIG9yIHdoaWNoIHNwZWNpZmljCmluZGV4IGlzIGNhdXNpbmcgdGhlIGRlbGF5LgoKVGhp cyBjb21taXQgYWRkcyBhIG5ldyBjb2x1bW4gY3VycmVudF9pbmRleF9yZWxpZCB0bwpwZ19zdGF0 X3Byb2dyZXNzX3ZhY3V1bSB0aGF0IHJlcG9ydHMgdGhlIE9JRCBvZiB0aGUgaW5kZXggY3VycmVu dGx5CmJlaW5nIHZhY3V1bWVkIG9yIGNsZWFuZWQgdXAuIFRoZSB2YWx1ZSBpcyBzZXQgYmVmb3Jl IGVhY2ggaW5kZXgKdmFjdXVtL2NsZWFudXAgYmVnaW5zIGFuZCByZXNldCB0byAwIHdoZW4gYWxs IGluZGV4ZXMgaGF2ZSBiZWVuCnByb2Nlc3NlZC4KClRoZSBjb2x1bW4gaXMgcmVwb3J0ZWQgZm9y IGJvdGggdGhlICJ2YWN1dW1pbmcgaW5kZXhlcyIgcGhhc2UgYW5kCnRoZSAiY2xlYW5pbmcgdXAg aW5kZXhlcyIgcGhhc2UuCgpXaGVuIGluZGV4ZXMgYXJlIHZhY3V1bWVkIGluIHBhcmFsbGVsLCBl YWNoIHBhcmFsbGVsIHdvcmtlciBlbWl0cwppdHMgb3duIHJvdyBpbiBwZ19zdGF0X3Byb2dyZXNz X3ZhY3V1bSB3aXRoIGN1cnJlbnRfaW5kZXhfcmVsaWQgc2V0CnRvIHRoZSBpbmRleCBpdCBpcyBw cm9jZXNzaW5nLCBhbmQgbGVhZGVyX3BpZCBzZXQgdG8gdGhlIFBJRCBvZiB0aGUKbGVhZGVyLiBG b3IgdGhlIGxlYWRlciBwcm9jZXNzIGl0c2VsZiAob3Igbm9uLXBhcmFsbGVsIHZhY3V1bSksCmxl YWRlcl9waWQgaXMgTlVMTC4KLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAg ICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYyAgfCAxNiArKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS9wYXJhbGxlbC5jIHwgIDkgKysrKysrKysrCiBzcmMvYmFja2VuZC9jYXRhbG9n L3N5c3RlbV92aWV3cy5zcWwgIHwgIDQgKysrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt cGFyYWxsZWwuYyB8IDIxICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvYWNjZXNz L3BhcmFsbGVsLmggICAgICAgICB8ICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNz LmggICAgICAgfCAgMiArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgICB8 ICA0ICsrKy0KIDggZmlsZXMgY2hhbmdlZCwgODEgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAwOGQ1YjgyNDU1Mi4uMGE3MjIzNjA4ZTYgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbApAQCAtNzU3Nyw2ICs3NTc3LDMyIEBAIEZST00gcGdfc3RhdF9nZXRfYmFj a2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y3VycmVudF9pbmRleF9yZWxpZDwvc3RydWN0ZmllbGQ+ IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIElm IDxjb21tYW5kPlZBQ1VVTTwvY29tbWFuZD4gaXMgY3VycmVudGx5IHByb2Nlc3NpbmcgYW4gaW5k ZXgsIHRoaXMKKyAgICAgICBjb2x1bW4gc2hvd3MgdGhlIE9JRCBvZiB0aGUgaW5kZXggYmVpbmcg dmFjdXVtZWQuIFRoZSB2YWx1ZSBpcyBzZXQKKyAgICAgICB3aGVuIHRoZSBwaGFzZSBpcyA8bGl0 ZXJhbD52YWN1dW1pbmcgaW5kZXhlczwvbGl0ZXJhbD4gb3IKKyAgICAgICA8bGl0ZXJhbD5jbGVh bmluZyB1cCBpbmRleGVzPC9saXRlcmFsPiBhbmQgaXMgcmVzZXQgdG8gMCB3aGVuIGFsbAorICAg ICAgIGluZGV4ZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gRHVyaW5nIHBhcmFsbGVsIGluZGV4IHZh Y3V1bSwgZWFjaAorICAgICAgIHBhcmFsbGVsIHdvcmtlciByb3cgc2hvd3MgdGhlIGluZGV4IHRo YXQgcGFydGljdWxhciB3b3JrZXIgaXMKKyAgICAgICBwcm9jZXNzaW5nLgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5sZWFkZXJfcGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+YmlnaW50PC90 eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJRCBvZiB0 aGUgbGVhZGVyIHByb2Nlc3MgaWYgdGhpcyBwcm9jZXNzIGlzIGEgcGFyYWxsZWwKKyAgICAgICB2 YWN1dW0gd29ya2VyOyA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBpZiB0aGlzIHByb2Nlc3MgaXMg dGhlCisgICAgICAgbGVhZGVyIGl0c2VsZiBvciBpZiB0aGUgdmFjdXVtIGlzIG5vdCBydW5uaW5n IGluIHBhcmFsbGVsLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgogICAgIDwv dGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYwppbmRleCAzOTM5NWFlZDBkNS4uZWEwNDAwMzYyNTEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKQEAgLTMwMjUsNiArMzAyNSwxMCBAQCBsYXp5X3ZhY3V1bV9vbmVf aW5kZXgoUmVsYXRpb24gaW5kcmVsLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKmlzdGF0LAogCWl2 aW5mby5udW1faGVhcF90dXBsZXMgPSByZWx0dXBsZXM7CiAJaXZpbmZvLnN0cmF0ZWd5ID0gdmFj cmVsLT5ic3RyYXRlZ3k7CiAKKwkvKiBSZXBvcnQgd2hpY2ggaW5kZXggd2UncmUgY3VycmVudGx5 IHByb2Nlc3NpbmcgKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1ZB Q1VVTV9DVVJSRU5UX0lOREVYX1JFTElELAorCQkJCQkJCQkgKGludDY0KSBSZWxhdGlvbkdldFJl bGlkKGluZHJlbCkpOworCiAJLyoKIAkgKiBVcGRhdGUgZXJyb3IgdHJhY2ViYWNrIGluZm9ybWF0 aW9uLgogCSAqCkBAIC0zMDQ2LDYgKzMwNTAsMTAgQEAgbGF6eV92YWN1dW1fb25lX2luZGV4KFJl bGF0aW9uIGluZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlwZnJlZSh2YWNy ZWwtPmluZG5hbWUpOwogCXZhY3JlbC0+aW5kbmFtZSA9IE5VTEw7CiAKKwkvKiBSZXNldCB0aGUg Y3VycmVudCBpbmRleCByZWxpZCB0byBhdm9pZCByZXBvcnRpbmcgYSBzdGFsZSB2YWx1ZSAqLwor CXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfVkFDVVVNX0NVUlJFTlRfSU5E RVhfUkVMSUQsCisJCQkJCQkJCSAoaW50NjQpIEludmFsaWRPaWQpOworCiAJcmV0dXJuIGlzdGF0 OwogfQogCkBAIC0zMDc2LDYgKzMwODQsMTAgQEAgbGF6eV9jbGVhbnVwX29uZV9pbmRleChSZWxh dGlvbiBpbmRyZWwsIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqaXN0YXQsCiAJaXZpbmZvLm51bV9o ZWFwX3R1cGxlcyA9IHJlbHR1cGxlczsKIAlpdmluZm8uc3RyYXRlZ3kgPSB2YWNyZWwtPmJzdHJh dGVneTsKIAorCS8qIFJlcG9ydCB3aGljaCBpbmRleCB3ZSdyZSBjdXJyZW50bHkgcHJvY2Vzc2lu ZyAqLworCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfVkFDVVVNX0NVUlJF TlRfSU5ERVhfUkVMSUQsCisJCQkJCQkJCSAoaW50NjQpIFJlbGF0aW9uR2V0UmVsaWQoaW5kcmVs KSk7CisKIAkvKgogCSAqIFVwZGF0ZSBlcnJvciB0cmFjZWJhY2sgaW5mb3JtYXRpb24uCiAJICoK QEAgLTMwOTUsNiArMzEwNywxMCBAQCBsYXp5X2NsZWFudXBfb25lX2luZGV4KFJlbGF0aW9uIGlu ZHJlbCwgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCwKIAlwZnJlZSh2YWNyZWwtPmluZG5h bWUpOwogCXZhY3JlbC0+aW5kbmFtZSA9IE5VTEw7CiAKKwkvKiBSZXNldCB0aGUgY3VycmVudCBp bmRleCByZWxpZCB0byBhdm9pZCByZXBvcnRpbmcgYSBzdGFsZSB2YWx1ZSAqLworCXBnc3RhdF9w cm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfVkFDVVVNX0NVUlJFTlRfSU5ERVhfUkVMSUQs CisJCQkJCQkJCSAoaW50NjQpIEludmFsaWRPaWQpOworCiAJcmV0dXJuIGlzdGF0OwogfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9wYXJhbGxlbC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwppbmRleCA4OWU5ZDIyNGVlYy4uMjNhMmU1 ZWVjZjAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3BhcmFsbGVsLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vcGFyYWxsZWwuYwpAQCAtMTMxLDYgKzEz MSwxNSBAQCBzdGF0aWMgZGxpc3RfaGVhZCBwY3h0X2xpc3QgPSBETElTVF9TVEFUSUNfSU5JVChw Y3h0X2xpc3QpOwogLyogQmFja2VuZC1sb2NhbCBjb3B5IG9mIGRhdGEgZnJvbSBGaXhlZFBhcmFs bGVsU3RhdGUuICovCiBzdGF0aWMgcGlkX3QgUGFyYWxsZWxMZWFkZXJQaWQ7CiAKKy8qCisgKiBS ZXR1cm4gdGhlIFBJRCBvZiB0aGUgcGFyYWxsZWwgZ3JvdXAgbGVhZGVyLgorICovCitwaWRfdAor R2V0UGFyYWxsZWxMZWFkZXJQaWQodm9pZCkKK3sKKwlyZXR1cm4gUGFyYWxsZWxMZWFkZXJQaWQ7 Cit9CisKIC8qCiAgKiBMaXN0IG9mIGludGVybmFsIHBhcmFsbGVsIHdvcmtlciBlbnRyeSBwb2lu dHMuICBXZSBuZWVkIHRoaXMgZm9yCiAgKiByZWFzb25zIGV4cGxhaW5lZCBpbiBMb29rdXBQYXJh bGxlbFdvcmtlckZ1bmN0aW9uKCksIGJlbG93LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCmluZGV4IDczYTFjMWM0NjcwLi4yMmU5Mjk0YmFjYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbApAQCAtMTM0Miw3ICsxMzQyLDkgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9w cm9ncmVzc192YWN1dW0gQVMKICAgICAgICAgQ0FTRSBTLnBhcmFtMTMgV0hFTiAxIFRIRU4gJ21h bnVhbCcKICAgICAgICAgICAgICAgICAgICAgICAgV0hFTiAyIFRIRU4gJ2F1dG92YWN1dW0nCiAg ICAgICAgICAgICAgICAgICAgICAgIFdIRU4gMyBUSEVOICdhdXRvdmFjdXVtX3dyYXBhcm91bmQn Ci0gICAgICAgICAgICAgICAgICAgICAgIEVMU0UgTlVMTCBFTkQgQVMgc3RhcnRlZF9ieQorICAg ICAgICAgICAgICAgICAgICAgICBFTFNFIE5VTEwgRU5EIEFTIHN0YXJ0ZWRfYnksCisgICAgICAg IENBU1QoUy5wYXJhbTE0IEFTIG9pZCkgQVMgY3VycmVudF9pbmRleF9yZWxpZCwKKyAgICAgICAg TlVMTElGKFMucGFyYW0xNSwgMCkgQVMgbGVhZGVyX3BpZAogICAgIEZST00gcGdfc3RhdF9nZXRf cHJvZ3Jlc3NfaW5mbygnVkFDVVVNJykgQVMgUwogICAgICAgICBMRUZUIEpPSU4gcGdfZGF0YWJh c2UgRCBPTiBTLmRhdGlkID0gRC5vaWQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jCmluZGV4IDk3OWMyYmU0YWJkLi42MTNiMzc5YTNjYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92 YWN1dW1wYXJhbGxlbC5jCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAogI2luY2x1ZGUgImFjY2Vzcy9hbWFwaS5oIgorI2luY2x1ZGUgImFjY2Vzcy9wYXJhbGxlbC5o IgogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvcHJvZ3Jlc3MuaCIKQEAgLTEwNzYsNiArMTA3NywxMSBAQCBwYXJh bGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBS ZWxhdGlvbiBpbmRyZWwsCiAJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCA9IE5VTEw7CiAJ SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdF9yZXM7CiAJSW5kZXhWYWN1dW1JbmZvIGl2aW5m bzsKKwljb25zdCBpbnQJcHJvZ3Jlc3NfaW5kZXhbXSA9IHsKKwkJUFJPR1JFU1NfVkFDVVVNX1BI QVNFLAorCQlQUk9HUkVTU19WQUNVVU1fQ1VSUkVOVF9JTkRFWF9SRUxJRAorCX07CisJaW50NjQJ CXByb2dyZXNzX3ZhbFsyXTsKIAogCS8qCiAJICogVXBkYXRlIHRoZSBwb2ludGVyIHRvIHRoZSBj b3JyZXNwb25kaW5nIGJ1bGstZGVsZXRpb24gcmVzdWx0IGlmIHNvbWVvbmUKQEAgLTExMTIsNiAr MTExOCwxMyBAQCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19vbmVfaW5kZXgoUGFyYWxsZWxWYWN1 dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCiAJCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKGluZHJlbCkpOwogCX0KIAorCS8qIFJlcG9ydCB3aGljaCBpbmRleCB3ZSdyZSBjdXJyZW50 bHkgcHJvY2Vzc2luZyBhbmQgdGhlIGN1cnJlbnQgcGhhc2UgKi8KKwlwcm9ncmVzc192YWxbMF0g PSAoaW5kc3RhdHMtPnN0YXR1cyA9PSBQQVJBTExFTF9JTkRWQUNfU1RBVFVTX05FRURfQlVMS0RF TEVURSkKKwkJPyBQUk9HUkVTU19WQUNVVU1fUEhBU0VfVkFDVVVNX0lOREVYCisJCTogUFJPR1JF U1NfVkFDVVVNX1BIQVNFX0lOREVYX0NMRUFOVVA7CisJcHJvZ3Jlc3NfdmFsWzFdID0gKGludDY0 KSBSZWxhdGlvbkdldFJlbGlkKGluZHJlbCk7CisJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0 aV9wYXJhbSgyLCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFsKTsKKwogCS8qCiAJICogQ29w eSB0aGUgaW5kZXggYnVsay1kZWxldGlvbiByZXN1bHQgcmV0dXJuZWQgZnJvbSBhbWJ1bGtkZWxl dGUgYW5kCiAJICogYW12YWN1dW1jbGVhbnVwIHRvIHRoZSBEU00gc2VnbWVudCBpZiBpdCdzIHRo ZSBmaXJzdCBjeWNsZSBiZWNhdXNlIHRoZXkKQEAgLTEzMDcsNiArMTMyMCwxMSBAQCBwYXJhbGxl bF92YWN1dW1fbWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUHJlcGFy ZSB0byB0cmFjayBidWZmZXIgdXNhZ2UgZHVyaW5nIHBhcmFsbGVsIGV4ZWN1dGlvbiAqLwogCUlu c3RyU3RhcnRQYXJhbGxlbFF1ZXJ5KCk7CiAKKwkvKiBSZWdpc3RlciB0aGlzIHdvcmtlciBmb3Ig dmFjdXVtIHByb2dyZXNzIHJlcG9ydGluZyAqLworCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21t YW5kKFBST0dSRVNTX0NPTU1BTkRfVkFDVVVNLCBzaGFyZWQtPnJlbGlkKTsKKwlwZ3N0YXRfcHJv Z3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX1ZBQ1VVTV9MRUFERVJfUElELAorCQkJCQkJCQkg KGludDY0KSBHZXRQYXJhbGxlbExlYWRlclBpZCgpKTsKKwogCS8qIFByb2Nlc3MgaW5kZXhlcyB0 byBwZXJmb3JtIHZhY3V1bS9jbGVhbnVwICovCiAJcGFyYWxsZWxfdmFjdXVtX3Byb2Nlc3Nfc2Fm ZV9pbmRleGVzKCZwdnMpOwogCkBAIC0xMzI2LDYgKzEzNDQsOSBAQCBwYXJhbGxlbF92YWN1dW1f bWFpbihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJLyogUG9wIHRoZSBlcnJvciBj b250ZXh0IHN0YWNrICovCiAJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNrLnByZXZp b3VzOwogCisJLyogVW5yZWdpc3RlciB0aGlzIHdvcmtlciBmcm9tIHZhY3V1bSBwcm9ncmVzcyBy ZXBvcnRpbmcgKi8KKwlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1hbmQoKTsKKwogCXZhY19jbG9z ZV9pbmRleGVzKG5pbmRleGVzLCBpbmRyZWxzLCBSb3dFeGNsdXNpdmVMb2NrKTsKIAl0YWJsZV9j bG9zZShyZWwsIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CiAJRnJlZUFjY2Vzc1N0cmF0ZWd5 KHB2cy5ic3RyYXRlZ3kpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3BhcmFsbGVs LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvcGFyYWxsZWwuaAppbmRleCA2MGY4NTc2NzVlMC4uZDMy OWEyNDI0YmQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9wYXJhbGxlbC5oCkBAIC03Nyw2ICs3Nyw3IEBAIGV4dGVybiB2 b2lkIFByb2Nlc3NQYXJhbGxlbE1lc3NhZ2VzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3Rf UGFyYWxsZWwoYm9vbCBpc0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBdEVPU3ViWGFjdF9QYXJhbGxl bChib29sIGlzQ29tbWl0LCBTdWJUcmFuc2FjdGlvbklkIG15U3ViSWQpOwogZXh0ZXJuIHZvaWQg UGFyYWxsZWxXb3JrZXJSZXBvcnRMYXN0UmVjRW5kKFhMb2dSZWNQdHIgbGFzdF94bG9nX2VuZCk7 CitleHRlcm4gcGlkX3QgR2V0UGFyYWxsZWxMZWFkZXJQaWQodm9pZCk7CiAKIGV4dGVybiB2b2lk IFBhcmFsbGVsV29ya2VyTWFpbihEYXR1bSBtYWluX2FyZyk7CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVz cy5oCmluZGV4IDJhMTI5MjBjNzVmLi5mOWYzZTE4NzcxOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY29tbWFuZHMvcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVz cy5oCkBAIC0zMSw2ICszMSw4IEBACiAjZGVmaW5lIFBST0dSRVNTX1ZBQ1VVTV9ERUxBWV9USU1F CQkJCTEwCiAjZGVmaW5lIFBST0dSRVNTX1ZBQ1VVTV9NT0RFCQkJCQkxMQogI2RlZmluZSBQUk9H UkVTU19WQUNVVU1fU1RBUlRFRF9CWQkJCQkxMgorI2RlZmluZSBQUk9HUkVTU19WQUNVVU1fQ1VS UkVOVF9JTkRFWF9SRUxJRAkJMTMKKyNkZWZpbmUgUFJPR1JFU1NfVkFDVVVNX0xFQURFUl9QSUQJ CQkJMTQKIAogLyogUGhhc2VzIG9mIHZhY3V1bSAoYXMgYWR2ZXJ0aXNlZCB2aWEgUFJPR1JFU1Nf VkFDVVVNX1BIQVNFKSAqLwogI2RlZmluZSBQUk9HUkVTU19WQUNVVU1fUEhBU0VfU0NBTl9IRUFQ CQkJMQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBhNjVhNWJmMGM0Zi4uMDBj MGFmNmMyNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMjAyLDcgKzIy MDIsOSBAQCBwZ19zdGF0X3Byb2dyZXNzX3ZhY3V1bXwgU0VMRUNUIHMucGlkLAogICAgICAgICAg ICAgV0hFTiAyIFRIRU4gJ2F1dG92YWN1dW0nOjp0ZXh0CiAgICAgICAgICAgICBXSEVOIDMgVEhF TiAnYXV0b3ZhY3V1bV93cmFwYXJvdW5kJzo6dGV4dAogICAgICAgICAgICAgRUxTRSBOVUxMOjp0 ZXh0Ci0gICAgICAgIEVORCBBUyBzdGFydGVkX2J5CisgICAgICAgIEVORCBBUyBzdGFydGVkX2J5 LAorICAgIChzLnBhcmFtMTQpOjpvaWQgQVMgY3VycmVudF9pbmRleF9yZWxpZCwKKyAgICBOVUxM SUYocy5wYXJhbTE1LCAwKSBBUyBsZWFkZXJfcGlkCiAgICBGUk9NIChwZ19zdGF0X2dldF9wcm9n cmVzc19pbmZvKCdWQUNVVU0nOjp0ZXh0KSBzKHBpZCwgZGF0aWQsIHJlbGlkLCBwYXJhbTEsIHBh cmFtMiwgcGFyYW0zLCBwYXJhbTQsIHBhcmFtNSwgcGFyYW02LCBwYXJhbTcsIHBhcmFtOCwgcGFy YW05LCBwYXJhbTEwLCBwYXJhbTExLCBwYXJhbTEyLCBwYXJhbTEzLCBwYXJhbTE0LCBwYXJhbTE1 LCBwYXJhbTE2LCBwYXJhbTE3LCBwYXJhbTE4LCBwYXJhbTE5LCBwYXJhbTIwKQogICAgICBMRUZU IEpPSU4gcGdfZGF0YWJhc2UgZCBPTiAoKHMuZGF0aWQgPSBkLm9pZCkpKTsKIHBnX3N0YXRfcmVj b3Zlcnl8IFNFTEVDVCBwcm9tb3RlX3RyaWdnZXJlZCwKLS0gCjIuNDcuMwoK --0000000000006ea9640650f44e9e--