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 1w50YA-002nlp-1q for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 12:07:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w50Y8-006X5k-0g for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 12:07:56 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w50Y7-006X5W-2j for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 12:07:56 +0000 Received: from mail-yx1-xb132.google.com ([2607:f8b0:4864:20::b132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w50Y5-00000000sBE-1biW for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 12:07:55 +0000 Received: by mail-yx1-xb132.google.com with SMTP id 956f58d0204a3-64ad79dfb7cso1783106d50.2 for ; Tue, 24 Mar 2026 05:07:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774354072; cv=none; d=google.com; s=arc-20240605; b=hAFMwvswEQ6k/Y4+kVWebm/ad9olthBgjm30RS0L9eqo//9aOlt7KNqNE8U70VTGX/ a3aYGHd0L/WTA4v1EZtVbdgyrvzudTI4TlJPjRRvycWqhP10JpK/5McSkAvDfqLxFrUU FT8YX5ANg0CAOBT2szzP8icY6/S28Am8cUV0AtFnteR5BdvS0zh1JS6ymDK78ziy79Bf dS99kmFWERPkPFlqt7jhpWIhAcQv0XZJcuNm4ufA9xbRWKRQ4vwRECU/JTquNYDoElqv PKngmL7GT221/ACwQyDZ8F4tyrxuovhu1YOsaKIO0lRdd75873tV6qj/6QHzKncJRH6f 2T9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=6KZhAuyOJqMX1rLZPuuh681/mH/lKBYEJ2aY9m1gT/4=; fh=prp/sbfrJaqsmosAJ3lcJsnLFk2RbDLiqanmQJISVLs=; b=WeJ0QDdpkKwCvQ4/uBHy5TQK4dJx9TfRZ98lk2j+v4FECJI+9eIl23igZe6kbQ+NPe PktkVycj0cFpd6JjGgb/wRe/RwV1opdI4hJGU4UEWoEZrn9tJzN7vCXQEK4cfE/Bh2vJ xa206X6y5t22gH1wNHTmJzMMIUII3U0wFZj6EBfn74FabNxo3fj70XucPtPVU7S0Vfpe RkyOkcfa5oZHwRe5djBs7/98HkCpRI8ZEHnLQ0IbyK8CSer9xy0FJ4iXFeSKdt7/240I bjjHeeNpKHVjmeElZXyaAfptONtINO5Wfyzhbr1HwkWvF+EoSBuJT7nVRUnGgqaO6ywj BDVA==; darn=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=1774354072; x=1774958872; darn=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=6KZhAuyOJqMX1rLZPuuh681/mH/lKBYEJ2aY9m1gT/4=; b=IMcogzcaRVcUd1fRcP9auqED2IDgR4ENq7m6UZcP75AzSZMIC0zUKc15cwMwExsvoB cMKPTv6pUWGaJb/K61KRJzBf+IsoJI6OpR+j5hzLZj5YHI2wIoygJjV69z9GbzNthsRm jzlCxTHhlEqdgCRvTZ2acx/CQG6bVmHL9J9WKWIXX9iqQJFc87tI4zNgpl90HgXFHUSl pfynonoQbwRN3fZSNN5W3xcGzdtlVP563HJAFrSaQvR09jXYjchslEUMK9T03hcVulvD RrC4iDBOMpQ2rZijJkV65r0HFR4TnAwRBNJIld4SLlU6KZm6gc7hj0lRq/So3iXoKZne H50g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774354072; x=1774958872; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6KZhAuyOJqMX1rLZPuuh681/mH/lKBYEJ2aY9m1gT/4=; b=CZibwOO9K5C5tCtpWI1VfOzAUsj9p8euVaUqfPFkkI+VvZ25VwHyGwipGA9XJTZQvx Rbt7N4wTJApeVtqh3MqM7KlthUVmXrtt2pNbebH6KI/x5kpbnqmF8zNf96pWptKdi/8U ue+Jh0A6cjbbWJG7EAaHWXjm/7QmiDhbP7/8iruCUAJbU0cd34PqJ/eg1sHUzMggL7YB a8PS1xUUOBCk3SwDU9lAMaY2Sam3DsIBK+/yBwiUu/kf6hrpM4tMft1g/EIohSsA3Jdx 8I2n+XxJWfdRmXuolUxKstSY6tOUTAweAO/rQlAlZNiIBvmASHlhcoqEScG+trAOJ+mh S8mQ== X-Forwarded-Encrypted: i=1; AJvYcCUQPUEgshSL0P5QvTd7ZaxbufzaOKGHpEZ7WT9fI41Qp9HqSU6uUc4gppn3yJuqKx9oIybN8rK9PR/QLael@postgresql.org X-Gm-Message-State: AOJu0YzHpbl82AhQgyMrganH2Wq2hqFzH14KOTTvBPnL4+JuTe+/25UE gHxYjwWY40Ctc6DOImMrhENn9uEqDzKJtolxF7aeERI8C9UzDA13ElwgNhJjho3FeQN6ZStIOU2 /VNRcpeQMkUArLfx31PnyTiT6EEhKFu0= X-Gm-Gg: ATEYQzxvJHCXW0HKi7StXB/YMK01mukJNDjVYTWWf4c0TVY4dvqJ8ST/DvVLREBBZ7z fQbKKedr5pF1d4YreHzwd1ztgR5LsE0BNYAiK27NCDCdgjt31n1WFtuvAprbiSiSiwSPlDsqdxs B9MKVUAW3bmE3FZtXUfOC6F9B8BHsRZMfLR2eEPcpkxzMnagCsfOBcYHF3hnSNXoqippCxX2A9w tHJEcrBMHgdbf713ZykbJW7avwtpsxdvISZOXNSD8qWoZ1bb49hhkBbjjK3STJBZ+craQ5kqNw+ NIjCWXg= X-Received: by 2002:a05:690c:6d84:b0:79a:b30c:5545 with SMTP id 00721157ae682-79ab30c5a0bmr77007937b3.57.1774354071739; Tue, 24 Mar 2026 05:07:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Lakshmi N Date: Tue, 24 Mar 2026 05:07:40 -0700 X-Gm-Features: AaiRm53Vg-W7fyv3E8kkrXk_ObypVuON3oaBTznBsLnRAmwNV2yNBUPBoQsLN1w Message-ID: Subject: Re: log XLogPrefetch stats at end of recovery To: Jakub Wartak Cc: Thomas Munro , Bharath Rupireddy , SATYANARAYANA NARLAPURAM , pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="00000000000027407f064dc4008e" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000027407f064dc4008e Content-Type: multipart/alternative; boundary="00000000000027407e064dc4008c" --00000000000027407e064dc4008c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Mar 24, 2026 at 1:53=E2=80=AFAM Jakub Wartak wrote: > On Tue, Mar 24, 2026 at 9:28=E2=80=AFAM Lakshmi N wrote: > > > > Hi all, > > > > Thank you for your feedback. Please see the attached patch. > > > > On Mon, Mar 23, 2026 at 4:30=E2=80=AFAM Jakub Wartak < > jakub.wartak@enterprisedb.com> wrote: > >> > >> On Sun, Mar 22, 2026 at 1:43=E2=80=AFAM Bharath Rupireddy > >> wrote: > >> > >> Hi, > >> > >> > On Sat, Mar 21, 2026 at 1:16=E2=80=AFAM SATYANARAYANA NARLAPURAM > >> > wrote: > >> > > > >> > > > While investigating a long recovery, I noticed that XLogPrefetch > stats were not logged at the end of recovery. This log message will be > useful to understand how effective XLogPrefetch was during recovery. Addi= ng > a patch to address this. > >> > > > >> > > Applied this patch and validated the log message. This log message > appears to be useful to me, particularly while doing fleet wide analysis. > >> > > > >> > > 2026-03-20 23:33:13.756 PDT [2265441] LOG: XLogPrefetcher stats: > prefetch=3D14, hit=3D6, skip_init=3D5, skip_new=3D28, skip_fpw=3D18, skip= _rep=3D996 > >> > > >> > This looks useful to understand how the prefetch helped during long > recoveries. > >> > > >> > > I am wondering if we can periodically log this in standby mode as > well, not just before promoting? > >> > > >> > Timer-based startup progress messaging allows logging such things > >> > (ereport_startup_progress API). There was an attempt to enable "redo > >> > in progress" for standbys, but that seemed to flood the standby logs > >> > even at the default progress interval of 10 sec. > >> > > >> > Having said that, the prefetcher stats could be added to the existin= g > >> > ereport_startup_progress("redo in progress xxx") message that works > >> > for crash recoveries=E2=80=94however, I don't prefer doing a bunch o= f atomic > >> > reads every progress interval of 10 sec. > >> > >> > Therefore, logging at the end of recovery looks good to me. > >> > >> +1 from me too to only of logging at the end of recovery (so -1 to > logging > >> every now and then). If someone is interested in current state (or > progress > >> over time) I think he can query pg_stat_recovery_prefetch view already= , > even > >> today, right? > >> > >> > I reviewed the patch. I have the following comment: > >> > > >> > + elog(LOG, "XLogPrefetcher stats: prefetch=3D%lu, hit=3D%lu, > >> > skip_init=3D%lu, skip_new=3D%lu, skip_fpw=3D%lu, skip_rep=3D%lu", > >> > > >> > XLogPrefetcher is an internal data structure name, how about "redo > >> > prefetch stats: xxxx" to be consistent with other redo log messages? > >> > >> +1 > > > > > > please find the attached patch addressing this. > > Hi Lakshmi, > > The pg_stat_get_recovery_prefetch view has 3 additional columns, but they > are > showing current situation, maybe this $patch could be enhanced so that it > also > calculates averages for some of them? I mean perhaps not just hit ratio > would be > nice, but also the e.g. __average__ wal distance or average look ahead > (block distance). > I'm not sure maybe please also wait for input from others if they find > it a good idea > or not. > > Also if we are adding such pretty cryptic fields as "skip_fpw" to log, > we would need some > place in documentaiton to explain their meaining probably. > monitoring.sgml already > explains them, so maybe just link to that. I mean if you look what we > have today (below), > they are little less crypting and have different format, not > "skip_fpw=3D123" but more > like "17 removed" so maybe "17 skipped due to FPW". Maybe > > redo done at 0/75C7B290 system usage: CPU: user: 1.02 s, system: 0.51 > s, elapsed: 1.53 s > checkpoint complete: end-of-recovery fast wait: wrote 16289 buffers > (99.4%), wrote 3 SLRU buffers; 0 WAL file(s) added, 17 removed, 0 > recycled; write=3D0.049 s, sync=3D0.191 s, total=3D0.264 s; sync files=3D= 10, > longest=3D0.187 s, average=3D0.020 s; distance=3D287186 kB, estimate=3D28= 7186 > kB; lsn=3D0/75C7B2C8, redo lsn=3D0/75C7B2C8 > > so instead of like: > redo prefetch stats: prefetch=3D%lu, hit=3D%lu, skip_init=3D%lu, > skip_new=3D%lu, skip_fpw=3D%lu, skip_rep=3D%lu" > > something like below ones: > redo prefetch stats: done %lu prefetches, %lu hit, %lu zero-initated, .. > redo prefetch stats: done %lu prefetches, (%d% hit ratio), %lu > zero-initated, .. or something like that > Please find the attached patch with the suggested changes. I referenced [1] to log the message as suggested. 2026-03-24 04:53:15.251 PDT [18898] LOG: redo prefetch stats: prefetched 27 blocks, skipped 22 blocks because they were already in the buffer pool, skipped 17 blocks because they would be zero-initialized, skipped 0 blocks because they didn't exist yet, skipped 28 blocks because a full page image was included in the WAL, skipped 155 blocks because they were already recently prefetched. [1] https://www.postgresql.org/docs/devel/monitoring-stats.html#MONITORING-PG-S= TAT-RECOVERY-PREFETCH Regards, Lakshmi --00000000000027407e064dc4008c Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Tue, Mar 24, = 2026 at 1:53=E2=80=AFAM Jakub Wartak <jakub.wartak@enterprisedb.com> wrote:
On Tue, Mar 24, 2026 at 9:28=E2= =80=AFAM Lakshmi N <lakshmin.jhs@gmail.com> wrote:
>
> Hi all,
>
> Thank you for your feedback. Please see the attached patch.
>
> On Mon, Mar 23, 2026 at 4:30=E2=80=AFAM Jakub Wartak <jakub.wartak@enterpri= sedb.com> wrote:
>>
>> On Sun, Mar 22, 2026 at 1:43=E2=80=AFAM Bharath Rupireddy
>> <bharath.rupireddyforpostgres@gmail.com> wrote:
>>
>> Hi,
>>
>> > On Sat, Mar 21, 2026 at 1:16=E2=80=AFAM SATYANARAYANA NARLAPU= RAM
>> > <satyanarlapuram@gmail.com> wrote:
>> > >
>> > > > While investigating a long recovery, I noticed that= XLogPrefetch stats were not logged at the end of recovery. This log messag= e will be useful to understand how effective XLogPrefetch was during recove= ry. Adding a patch to address this.
>> > >
>> > > Applied this patch and validated the log message. This l= og message appears to be useful to me, particularly while doing fleet wide = analysis.
>> > >
>> > > 2026-03-20 23:33:13.756 PDT [2265441] LOG:=C2=A0 XLogPre= fetcher stats: prefetch=3D14, hit=3D6, skip_init=3D5, skip_new=3D28, skip_f= pw=3D18, skip_rep=3D996
>> >
>> > This looks useful to understand how the prefetch helped durin= g long recoveries.
>> >
>> > > I am wondering if we can periodically log this in standb= y mode as well, not just before promoting?
>> >
>> > Timer-based startup progress messaging allows logging such th= ings
>> > (ereport_startup_progress API). There was an attempt to enabl= e "redo
>> > in progress" for standbys, but that seemed to flood the = standby logs
>> > even at the default progress interval of 10 sec.
>> >
>> > Having said that, the prefetcher stats could be added to the = existing
>> > ereport_startup_progress("redo in progress xxx") me= ssage that works
>> > for crash recoveries=E2=80=94however, I don't prefer doin= g a bunch of atomic
>> > reads every progress interval of 10 sec.
>>
>> > Therefore, logging at the end of recovery looks good to me. >>
>> +1 from me too to only of logging at the end of recovery (so -1 to= logging
>> every now and then). If someone is interested in current state (or= progress
>> over time) I think he can query pg_stat_recovery_prefetch view alr= eady, even
>> today, right?
>>
>> > I reviewed the patch. I have the following comment:
>> >
>> > + elog(LOG, "XLogPrefetcher stats: prefetch=3D%lu, hit= =3D%lu,
>> > skip_init=3D%lu, skip_new=3D%lu, skip_fpw=3D%lu, skip_rep=3D%= lu",
>> >
>> > XLogPrefetcher is an internal data structure name, how about = "redo
>> > prefetch stats: xxxx" to be consistent with other redo l= og messages?
>>
>> +1
>
>
> please find the attached patch addressing this.

Hi Lakshmi,

The pg_stat_get_recovery_prefetch view has 3 additional columns, but they a= re
showing current situation, maybe this $patch could be enhanced so that it a= lso
calculates averages for some of them? I mean perhaps not just hit ratio wou= ld be
nice, but also the e.g. __average__ wal distance or average look ahead
(block distance).
I'm not sure maybe please also wait for input from others if they find<= br> it a good idea
or not.

Also if we are adding such pretty cryptic fields as "skip_fpw" to= log,
we would need some
place in documentaiton to explain their meaining probably.
monitoring.sgml already
explains them, so maybe just link to that. I mean if you look what we
have today (below),
they are little less crypting and have different format, not
"skip_fpw=3D123" but more
like "17 removed" so maybe "17 skipped due to FPW". May= be

redo done at 0/75C7B290 system usage: CPU: user: 1.02 s, system: 0.51
s, elapsed: 1.53 s
checkpoint complete: end-of-recovery fast wait: wrote 16289 buffers
(99.4%), wrote 3 SLRU buffers; 0 WAL file(s) added, 17 removed, 0
recycled; write=3D0.049 s, sync=3D0.191 s, total=3D0.264 s; sync files=3D10= ,
longest=3D0.187 s, average=3D0.020 s; distance=3D287186 kB, estimate=3D2871= 86
kB; lsn=3D0/75C7B2C8, redo lsn=3D0/75C7B2C8

so instead of like:
redo prefetch stats: prefetch=3D%lu, hit=3D%lu, skip_init=3D%lu,
skip_new=3D%lu, skip_fpw=3D%lu, skip_rep=3D%lu"

something like below ones:
redo prefetch stats: done %lu prefetches, %lu hit, %lu zero-initated, .. redo prefetch stats: done %lu prefetches, (%d% hit ratio), %lu
zero-initated, .. or something like that

Please find the attached patch with the suggested changes. I referenced [= 1] to log the message as suggested.

2026-03-24 04:= 53:15.251 PDT [18898] LOG: =C2=A0redo prefetch stats: prefetched 27 blocks,= skipped 22 blocks because they were already in the buffer pool, skipped 17= blocks because they would be zero-initialized, skipped 0 blocks because th= ey didn't exist yet, skipped 28 blocks because a full page image was in= cluded in the WAL, skipped 155 blocks because they were already recently pr= efetched.=C2=A0


Regards,
L= akshmi=C2=A0
--00000000000027407e064dc4008c-- --00000000000027407f064dc4008e Content-Type: application/octet-stream; name="0001-log-prefetch-stats-at-end-of-recovery.patch" Content-Disposition: attachment; filename="0001-log-prefetch-stats-at-end-of-recovery.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn4kkdn80 RnJvbSA2YzI5YWM2YWMyOTcwMTRmY2ViMmUwMmJkMTVjNTNlZTQ2M2FjMjgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYWtzaG1pIE4gPGxha3NobWluLmpoc0BnbWFpbC5jb20+CkRh dGU6IFR1ZSwgMjQgTWFyIDIwMjYgMDE6MjM6MjQgLTA3MDAKU3ViamVjdDogW1BBVENIXSB4bG9n cHJlZmV0Y2hlcjogbG9nIHByZWZldGNoIHN0YXRpc3RpY3MgYXQgZW5kIG9mIHJlY292ZXJ5CgpB ZGQgWExvZ1ByZWZldGNoTG9nU3RhdHMoKSwgd2hpY2ggZW1pdHMgYSBMT0cgbWVzc2FnZSBzdW1t YXJpc2luZyB0aGUKcHJlZmV0Y2ggY291bnRlcnMgKHByZWZldGNoLCBoaXQsIHNraXBfaW5pdCwg c2tpcF9uZXcsIHNraXBfZnB3LApza2lwX3JlcCkgYWNjdW11bGF0ZWQgZHVyaW5nIHJlY292ZXJ5 LiBUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20KUGVyZm9ybVdhbFJlY292ZXJ5KCkgaW1tZWRp YXRlbHkgYWZ0ZXIgdGhlICJyZWRvIGRvbmUiIG1lc3NhZ2UsIGdpdmluZwpvcGVyYXRvcnMgdmlz aWJpbGl0eSBpbnRvIGhvdyBlZmZlY3RpdmUgV0FMIHByZWZldGNoaW5nIHdhcyBvdmVyIHRoZQpj b3Vyc2Ugb2YgdGhlIHJlY292ZXJ5IHNlc3Npb24uCgpOby1vcCB3aGVuIHJlY292ZXJ5X3ByZWZl dGNoID0gb2ZmLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dwcmVmZXRjaGVy LmMgfCAyNSArKysrKysrKysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dyZWNvdmVyeS5jICAgfCAgMiArKwogc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dwcmVmZXRj aGVyLmggICAgICAgICB8ICAyICsrCiAzIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYwppbmRleCBjMjM1 ZWNhN2M1MS4uNzZiZTBjYzFiY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFu c2FtL3hsb2dwcmVmZXRjaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxv Z3ByZWZldGNoZXIuYwpAQCAtMzM1LDYgKzMzNSwzMSBAQCBYTG9nUHJlZmV0Y2hTaG1lbUluaXQo dm9pZCkKIAl9CiB9CiAKKy8qCisgKiBMb2cgYSBzdW1tYXJ5IG9mIHRoZSBYTG9nUHJlZmV0Y2hl ciBzdGF0cy4gSW50ZW5kZWQgdG8gYmUgY2FsbGVkCisgKiBhdCB0aGUgZW5kIG9mIHJlY292ZXJ5 IG9yIHdoZW4gYSBzdGFuZGJ5IGlzIHByb21vdGVkLgorICovCit2b2lkCitYTG9nUHJlZmV0Y2hM b2dTdGF0cyh2b2lkKQoreworCWlmIChyZWNvdmVyeV9wcmVmZXRjaCA9PSBSRUNPVkVSWV9QUkVG RVRDSF9PRkYpCisJCXJldHVybjsKKworCWVsb2coTE9HLAorCQkicmVkbyBwcmVmZXRjaCBzdGF0 czogcHJlZmV0Y2hlZCAlbHUgYmxvY2tzLCAiCisJCSJza2lwcGVkICVsdSBibG9ja3MgYmVjYXVz ZSB0aGV5IHdlcmUgYWxyZWFkeSBpbiB0aGUgYnVmZmVyIHBvb2wsICIKKwkJInNraXBwZWQgJWx1 IGJsb2NrcyBiZWNhdXNlIHRoZXkgd291bGQgYmUgemVyby1pbml0aWFsaXplZCwgIgorCQkic2tp cHBlZCAlbHUgYmxvY2tzIGJlY2F1c2UgdGhleSBkaWRuJ3QgZXhpc3QgeWV0LCAiCisJCSJza2lw cGVkICVsdSBibG9ja3MgYmVjYXVzZSBhIGZ1bGwgcGFnZSBpbWFnZSB3YXMgaW5jbHVkZWQgaW4g dGhlIFdBTCwgIgorCQkic2tpcHBlZCAlbHUgYmxvY2tzIGJlY2F1c2UgdGhleSB3ZXJlIGFscmVh ZHkgcmVjZW50bHkgcHJlZmV0Y2hlZC4iLAorCQlwZ19hdG9taWNfcmVhZF91NjQoJlNoYXJlZFN0 YXRzLT5wcmVmZXRjaCksCisJCXBnX2F0b21pY19yZWFkX3U2NCgmU2hhcmVkU3RhdHMtPmhpdCks CisJCXBnX2F0b21pY19yZWFkX3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfaW5pdCksCisJCXBnX2F0 b21pY19yZWFkX3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfbmV3KSwKKwkJcGdfYXRvbWljX3JlYWRf dTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9mcHcpLAorCQlwZ19hdG9taWNfcmVhZF91NjQoJlNoYXJl ZFN0YXRzLT5za2lwX3JlcCkpOworfQorCiAvKgogICogQ2FsbGVkIHdoZW4gYW55IEdVQyBpcyBj aGFuZ2VkIHRoYXQgYWZmZWN0cyBwcmVmZXRjaGluZy4KICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9ncmVjb3ZlcnkuYwppbmRleCA2ZDJjNGE4NmI5Ni4uNzQyY2I5MGRhOWIgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCkBAIC0xODQ1LDYgKzE4 NDUsOCBAQCBQZXJmb3JtV2FsUmVjb3Zlcnkodm9pZCkKIAkJCQllcnJtc2coInJlZG8gZG9uZSBh dCAlWC8lMDhYIHN5c3RlbSB1c2FnZTogJXMiLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoeGxv Z3JlYWRlci0+UmVhZFJlY1B0ciksCiAJCQkJCSAgIHBnX3J1c2FnZV9zaG93KCZydTApKSk7CisJ CQorCQlYTG9nUHJlZmV0Y2hMb2dTdGF0cygpOwogCQl4dGltZSA9IEdldExhdGVzdFhUaW1lKCk7 CiAJCWlmICh4dGltZSkKIAkJCWVyZXBvcnQoTE9HLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dwcmVmZXRjaGVyLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZldGNo ZXIuaAppbmRleCA3ZWM0MGM0Yjc4Yi4uYTg2MjkyNGM4OTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9n cHJlZmV0Y2hlci5oCkBAIC0zNyw2ICszNyw3IEBAIGV4dGVybiB2b2lkIFhMb2dQcmVmZXRjaFJl Y29uZmlndXJlKHZvaWQpOwogZXh0ZXJuIHNpemVfdCBYTG9nUHJlZmV0Y2hTaG1lbVNpemUodm9p ZCk7CiBleHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hTaG1lbUluaXQodm9pZCk7CgorZXh0ZXJuIHZv aWQgWExvZ1ByZWZldGNoTG9nU3RhdHModm9pZCk7CiBleHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hS ZXNldFN0YXRzKHZvaWQpOwogCiBleHRlcm4gWExvZ1ByZWZldGNoZXIgKlhMb2dQcmVmZXRjaGVy QWxsb2NhdGUoWExvZ1JlYWRlclN0YXRlICpyZWFkZXIpOwpAQCAtNTIsNCArNTMsNSBAQCBleHRl cm4gWExvZ1JlY29yZCAqWExvZ1ByZWZldGNoZXJSZWFkUmVjb3JkKFhMb2dQcmVmZXRjaGVyICpw cmVmZXRjaGVyLAogCiBleHRlcm4gdm9pZCBYTG9nUHJlZmV0Y2hlckNvbXB1dGVTdGF0cyhYTG9n UHJlZmV0Y2hlciAqcHJlZmV0Y2hlcik7CiAKKwogI2VuZGlmCi0tIAoyLjQzLjAKCg== --00000000000027407f064dc4008e--