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 1sVKlq-009HHA-7t for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jul 2024 00:49:50 +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 1sVKlm-0044uW-QJ for pgsql-hackers@arkaria.postgresql.org; Sun, 21 Jul 2024 00:49:47 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sVKlm-0044uO-AZ for pgsql-hackers@lists.postgresql.org; Sun, 21 Jul 2024 00:49:46 +0000 Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sVKlj-000dNz-JM for pgsql-hackers@lists.postgresql.org; Sun, 21 Jul 2024 00:49:45 +0000 Received: by mail-wm1-x32e.google.com with SMTP id 5b1f17b1804b1-4257d5fc9b7so25151955e9.2 for ; Sat, 20 Jul 2024 17:49:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1721522981; x=1722127781; darn=lists.postgresql.org; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=L7B8JysEJyNMiBpl/4D7POzjTpqcSMMJhpmo1gUyaHs=; b=OFjkHL1pYDU5cMnVYZutpocihGHyUt5/Yd/M1yRMsyNNqp2/cXfR6TQBHj/K2KEP4c jRDo7s674cNs3ffBBdagxX4Lt0J/DaJpo7It8KyHMs/O0veqz/WUJOs1ywt4HXG1PjvG 45lLxfI/cQasrp3mEz6M8+1NaCVkBJkIB6bTSwU1zQF45UFcTcF4nO+kt0W2bnl3P7Jo KLBWUC65ob9vnL3YHvO4OexbecHnDK1wr5qwryN0ofN5vHOrrqa1ozkUKzwpX0fwO9uu X8RJ1n5Ztiwf8hrT53X3okMCKqskHBZaR9RdQdCNVLR7+3FeCZdiFJs3BiR6TfplLazD OYGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721522981; x=1722127781; h=in-reply-to:content-language:references:cc:to:subject:from :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=L7B8JysEJyNMiBpl/4D7POzjTpqcSMMJhpmo1gUyaHs=; b=q2RIEM2G8bG9FPMCrKTxepZXpef026Gbopxpy4T8QRg7nKTw259FjaVJGNRaqewsWz kT+oCf6JB3HqG5xI3s9pPFcPa8XPf5yqd6VqWV9LBwSOR2GK3D2wS/PqdgfJ2iqPLz4V T5xTUPB1TF+Y5xDXwJu3pzYWMQ4w8HSe1VYmUyl6VE7fKahAXKr1ASJj3re1O6dPCfyv cGeSxpmjDKqKHloKXveCe4LYCXG6iX3mKlDEX25yLJaSH9REZKcB8No7lQvD9K/wlhHr 06hr2h8/pFd4uhJIEFuVxoVpVbYzC7kANMBI9npTrC5DN3Lk3NwpJu6ens829ZeZhfbd CexA== X-Gm-Message-State: AOJu0Yy2KkJEf8eibWfXkjLWlYULVOovG7oqEXeyvcZ2NqpIthsPIx3G LTfbsAX+UKZYmR5UlKAA7ObsQ+0wKRU2TEG6D+c24hG3abR5uhYIVPDgfA== X-Google-Smtp-Source: AGHT+IGWQK+hPpxpJIFeqcdlwao83Ff5UAaa8smaNBBUDKASzh6hRhpSCPMLTkjuGtzdticyxAvMFg== X-Received: by 2002:a05:600c:1e10:b0:426:6822:5aa8 with SMTP id 5b1f17b1804b1-427dc527fa8mr25549265e9.18.1721522980444; Sat, 20 Jul 2024 17:49:40 -0700 (PDT) Received: from ?IPV6:2a01:4b00:c00c:a500:9291:6d58:d853:2657? ([2a01:4b00:c00c:a500:9291:6d58:d853:2657]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3687868420fsm4829987f8f.3.2024.07.20.17.49.39 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 20 Jul 2024 17:49:39 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------m9V6mLgQziIb4J8OUt7U4bkk" Message-ID: <779baf7f-6fc7-4431-a08e-eec63d84c6a3@gmail.com> Date: Sun, 21 Jul 2024 01:49:39 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Ilya Gladyshev Subject: Re: REINDEX not updating partition progress To: Michael Paquier Cc: pgsql-hackers@lists.postgresql.org References: Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------m9V6mLgQziIb4J8OUt7U4bkk Content-Type: multipart/alternative; boundary="------------omB1BXt0fDFUF0jBGyoIP2Ds" --------------omB1BXt0fDFUF0jBGyoIP2Ds Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit > 19 июля 2024 г., в 04:17, Michael Paquier > написал(а): > > On Fri, Jul 12, 2024 at 11:07:49PM +0100, Ilya Gladyshev wrote: >> While working on CIC for partitioned tables [1], I noticed that >> REINDEX for >> partitioned tables is not tracking keeping progress of partitioned >> tables, >> so I'm creating a separate thread for this fix as suggested. > > This limitation is not a bug, because we already document that > partitions_total and partitions_done are 0 during a REINDEX.  Compared > to CREATE INDEX, a REINDEX is a bit wilder as it would work on all the > indexes for all the partitions, providing this information makes > sense. > > Agreed that this could be better, but what's now on HEAD is not wrong > either. Thanks for pointing it out, I didn’t notice it. You’re right, this not a bug, but an improvement. Will remove the bits from the documentation as well. > > Still it does not do it because we know that the fields are going to > be overwritten pretty quickly anyway, no?  For now, we could just do > without progress_index_partition_done(), I guess, keeping it to the > incrementation of PROGRESS_CREATEIDX_PARTITIONS_DONE.  There's an > argument that this makes the code slightly easier to follow, with less > wrappers around the progress reporting. The use-case that I thought this would improve is REINDEX CONCURRENT, where data from later stages of the previous partitions would linger for quite a while before it gets to the same stage of the current partition. I don’t think this is of big importance, so I’m ok with making code simpler and leaving it out. > > +intprogress_params[3] = { > +PROGRESS_CREATEIDX_COMMAND, > +PROGRESS_CREATEIDX_PHASE, > +PROGRESS_CREATEIDX_PARTITIONS_TOTAL > +}; > +int64progress_values[3]; > +OidheapId = relid; > > Rather than having new code blocks, let's use a style consistent with > DefineIndex() where we have the pgstat_progress_update_multi_param(), > with a single {} block. Fixed. > Adding the counter increment at the end of the loop in > ReindexMultipleInternal() is a good idea.  It considers both the > concurrent and non-concurrent cases. Another reason to do so is that reindex_relation calls itself recursively, so it'd require some additional mechanism so that it wouldn't increment multiple times per partition. > > +   progress_values[2] = list_length(partitions); > +   pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX, heapId); > > Hmm.  Is setting the relid only once for pg_stat_progress_create_index > the best choice there is?  Could it be better to report the partition > OID instead? Technically, we could do this, but it looks like no other commands do it and currently there’s no API to do it without erasing the rest of progress information. >  Let's remember that indexes may have been attached with > names inconsistent with the partitioned table's index.  It is a bit > confusing to stick to the relid all the partitioned table all the > time, for all the indexes of all the partitions reindexed. I agree that it’s a bit confusing especially because documentation gives no hints about it. Judging by documentation, I would expect relid and index_relid to correspond to the same table. However, if we say that this field represents the oid of the relation on which the command was invoked, then I think it does make sense. Edited documentation to say that in the new patch. >  Could it > be better to actually introduce an entirely new field to the progress > table?  What I would look for is more information: > 1) the partitioned table OID on which the REINDEX runs > 2) the partition table being processed > 3) the index OID being processed (old and new for concurrent case). > > The patch sets 1) to the OID of the partitioned table, lacks 2) and > sets 3) each time an index is rebuilt. > — > Michael I like this approach more, but I’m not sure whether adding another field for partition oid is worth it, since we already have index_relid that we can use to join with pg_index to get that. On the other hand, index_relid is missing during regular CREATE INDEX, so this new field could be useful to indicate which table is being indexed in this case. I'm on the fence about this, attached this as a separate patch, if you think it's a good idea. Thank you for the review! --------------omB1BXt0fDFUF0jBGyoIP2Ds Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


19 июля 2024 г., в 04:17, Michael Paquier <michael@paquier.xyz> написал(а):

On Fri, Jul 12, 2024 at 11:07:49PM +0100, Ilya Gladyshev wrote:
While working on CIC for partitioned tables [1], I noticed that REINDEX for
partitioned tables is not tracking keeping progress of partitioned tables,
so I'm creating a separate thread for this fix as suggested.

This limitation is not a bug, because we already document that
partitions_total and partitions_done are 0 during a REINDEX.  Compared
to CREATE INDEX, a REINDEX is a bit wilder as it would work on all the
indexes for all the partitions, providing this information makes
sense.

Agreed that this could be better, but what's now on HEAD is not wrong
either.

Thanks for pointing it out, I didn’t notice it. You’re right, this not a bug, but an improvement. Will remove the bits from the documentation as well.


Still it does not do it because we know that the fields are going to
be overwritten pretty quickly anyway, no?  For now, we could just do
without progress_index_partition_done(), I guess, keeping it to the
incrementation of PROGRESS_CREATEIDX_PARTITIONS_DONE.  There's an
argument that this makes the code slightly easier to follow, with less
wrappers around the progress reporting.

The use-case that I thought this would improve is REINDEX CONCURRENT, where data from later stages of the previous partitions would linger for quite a while before it gets to the same stage of the current partition. I don’t think this is of big importance, so I’m ok with making code simpler and leaving it out.


+ int progress_params[3] = {
+ PROGRESS_CREATEIDX_COMMAND,
+ PROGRESS_CREATEIDX_PHASE,
+ PROGRESS_CREATEIDX_PARTITIONS_TOTAL
+ };
+ int64 progress_values[3];
+ Oid heapId = relid;

Rather than having new code blocks, let's use a style consistent with
DefineIndex() where we have the pgstat_progress_update_multi_param(),
with a single {} block.

Fixed.

Adding the counter increment at the end of the loop in
ReindexMultipleInternal() is a good idea.  It considers both the
concurrent and non-concurrent cases.

Another reason to do so is that reindex_relation calls itself recursively, so it'd require some additional mechanism so that it wouldn't increment multiple times per partition.

+   progress_values[2] = list_length(partitions);
+   pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX, heapId);

Hmm.  Is setting the relid only once for pg_stat_progress_create_index
the best choice there is?  Could it be better to report the partition
OID instead?

Technically, we could do this, but it looks like no other commands do it and currently there’s no API to do it without erasing the rest of progress information.

 Let's remember that indexes may have been attached with
names inconsistent with the partitioned table's index.  It is a bit
confusing to stick to the relid all the partitioned table all the
time, for all the indexes of all the partitions reindexed.

I agree that it’s a bit confusing especially because documentation gives no hints about it. Judging by documentation, I would expect relid and index_relid to correspond to the same table. However, if we say that this field represents the oid of the relation on which the command was invoked, then I think it does make sense. Edited documentation to say that in the new patch.

 Could it
be better to actually introduce an entirely new field to the progress
table?  What I would look for is more information:
1) the partitioned table OID on which the REINDEX runs
2) the partition table being processed
3) the index OID being processed (old and new for concurrent case).

The patch sets 1) to the OID of the partitioned table, lacks 2) and
sets 3) each time an index is rebuilt.

Michael

I like this approach more, but I’m not sure whether adding another field for partition oid is worth it, since we already have index_relid that we can use to join with pg_index to get that. On the other hand, index_relid is missing during regular CREATE INDEX, so this new field could be useful to indicate which table is being indexed in this case. I'm on the fence about this, attached this as a separate patch, if you think it's a good idea.

Thank you for the review!

--------------omB1BXt0fDFUF0jBGyoIP2Ds-- --------------m9V6mLgQziIb4J8OUt7U4bkk Content-Type: text/x-patch; charset=UTF-8; name="v2-0002-partition_relid-column-for-create-index-progress.patch" Content-Disposition: attachment; filename*0="v2-0002-partition_relid-column-for-create-index-progress.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA2MWU4MmI3NzNlMWMyMWRjYjUwYTI5OGJiMjA1NDQ5ZmYxN2M5MGRjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hl dkBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjEgSnVsIDIwMjQgMDE6NDA6MTUgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYyIDIvMl0gcGFydGl0aW9uX3JlbGlkIGNvbHVtbiBmb3IgY3JlYXRl IGluZGV4IHByb2dyZXNzCgotLS0KIGRvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgICAg ICAgICB8ICA5ICsrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsIHwgIDMgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYyAgICAgfCAx OCArKysrKysrKysrKysrLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgg ICAgICB8ICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICB8ICAz ICsrLQogNSBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDAwYmI0MjMyODguLjU5NWYxOWE4ZjggMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL21vbml0b3Jpbmcuc2dtbApAQCAtNjAwNiw2ICs2MDA2LDE1IEBAIEZST00gcGdfc3Rh dF9nZXRfYmFja2VuZF9pZHNldCgpIEFTIGJhY2tlbmRpZDsKICAgICAgICA8bGl0ZXJhbD4w PC9saXRlcmFsPiB3aGVuIHRoZSBpbmRleCBpcyBub3QgcGFydGl0aW9uZWQuCiAgICAgICA8 L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wYXJ0aXRpb25fcmVsaWQ8L3N0cnVjdGZpZWxk PiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBPSUQgb2YgdGhlIHBhcnRpdGlvbiBvbiB3aGljaCB0aGUgaW5kZXggaXMgY3VycmVu dGx5IGJlaW5nIGNyZWF0ZWQuCisgICAgICAgPGxpdGVyYWw+MDwvbGl0ZXJhbD4gd2hlbiB0 aGUgaW5kZXggaXMgbm90IHBhcnRpdGlvbmVkLgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAgPC90YWJsZT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCAxOWNhYmM5YTQ3Li4wMGI3 ZjNiZGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMjgw LDcgKzEyODAsOCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3Byb2dyZXNzX2NyZWF0ZV9pbmRl eCBBUwogICAgICAgICBTLnBhcmFtMTIgQVMgdHVwbGVzX3RvdGFsLAogICAgICAgICBTLnBh cmFtMTMgQVMgdHVwbGVzX2RvbmUsCiAgICAgICAgIFMucGFyYW0xNCBBUyBwYXJ0aXRpb25z X3RvdGFsLAotICAgICAgICBTLnBhcmFtMTUgQVMgcGFydGl0aW9uc19kb25lCisgICAgICAg IFMucGFyYW0xNSBBUyBwYXJ0aXRpb25zX2RvbmUsCisgICAgICAgIFMucGFyYW0xOCBBUyBw YXJ0aXRpb25fcmVsaWQKICAgICBGUk9NIHBnX3N0YXRfZ2V0X3Byb2dyZXNzX2luZm8oJ0NS RUFURSBJTkRFWCcpIEFTIFMKICAgICAgICAgTEVGVCBKT0lOIHBnX2RhdGFiYXNlIEQgT04g Uy5kYXRpZCA9IEQub2lkOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCmluZGV4IGQ0 YzE4MTFmNTAuLjI4NGY3YTkxOWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2luZGV4Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jCkBA IC02MTcsNiArNjE3LDEwIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCQkJ IFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5EX0NSRUFURV9DT05DVVJSRU5UTFkgOgogCQkJ CQkJCQkJIFBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5EX0NSRUFURSk7CiAJfQorCWVsc2UK Kwl7CisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURY X1BBUlRJVElPTl9SRUxJRCwgdGFibGVJZCk7CisJfQogCiAJLyoKIAkgKiBObyBpbmRleCBP SUQgdG8gcmVwb3J0IHlldApAQCAtMzQ4Niw5ICszNDkwLDEwIEBAIFJlaW5kZXhSZWxhdGlv bkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lk LCBjb25zdCBSZWluCiAJCVBST0dSRVNTX0NSRUFURUlEWF9DT01NQU5ELAogCQlQUk9HUkVT U19DUkVBVEVJRFhfUEhBU0UsCiAJCVBST0dSRVNTX0NSRUFURUlEWF9JTkRFWF9PSUQsCi0J CVBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1NfTUVUSE9EX09JRAorCQlQUk9HUkVTU19DUkVB VEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCisJCVBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJ T05fUkVMSUQKIAl9OwotCWludDY0CQlwcm9ncmVzc192YWxzWzRdOworCWludDY0CQlwcm9n cmVzc192YWxzWzVdOwogCiAJLyoKIAkgKiBDcmVhdGUgYSBtZW1vcnkgY29udGV4dCB0aGF0 IHdpbGwgc3Vydml2ZSBmb3JjZWQgdHJhbnNhY3Rpb24gY29tbWl0cyB3ZQpAQCAtMzgzMiw3 ICszODM3LDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5kZXhT dG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3NfdmFs c1sxXSA9IDA7CS8qIGluaXRpYWxpemluZyAqLwogCQlwcm9ncmVzc192YWxzWzJdID0gaWR4 LT5pbmRleElkOwogCQlwcm9ncmVzc192YWxzWzNdID0gaWR4LT5hbUlkOwotCQlwZ3N0YXRf cHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDQsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVz c192YWxzKTsKKwkJcHJvZ3Jlc3NfdmFsc1s0XSA9IHBhcnRpdGlvbiA/IGlkeC0+dGFibGVJ ZCA6IDA7CisJCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVsdGlfcGFyYW0oNSwgcHJvZ3Jl c3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOwogCiAJCS8qIENob29zZSBhIHRlbXBvcmFyeSBy ZWxhdGlvbiBuYW1lIGZvciB0aGUgbmV3IGluZGV4ICovCiAJCWNvbmN1cnJlbnROYW1lID0g Q2hvb3NlUmVsYXRpb25OYW1lKGdldF9yZWxfbmFtZShpZHgtPmluZGV4SWQpLApAQCAtNDAw Nyw3ICs0MDEzLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3VycmVudGx5KGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0IFJlaW4KIAkJcHJvZ3Jlc3Nf dmFsc1sxXSA9IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRDsKIAkJcHJvZ3Jlc3Nf dmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsKIAkJcHJvZ3Jlc3NfdmFsc1szXSA9IG5ld2lk eC0+YW1JZDsKLQkJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg0LCBwcm9n cmVzc19pbmRleCwgcHJvZ3Jlc3NfdmFscyk7CisJCXByb2dyZXNzX3ZhbHNbNF0gPSBwYXJ0 aXRpb24gPyBuZXdpZHgtPnRhYmxlSWQgOiAwOworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRl X211bHRpX3BhcmFtKDUsIHByb2dyZXNzX2luZGV4LCBwcm9ncmVzc192YWxzKTsKIAogCQkv KiBQZXJmb3JtIGNvbmN1cnJlbnQgYnVpbGQgb2YgbmV3IGluZGV4ICovCiAJCWluZGV4X2Nv bmN1cnJlbnRseV9idWlsZChuZXdpZHgtPnRhYmxlSWQsIG5ld2lkeC0+aW5kZXhJZCk7CkBA IC00MDcyLDcgKzQwNzksOCBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCQlwcm9n cmVzc192YWxzWzFdID0gUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFX1ZBTElEQVRFX0lEWFND QU47CiAJCXByb2dyZXNzX3ZhbHNbMl0gPSBuZXdpZHgtPmluZGV4SWQ7CiAJCXByb2dyZXNz X3ZhbHNbM10gPSBuZXdpZHgtPmFtSWQ7Ci0JCXBnc3RhdF9wcm9ncmVzc191cGRhdGVfbXVs dGlfcGFyYW0oNCwgcHJvZ3Jlc3NfaW5kZXgsIHByb2dyZXNzX3ZhbHMpOworCQlwcm9ncmVz c192YWxzWzRdID0gcGFydGl0aW9uID8gbmV3aWR4LT50YWJsZUlkIDogMDsKKwkJcGdzdGF0 X3Byb2dyZXNzX3VwZGF0ZV9tdWx0aV9wYXJhbSg1LCBwcm9ncmVzc19pbmRleCwgcHJvZ3Jl c3NfdmFscyk7CiAKIAkJdmFsaWRhdGVfaW5kZXgobmV3aWR4LT50YWJsZUlkLCBuZXdpZHgt PmluZGV4SWQsIHNuYXBzaG90KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcHJvZ3Jlc3MuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3Byb2dyZXNzLmgKaW5kZXgg NTYxNmQ2NDUyMy4uNmNkOGI0MWE0YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFu ZHMvcHJvZ3Jlc3MuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9wcm9ncmVzcy5oCkBA IC04OSw2ICs4OSw3IEBACiAjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05T X1RPVEFMCQkxMwogI2RlZmluZSBQUk9HUkVTU19DUkVBVEVJRFhfUEFSVElUSU9OU19ET05F CQkxNAogLyogMTUgYW5kIDE2IHJlc2VydmVkIGZvciAiYmxvY2sgbnVtYmVyIiBtZXRyaWNz ICovCisjZGVmaW5lIFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJT05fUkVMSUQJCTE3CiAK IC8qIFBoYXNlcyBvZiBDUkVBVEUgSU5ERVggKGFzIGFkdmVydGlzZWQgdmlhIFBST0dSRVNT X0NSRUFURUlEWF9QSEFTRSkgKi8KICNkZWZpbmUgUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNF X1dBSVRfMQkJCTEKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggNGM3 ODkyNzllNS4uMmJjYjcyYzAxNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5v dXQKQEAgLTIwMjcsNyArMjAyNyw4IEBAIHBnX3N0YXRfcHJvZ3Jlc3NfY3JlYXRlX2luZGV4 fCBTRUxFQ1Qgcy5waWQsCiAgICAgcy5wYXJhbTEyIEFTIHR1cGxlc190b3RhbCwKICAgICBz LnBhcmFtMTMgQVMgdHVwbGVzX2RvbmUsCiAgICAgcy5wYXJhbTE0IEFTIHBhcnRpdGlvbnNf dG90YWwsCi0gICAgcy5wYXJhbTE1IEFTIHBhcnRpdGlvbnNfZG9uZQorICAgIHMucGFyYW0x NSBBUyBwYXJ0aXRpb25zX2RvbmUsCisgICAgcy5wYXJhbTE4IEFTIHBhcnRpdGlvbl9yZWxp ZAogICAgRlJPTSAocGdfc3RhdF9nZXRfcHJvZ3Jlc3NfaW5mbygnQ1JFQVRFIElOREVYJzo6 dGV4dCkgcyhwaWQsIGRhdGlkLCByZWxpZCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywgcGFy YW00LCBwYXJhbTUsIHBhcmFtNiwgcGFyYW03LCBwYXJhbTgsIHBhcmFtOSwgcGFyYW0xMCwg cGFyYW0xMSwgcGFyYW0xMiwgcGFyYW0xMywgcGFyYW0xNCwgcGFyYW0xNSwgcGFyYW0xNiwg cGFyYW0xNywgcGFyYW0xOCwgcGFyYW0xOSwgcGFyYW0yMCkKICAgICAgTEVGVCBKT0lOIHBn X2RhdGFiYXNlIGQgT04gKChzLmRhdGlkID0gZC5vaWQpKSk7CiBwZ19zdGF0X3Byb2dyZXNz X3ZhY3V1bXwgU0VMRUNUIHMucGlkLAotLSAKMi40My4wCgo= --------------m9V6mLgQziIb4J8OUt7U4bkk Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-make-REINDEX-track-partition-progress.patch" Content-Disposition: attachment; filename="v2-0001-make-REINDEX-track-partition-progress.patch" Content-Transfer-Encoding: base64 RnJvbSA1ZjNkNGM1YjQ4NzdiMzFiYjk1Y2FhNjA4NmQxOTM5YWVmNGYzZDEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbHlhIEdsYWR5c2hldiA8aWx5YS52LmdsYWR5c2hl dkBnbWFpbC5jb20+CkRhdGU6IFNhdCwgMjAgSnVsIDIwMjQgMTQ6MDg6MzMgKzAxMDAKU3Vi amVjdDogW1BBVENIIHYyIDEvMl0gbWFrZSBSRUlOREVYIHRyYWNrIHBhcnRpdGlvbiBwcm9n cmVzcwoKLS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICB8ICA4ICsrLS0t LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jICAgICAgfCAxMSArKysrKystLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMgfCA0OCArKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oICAgICAgfCAgMSAr CiA0IGZpbGVzIGNoYW5nZWQsIDU1IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDU1NDE3YTZmYTkuLjAwYmI0MjMyODggMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbApAQCAtNTg4OCw3ICs1ODg4LDcgQEAgRlJPTSBwZ19zdGF0X2dl dF9iYWNrZW5kX2lkc2V0KCkgQVMgYmFja2VuZGlkOwogICAgICAgIDxzdHJ1Y3RmaWVsZD5y ZWxpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAg ICAgIDxwYXJhPgotICAgICAgIE9JRCBvZiB0aGUgdGFibGUgb24gd2hpY2ggdGhlIGluZGV4 IGlzIGJlaW5nIGNyZWF0ZWQuCisgICAgICAgT0lEIG9mIHRoZSB0YWJsZSBvbiB3aGljaCB0 aGUgY29tbWFuZCB3YXMgcnVuLgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93 PgogCkBAIC01OTkyLDggKzU5OTIsNyBAQCBGUk9NIHBnX3N0YXRfZ2V0X2JhY2tlbmRfaWRz ZXQoKSBBUyBiYWNrZW5kaWQ7CiAgICAgICA8cGFyYT4KICAgICAgICBUb3RhbCBudW1iZXIg b2YgcGFydGl0aW9ucyBvbiB3aGljaCB0aGUgaW5kZXggaXMgdG8gYmUgY3JlYXRlZAogICAg ICAgIG9yIGF0dGFjaGVkLCBpbmNsdWRpbmcgYm90aCBkaXJlY3QgYW5kIGluZGlyZWN0IHBh cnRpdGlvbnMuCi0gICAgICAgPGxpdGVyYWw+MDwvbGl0ZXJhbD4gZHVyaW5nIGEgPGxpdGVy YWw+UkVJTkRFWDwvbGl0ZXJhbD4sIG9yIHdoZW4KLSAgICAgICB0aGUgaW5kZXggaXMgbm90 IHBhcnRpdGlvbmVkLgorICAgICAgIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHdoZW4gdGhlIGlu ZGV4IGlzIG5vdCBwYXJ0aXRpb25lZC4KICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8 L3Jvdz4KIApAQCAtNjAwNCw4ICs2MDAzLDcgQEAgRlJPTSBwZ19zdGF0X2dldF9iYWNrZW5k X2lkc2V0KCkgQVMgYmFja2VuZGlkOwogICAgICAgPHBhcmE+CiAgICAgICAgTnVtYmVyIG9m IHBhcnRpdGlvbnMgb24gd2hpY2ggdGhlIGluZGV4IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRl ZAogICAgICAgIG9yIGF0dGFjaGVkLCBpbmNsdWRpbmcgYm90aCBkaXJlY3QgYW5kIGluZGly ZWN0IHBhcnRpdGlvbnMuCi0gICAgICAgPGxpdGVyYWw+MDwvbGl0ZXJhbD4gZHVyaW5nIGEg PGxpdGVyYWw+UkVJTkRFWDwvbGl0ZXJhbD4sIG9yIHdoZW4KLSAgICAgICB0aGUgaW5kZXgg aXMgbm90IHBhcnRpdGlvbmVkLgorICAgICAgIDxsaXRlcmFsPjA8L2xpdGVyYWw+IHdoZW4g dGhlIGluZGV4IGlzIG5vdCBwYXJ0aXRpb25lZC4KICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KICAgICA8L3Rib2R5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9pbmRleC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCmluZGV4IGE4MTli NDE5N2MuLjkwNDg4ZjkxNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKQEAgLTM1NjAsNiArMzU2 MCw3IEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRl eElkLAogCXZvbGF0aWxlIGJvb2wgc2tpcHBlZF9jb25zdHJhaW50ID0gZmFsc2U7CiAJUEdS VXNhZ2UJcnUwOwogCWJvb2wJCXByb2dyZXNzID0gKChwYXJhbXMtPm9wdGlvbnMgJiBSRUlO REVYT1BUX1JFUE9SVF9QUk9HUkVTUykgIT0gMCk7CisJYm9vbAkJcGFydGl0aW9uID0gKChw YXJhbXMtPm9wdGlvbnMgJiBSRUlOREVYT1BUX1BBUlRJVElPTikgIT0gMCk7CiAJYm9vbAkJ c2V0X3RhYmxlc3BhY2UgPSBmYWxzZTsKIAogCXBnX3J1c2FnZV9pbml0KCZydTApOwpAQCAt MzYwNSw4ICszNjA2LDkgQEAgcmVpbmRleF9pbmRleChjb25zdCBSZWluZGV4U3RtdCAqc3Rt dCwgT2lkIGluZGV4SWQsCiAJCQlpbmRleElkCiAJCX07CiAKLQkJcGdzdGF0X3Byb2dyZXNz X3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCi0JCQkJCQkJ CQkgIGhlYXBJZCk7CisJCWlmICghcGFydGl0aW9uKQorCQkJcGdzdGF0X3Byb2dyZXNzX3N0 YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgsCisJCQkJCQkJCQkJ ICBoZWFwSWQpOwogCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFtKDIsIHBy b2dyZXNzX2NvbHMsIHByb2dyZXNzX3ZhbHMpOwogCX0KIApAQCAtMzg0Niw4ICszODQ4LDEx IEBAIHJlaW5kZXhfaW5kZXgoY29uc3QgUmVpbmRleFN0bXQgKnN0bXQsIE9pZCBpbmRleElk LAogCWluZGV4X2Nsb3NlKGlSZWwsIE5vTG9jayk7CiAJdGFibGVfY2xvc2UoaGVhcFJlbGF0 aW9uLCBOb0xvY2spOwogCi0JaWYgKHByb2dyZXNzKQorCWlmIChwcm9ncmVzcyAmJiAhcGFy dGl0aW9uKQorCXsKKwkJLyogcHJvZ3Jlc3MgZm9yIHBhcnRpdGlvbnMgaXMgdHJhY2tlZCBp biB0aGUgY2FsbGVyICovCiAJCXBnc3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOworCX0K IH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYzVhNTZjNzVmNi4u ZDRjMTgxMWY1MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTMyMTcsOSAr MzIxNywxNiBAQCBSZWluZGV4UGFydGl0aW9ucyhjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwg T2lkIHJlbGlkLCBjb25zdCBSZWluZGV4UGFyYW1zICpwYXJhbQogCUxpc3RDZWxsICAgKmxj OwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOwogCVJlaW5kZXhFcnJvcklu Zm8gZXJyaW5mbzsKKwlSZWluZGV4UGFyYW1zIG5ld3BhcmFtczsKKwlPaWQJCQloZWFwSWQg PSByZWxpZDsKIAogCUFzc2VydChSRUxLSU5EX0hBU19QQVJUSVRJT05TKHJlbGtpbmQpKTsK IAorCWlmIChyZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfSU5ERVgpCisJeworCQlo ZWFwSWQgPSBJbmRleEdldFJlbGF0aW9uKHJlbGlkLCB0cnVlKTsKKwl9CisKIAkvKgogCSAq IENoZWNrIGlmIHRoaXMgcnVucyBpbiBhIHRyYW5zYWN0aW9uIGJsb2NrLCB3aXRoIGFuIGVy cm9yIGNhbGxiYWNrIHRvCiAJICogcHJvdmlkZSBtb3JlIGNvbnRleHQgdW5kZXIgd2hpY2gg YSBwcm9ibGVtIGhhcHBlbnMuCkBAIC0zMjc4LDExICszMjg1LDMzIEBAIFJlaW5kZXhQYXJ0 aXRpb25zKGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsaWQsIGNvbnN0IFJlaW5k ZXhQYXJhbXMgKnBhcmFtCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRfY29udGV4dCk7 CiAJfQogCisKKwl7CisJCWludAkJCXByb2dyZXNzX3BhcmFtc1szXSA9IHsKKwkJCVBST0dS RVNTX0NSRUFURUlEWF9DT01NQU5ELAorCQkJUFJPR1JFU1NfQ1JFQVRFSURYX1BIQVNFLAor CQkJUFJPR1JFU1NfQ1JFQVRFSURYX1BBUlRJVElPTlNfVE9UQUwKKwkJfTsKKwkJaW50NjQJ CXByb2dyZXNzX3ZhbHVlc1szXTsKKworCQlwcm9ncmVzc192YWx1ZXNbMF0gPSAocGFyYW1z LT5vcHRpb25zICYgUkVJTkRFWE9QVF9DT05DVVJSRU5UTFkpICE9IDAgPworCQkJUFJPR1JF U1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFkgOgorCQkJUFJPR1JF U1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWDsKKwkJcHJvZ3Jlc3NfdmFsdWVzWzFdID0g MDsKKwkJcHJvZ3Jlc3NfdmFsdWVzWzJdID0gbGlzdF9sZW5ndGgocGFydGl0aW9ucyk7CisJ CXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRF X0lOREVYLCBoZWFwSWQpOworCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX211bHRpX3BhcmFt KDMsIHByb2dyZXNzX3BhcmFtcywgcHJvZ3Jlc3NfdmFsdWVzKTsKKwl9CisKIAkvKgogCSAq IFByb2Nlc3MgZWFjaCBwYXJ0aXRpb24gbGlzdGVkIGluIGEgc2VwYXJhdGUgdHJhbnNhY3Rp b24uICBOb3RlIHRoYXQKIAkgKiB0aGlzIGNvbW1pdHMgYW5kIHRoZW4gc3RhcnRzIGEgbmV3 IHRyYW5zYWN0aW9uIGltbWVkaWF0ZWx5LgogCSAqLwotCVJlaW5kZXhNdWx0aXBsZUludGVy bmFsKHN0bXQsIHBhcnRpdGlvbnMsIHBhcmFtcyk7CisJbmV3cGFyYW1zID0gKnBhcmFtczsK KwluZXdwYXJhbXMub3B0aW9ucyB8PSBSRUlOREVYT1BUX1BBUlRJVElPTjsKKwlSZWluZGV4 TXVsdGlwbGVJbnRlcm5hbChzdG10LCBwYXJ0aXRpb25zLCAmbmV3cGFyYW1zKTsKKworCXBn c3RhdF9wcm9ncmVzc19lbmRfY29tbWFuZCgpOwogCiAJLyoKIAkgKiBDbGVhbiB1cCB3b3Jr aW5nIHN0b3JhZ2UgLS0tIG5vdGUgd2UgbXVzdCBkbyB0aGlzIGFmdGVyCkBAIC0zMzAzLDYg KzMzMzIsNyBAQCBzdGF0aWMgdm9pZAogUmVpbmRleE11bHRpcGxlSW50ZXJuYWwoY29uc3Qg UmVpbmRleFN0bXQgKnN0bXQsIGNvbnN0IExpc3QgKnJlbGlkcywgY29uc3QgUmVpbmRleFBh cmFtcyAqcGFyYW1zKQogewogCUxpc3RDZWxsICAgKmw7CisJYm9vbAkJcGFydGl0aW9ucyA9 ICgocGFyYW1zLT5vcHRpb25zICYgUkVJTkRFWE9QVF9QQVJUSVRJT04pICE9IDApOwogCiAJ UG9wQWN0aXZlU25hcHNob3QoKTsKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAg LTMzOTYsNiArMzQyNiw5IEBAIFJlaW5kZXhNdWx0aXBsZUludGVybmFsKGNvbnN0IFJlaW5k ZXhTdG10ICpzdG10LCBjb25zdCBMaXN0ICpyZWxpZHMsIGNvbnN0IFJlaW5kCiAJCX0KIAog CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpZiAocGFydGl0aW9ucykKKwkJ CXBnc3RhdF9wcm9ncmVzc19pbmNyX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9QQVJUSVRJ T05TX0RPTkUsIDEpOwogCX0KIAogCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0z NDQ4LDYgKzM0ODEsNyBAQCBSZWluZGV4UmVsYXRpb25Db25jdXJyZW50bHkoY29uc3QgUmVp bmRleFN0bXQgKnN0bXQsIE9pZCByZWxhdGlvbk9pZCwgY29uc3QgUmVpbgogCWNoYXIJICAg KnJlbGF0aW9uTmFtZSA9IE5VTEw7CiAJY2hhcgkgICAqcmVsYXRpb25OYW1lc3BhY2UgPSBO VUxMOwogCVBHUlVzYWdlCXJ1MDsKKwlib29sCQlwYXJ0aXRpb24gPSAoKHBhcmFtcy0+b3B0 aW9ucyAmIFJFSU5ERVhPUFRfUEFSVElUSU9OKSAhPSAwKTsKIAljb25zdCBpbnQJcHJvZ3Jl c3NfaW5kZXhbXSA9IHsKIAkJUFJPR1JFU1NfQ1JFQVRFSURYX0NPTU1BTkQsCiAJCVBST0dS RVNTX0NSRUFURUlEWF9QSEFTRSwKQEAgLTM3OTEsNyArMzgyNSw4IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCWlmIChpbmRleFJlbC0+cmRfcmVsLT5yZWxwZXJzaXN0ZW5j ZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQogCQkJZWxvZyhFUlJPUiwgImNhbm5vdCByZWlu ZGV4IGEgdGVtcG9yYXJ5IHRhYmxlIGNvbmN1cnJlbnRseSIpOwogCi0JCXBnc3RhdF9wcm9n cmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBpZHgt PnRhYmxlSWQpOworCQlpZiAoIXBhcnRpdGlvbikKKwkJCXBnc3RhdF9wcm9ncmVzc19zdGFy dF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JFQVRFX0lOREVYLCBpZHgtPnRhYmxlSWQp OwogCiAJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVBVEVJRFhfQ09NTUFORF9S RUlOREVYX0NPTkNVUlJFTlRMWTsKIAkJcHJvZ3Jlc3NfdmFsc1sxXSA9IDA7CS8qIGluaXRp YWxpemluZyAqLwpAQCAtMzk2Niw3ICs0MDAxLDggQEAgUmVpbmRleFJlbGF0aW9uQ29uY3Vy cmVudGx5KGNvbnN0IFJlaW5kZXhTdG10ICpzdG10LCBPaWQgcmVsYXRpb25PaWQsIGNvbnN0 IFJlaW4KIAkJICogVXBkYXRlIHByb2dyZXNzIGZvciB0aGUgaW5kZXggdG8gYnVpbGQsIHdp dGggdGhlIGNvcnJlY3QgcGFyZW50CiAJCSAqIHRhYmxlIGludm9sdmVkLgogCQkgKi8KLQkJ cGdzdGF0X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVf SU5ERVgsIG5ld2lkeC0+dGFibGVJZCk7CisJCWlmICghcGFydGl0aW9uKQorCQkJcGdzdGF0 X3Byb2dyZXNzX3N0YXJ0X2NvbW1hbmQoUFJPR1JFU1NfQ09NTUFORF9DUkVBVEVfSU5ERVgs IG5ld2lkeC0+dGFibGVJZCk7CiAJCXByb2dyZXNzX3ZhbHNbMF0gPSBQUk9HUkVTU19DUkVB VEVJRFhfQ09NTUFORF9SRUlOREVYX0NPTkNVUlJFTlRMWTsKIAkJcHJvZ3Jlc3NfdmFsc1sx XSA9IFBST0dSRVNTX0NSRUFURUlEWF9QSEFTRV9CVUlMRDsKIAkJcHJvZ3Jlc3NfdmFsc1sy XSA9IG5ld2lkeC0+aW5kZXhJZDsKQEAgLTQwMzAsNyArNDA2Niw4IEBAIFJlaW5kZXhSZWxh dGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3RtdCAqc3RtdCwgT2lkIHJlbGF0aW9u T2lkLCBjb25zdCBSZWluCiAJCSAqIFVwZGF0ZSBwcm9ncmVzcyBmb3IgdGhlIGluZGV4IHRv IGJ1aWxkLCB3aXRoIHRoZSBjb3JyZWN0IHBhcmVudAogCQkgKiB0YWJsZSBpbnZvbHZlZC4K IAkJICovCi0JCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1B TkRfQ1JFQVRFX0lOREVYLCBuZXdpZHgtPnRhYmxlSWQpOworCQlpZiAoIXBhcnRpdGlvbikK KwkJCXBnc3RhdF9wcm9ncmVzc19zdGFydF9jb21tYW5kKFBST0dSRVNTX0NPTU1BTkRfQ1JF QVRFX0lOREVYLCBuZXdpZHgtPnRhYmxlSWQpOwogCQlwcm9ncmVzc192YWxzWzBdID0gUFJP R1JFU1NfQ1JFQVRFSURYX0NPTU1BTkRfUkVJTkRFWF9DT05DVVJSRU5UTFk7CiAJCXByb2dy ZXNzX3ZhbHNbMV0gPSBQUk9HUkVTU19DUkVBVEVJRFhfUEhBU0VfVkFMSURBVEVfSURYU0NB TjsKIAkJcHJvZ3Jlc3NfdmFsc1syXSA9IG5ld2lkeC0+aW5kZXhJZDsKQEAgLTQyNjUsNyAr NDMwMiw4IEBAIFJlaW5kZXhSZWxhdGlvbkNvbmN1cnJlbnRseShjb25zdCBSZWluZGV4U3Rt dCAqc3RtdCwgT2lkIHJlbGF0aW9uT2lkLCBjb25zdCBSZWluCiAKIAlNZW1vcnlDb250ZXh0 RGVsZXRlKHByaXZhdGVfY29udGV4dCk7CiAKLQlwZ3N0YXRfcHJvZ3Jlc3NfZW5kX2NvbW1h bmQoKTsKKwlpZiAoIXBhcnRpdGlvbikKKwkJcGdzdGF0X3Byb2dyZXNzX2VuZF9jb21tYW5k KCk7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaAppbmRleCA3ZDQzNGY4 ZTY1Li5jY2JhNjVmYmJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4 LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCkBAIC00Miw2ICs0Miw3IEBA IHR5cGVkZWYgc3RydWN0IFJlaW5kZXhQYXJhbXMKICNkZWZpbmUgUkVJTkRFWE9QVF9SRVBP UlRfUFJPR1JFU1MgMHgwMiAvKiByZXBvcnQgcGdzdGF0IHByb2dyZXNzICovCiAjZGVmaW5l IFJFSU5ERVhPUFRfTUlTU0lOR19PSyAJMHgwNAkvKiBza2lwIG1pc3NpbmcgcmVsYXRpb25z ICovCiAjZGVmaW5lIFJFSU5ERVhPUFRfQ09OQ1VSUkVOVExZCTB4MDgJLyogY29uY3VycmVu dCBtb2RlICovCisjZGVmaW5lIFJFSU5ERVhPUFRfUEFSVElUSU9OIDB4MTAgLyogcmVpbmRl eGluZyBpcyBkb25lIGFzIHBhcnQgb2YgcGFydGl0aW9uZWQgdGFibGUvaW5kZXggcmVpbmRl eCAqLwogCiAvKiBzdGF0ZSBpbmZvIGZvciB2YWxpZGF0ZV9pbmRleCBidWxrZGVsZXRlIGNh bGxiYWNrICovCiB0eXBlZGVmIHN0cnVjdCBWYWxpZGF0ZUluZGV4U3RhdGUKLS0gCjIuNDMu MAoK --------------m9V6mLgQziIb4J8OUt7U4bkk--