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 1tH83n-003jj5-Oa for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Nov 2024 20:57:56 +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 1tH83k-00AoOI-Op for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Nov 2024 20:57:53 +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 ) id 1tH83k-00AoO9-5y for pgsql-hackers@lists.postgresql.org; Fri, 29 Nov 2024 20:57:53 +0000 Received: from mail-qk1-x72b.google.com ([2607:f8b0:4864:20::72b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tH83i-000Dl6-Pp for pgsql-hackers@lists.postgresql.org; Fri, 29 Nov 2024 20:57:52 +0000 Received: by mail-qk1-x72b.google.com with SMTP id af79cd13be357-7b66d08d529so201691885a.1 for ; Fri, 29 Nov 2024 12:57:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732913869; x=1733518669; 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=m3hpGgMxSjUF9BX1kg9MgyR6M2NlM3mNo4NjJl6r1wY=; b=GoMUUXIkqXm2DJIH/1CDnbgv/JA+PITgXXwJWrVikp0DdpMUWCZBYwMIHfqof0VVib QN1p2eRBFKbaKbkmryXvEwYlGIZ2Xl82Tty7QjZwUGOffAPDR7QWHAu86ON9cikGfa4B 0zmzkQPnJLa4thGVB0bzgaun1/dZ+yGIKaJ5eriRut82WdzRnDzQ+PHylwmALnKF7oyn t3nB/l10qcIbkk3JOVPa0L87f+RrGhHDZ6WyJ6tEGtt9D4Zm4eXGnY1HO6TuWiOrLm4P Sub1fGJm7/Cqer6NmUoKHgK6ixAxrzirPro+likYzWPBXbH2u5g8yuxvXMU/Rfvgu/f9 iKzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732913869; x=1733518669; 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=m3hpGgMxSjUF9BX1kg9MgyR6M2NlM3mNo4NjJl6r1wY=; b=KFkGaBqfj30xCLPKW7d6k4rV4uoHF+NTO0cgqwtmWYebhnCGduf/BXk7W3VWOZfP07 EZX7csjZYNAXxTa+ogJ7cNYy4m5tDIaKywp6aUQ3s9L0+J9ZLH2/ljnvMXzp4IF9/Bhk T+lzkiPKyu5ahnGS/F0Kz9bIAqtrfMPEK0AyGEQDKcAH1FxaoWS6h4ebUCpMLad6NYyM Tm/1mxb1OgX62bI3OApQs7y2j4/hZUyXWZ4dmzt5xmh/muIdKaQ1TVQ7qHOJvPsrOMkZ YZwN/R5Rsim8Nuv4/bGujdoDylGoD8tL9VC2GSlQoDpysFK1yFPX76HEYRCkwlv5uoLz NJXQ== X-Forwarded-Encrypted: i=1; AJvYcCUltqV/AnHIyVRukyWOufsDnBRP/gJRizdJ19tkP/x/adaFb9xodQy4ywrEVJf2ulJA1+Em5paHWLY7Smr+@lists.postgresql.org X-Gm-Message-State: AOJu0YypFm+JJLCgNc+rTO5l2cUlCjXlqQrWGLTytaLxBtL/0SHn/nYB q7AhZpMytpBaczgrD3krjVIlgM1G9om0/+rStIBBC/4TUvDL8Zc1lcBAo//5YM9DsK999TijNc0 sjt5KQM1fpcYgCWgVNUPAtBYql/M= X-Gm-Gg: ASbGncvDiB78b2Yc7PDCm1wh8V/7BMOa6DjYWZvHmhYG9Ugpxw1BDo7ajqkmKK8uWss Foz23GrlrShMA0QgVE1bA7HqTMqoU69qLzj7r1gCHDoVCUA== X-Google-Smtp-Source: AGHT+IF6v+Xzb+Df6Wa5YIrNxZrt1awg9kdOpsrXgNcmsNuxjUi41Y5PMDGAZ1OhKVUkSfq4hSoQXedk9w7NT4xPYgE= X-Received: by 2002:a05:620a:1729:b0:7ac:e8bf:894a with SMTP id af79cd13be357-7b683a2cff9mr1482446785a.20.1732913869646; Fri, 29 Nov 2024 12:57:49 -0800 (PST) MIME-Version: 1.0 References: <94d53a41-d1f5-4fd1-8d1e-ff36ac569848@app.fastmail.com> <4DA5A159-39FD-47DB-95E5-A4F65BC5782A@yandex-team.ru> <53e96b5a-cc77-4afa-8103-79c69afef1a6@uni-muenster.de> <748a7ec0-9126-4f27-a2a7-e3e449d6fdd7@uni-muenster.de> <8a240667-de9e-455b-b3e2-62f34ec80154@uni-muenster.de> <3f1b817f-6e7a-4e01-bfc5-50ea3724225e@uni-muenster.de> In-Reply-To: <3f1b817f-6e7a-4e01-bfc5-50ea3724225e@uni-muenster.de> From: Kirill Gavrilov Date: Fri, 29 Nov 2024 23:57:38 +0300 Message-ID: Subject: Re: Truncate logs by max_log_size To: Jim Jones Cc: Kirill Reshke , "Andrey M. Borodin" , Euler Taveira , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000a0e1de06281373d5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a0e1de06281373d5 Content-Type: multipart/alternative; boundary="000000000000a0e1dd06281373d3" --000000000000a0e1dd06281373d3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Nov 29, 2024 at 10:12=E2=80=AFPM Jim Jones wrote: > > > On 29.11.24 12:05, Kirill Gavrilov wrote: > > Setting max_log_size to 0 already disables truncation. > > I changed guc units to bytes, just to make it more human-friendly. > > Did some refactoring and fixed all warnings. Set default value in > > postgresql.conf. > > Nice. The patch applies cleanly and the warnings are gone. > > A few other things: > > IMHO the documentation can be a bit clearer. It says to input the values > in bytes, but the default value is in megabytes. > > + If greater than zero, each query logged is truncated to this > many bytes. > + Zero disables the setting. > + Default value is 5MB. > > Perhaps something like "If this value is specified without units, it is > taken as bytes." (see wal_keep_size) > Added to documentation. I hope it's clear now. > > And a pedantic note: This hint suggests that you can use TB as unit .. > > postgres=3D# set max_log_size =3D '1foo'; > ERROR: invalid value for parameter "max_log_size": "1foo" > HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB"= . > > .. but it can never be used, as it exceeds the integer range: > > postgres=3D# SET max_log_size =3D '1TB'; > ERROR: invalid value for parameter "max_log_size": "1TB" > HINT: Value exceeds integer range. > > Thanks > > -- > Jim > Same thing applies to log_parameter_max_length, for example. postgres=3D# set log_parameter_max_length =3D '1foo'; ERROR: invalid value for parameter "log_parameter_max_length": "1foo" HINT: Valid units for this parameter are "B", "kB", "MB", "GB", and "TB". postgres=3D# set log_parameter_max_length =3D '1TB'; ERROR: invalid value for parameter "log_parameter_max_length": "1TB" HINT: Value exceeds integer range. I think we can leave it as is. --000000000000a0e1dd06281373d3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Nov 29, 2024 at 10:12=E2=80=AFPM = Jim Jones <jim.jones@uni-mu= enster.de> wrote:


On 29.11.24 12:05, Kirill Gavrilov wrote:
> =C2=A0 Setting max_log_size to 0 already disables truncation.
> =C2=A0 I changed guc units to bytes, just to make it more human-friend= ly.
> Did some refactoring and fixed all warnings. Set default value in
> postgresql.conf.

Nice. The patch applies cleanly and the warnings are gone.

A few other things:

IMHO the documentation can be a bit clearer. It says to input the values in bytes, but the default value is in megabytes.

+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 If greater than zero, each quer= y logged is truncated to this
many bytes.
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Zero disables the setting.
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Default value is 5MB.

Perhaps something like "If this value is specified without units, it i= s
taken as bytes." (see wal_keep_size)

Added to documentation. I hope it's clear now.
=C2=A0

And a pedantic note: This hint suggests that you can use TB as unit ..

postgres=3D# set max_log_size =3D '1foo';
ERROR:=C2=A0 invalid value for parameter "max_log_size": "1f= oo"
HINT:=C2=A0 Valid units for this parameter are "B", "kB"= ;, "MB", "GB", and "TB".

.. but it can never be used, as it exceeds the integer range:

postgres=3D# SET max_log_size =3D '1TB';
ERROR:=C2=A0 invalid value for parameter "max_log_size": "1T= B"
HINT:=C2=A0 Value exceeds integer range.

Thanks

--
Jim

Same thing applies to log_parameter= _max_length, for example.

postgres=3D# set log_paramete= r_max_length =3D '1foo';
ERROR: =C2=A0invalid value for paramete= r "log_parameter_max_length": "1foo"
HINT: =C2=A0Val= id units for this parameter are "B", "kB", "MB&quo= t;, "GB", and "TB".
postgres=3D# set log_parameter_m= ax_length =3D '1TB';
ERROR: =C2=A0invalid value for parameter &q= uot;log_parameter_max_length": "1TB"
HINT: =C2=A0Val= ue exceeds integer range.=C2=A0

I think we can lea= ve it as is.
--000000000000a0e1dd06281373d3-- --000000000000a0e1de06281373d5 Content-Type: application/octet-stream; name="V5-0001-parameter-max_log_size-to-truncate-logs.patch" Content-Disposition: attachment; filename="V5-0001-parameter-max_log_size-to-truncate-logs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4380fck0 RnJvbSAxNWFhOTRlMGNmMjA2NmUzMTM1ZTY3MzlkNmZjOTU3NTEwNTY4YTU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkaXBoYW50eG0gPGRpcGhhbnR4bUB5YW5kZXgtdGVhbS5ydT4K RGF0ZTogRnJpLCAyOSBOb3YgMjAyNCAyMzo1MjoxMSArMDMwMApTdWJqZWN0OiBbUEFUQ0hdIHBh cmFtZXRlciBtYXhfbG9nX3NpemUgdG8gdHJ1bmNhdGUgbG9ncwoKVGhlcmUgaXMgbm8gbmVlZCB0 byBsb2cgdGhlIGVudGlyZSBxdWVyeSwgYmVjYXVzZSBpdCBtYXkgYmUgbGFyZ2UgYW5kIHRha2Ug bG90cyBvZiBzcGFjZSBvbiBkaXNrLiBQYXJhbWV0ZXIgbWF4X2xvZ19zaXplIHNldCB0aGUgbWF4 aW11bSBsZW5ndGggZm9yIGxvZ2dlZCBxdWVyeS4gRXZlcnl0aGluZyBiZXlvbmQgdGhhdCBsZW5n dGggaXMgdHJ1bmNhdGVkLiBWYWx1ZSAwIGRpc2FibGVzIHRoZSBwYXJhbWV0ZXIuCi0tLQogZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgMTYgKysrKysrKwog c3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysr LQogc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxvZy5jICAgICAgICAgICAgICAgIHwgNDcgKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAg ICAgICAgIHwgMTIgKysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZSB8ICAyICsKIHNyYy9iaW4vcGdfY3RsL3QvMDA0X2xvZ3JvdGF0ZS5wbCAgICAgICAg ICAgICB8IDE1ICsrKysrKwogc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oICAgICAgICAgICAgICAg ICAgICAgIHwgIDQgKysKIDcgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDc2YWI3MmRiOTYuLjgzYjFiNDBiMGYgMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwKQEAgLTc5MTMsNiArNzkxMywyMiBAQCBsb2dfbGluZV9wcmVmaXggPSAnJW0gWyVwXSAlcSV1 QCVkLyVhICcKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAg IDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtbG9nLXNpemUiIHhyZWZsYWJlbD0ibWF4X2xvZ19z aXplIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9sb2dfc2l6ZTwvdmFybmFtZT4gKDx0eXBl PmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFy bmFtZT5tYXhfbG9nX3NpemU8L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmlt YXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIGdyZWF0ZXIgdGhhbiB6ZXJvLCBlYWNoIHF1ZXJ5 IGxvZ2dlZCBpcyB0cnVuY2F0ZWQgdG8gdGhpcyBtYW55IGJ5dGVzLgorICAgICAgICBaZXJvIGRp c2FibGVzIHRoZSBzZXR0aW5nLiAKKyAgICAgICAgSWYgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQg d2l0aG91dCB1bml0cywgaXQgaXMgdGFrZW4gYXMgYnl0ZXMuCisgICAgICAgIFRoaXMgZmVhdHVy ZSBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0 ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwv c2VjdDI+CiAgICAgIDxzZWN0MiBpZD0icnVudGltZS1jb25maWctbG9nZ2luZy1jc3Zsb2ciPgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jCmluZGV4IDRiOTg1YmQwNTYuLjAzM2RlNTg2MmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKQEAgLTcwLDYgKzcwLDcgQEAKICNpbmNsdWRlICJ0Y29wL3BxdWVyeS5oIgogI2luY2x1ZGUg InRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKKyNpbmNsdWRlICJ1 dGlscy9lbG9nLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRp bHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0x MDI5LDExICsxMDMwLDIyIEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZykKIAlib29sCQl3YXNfbG9nZ2VkID0gZmFsc2U7CiAJYm9vbAkJdXNlX2ltcGxpY2l0X2Js b2NrOwogCWNoYXIJCW1zZWNfc3RyWzMyXTsKKwljaGFyKiAJCXRydW5jYXRlZF9xdWVyeSA9IE5V TEw7CisJY29uc3QgY2hhcioJcXVlcnlfbG9nOwogCiAJLyoKIAkgKiBSZXBvcnQgcXVlcnkgdG8g dmFyaW91cyBtb25pdG9yaW5nIGZhY2lsaXRpZXMuCiAJICovCiAJZGVidWdfcXVlcnlfc3RyaW5n ID0gcXVlcnlfc3RyaW5nOworCWlmIChuZWVkX3RydW5jYXRlX3F1ZXJ5X2xvZyhxdWVyeV9zdHJp bmcpKQorCXsKKwkJdHJ1bmNhdGVkX3F1ZXJ5ID0gdHJ1bmNhdGVfcXVlcnlfbG9nKHF1ZXJ5X3N0 cmluZyk7CisJCXF1ZXJ5X2xvZyA9IHRydW5jYXRlZF9xdWVyeTsKKwl9CisJZWxzZQorCXsKKwkJ cXVlcnlfbG9nID0gcXVlcnlfc3RyaW5nOworCX0KIAogCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHko U1RBVEVfUlVOTklORywgcXVlcnlfc3RyaW5nKTsKIApAQCAtMTA3OCw3ICsxMDkwLDcgQEAgZXhl Y19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCWlmIChjaGVja19sb2df c3RhdGVtZW50KHBhcnNldHJlZV9saXN0KSkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJt c2coInN0YXRlbWVudDogJXMiLCBxdWVyeV9zdHJpbmcpLAorCQkJCShlcnJtc2coInN0YXRlbWVu dDogJXMiLCBxdWVyeV9sb2cpLAogCQkJCSBlcnJoaWRlc3RtdCh0cnVlKSwKIAkJCQkgZXJyZGV0 YWlsX2V4ZWN1dGUocGFyc2V0cmVlX2xpc3QpKSk7CiAJCXdhc19sb2dnZWQgPSB0cnVlOwpAQCAt MTM3Nyw3ICsxMzg5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3Ry aW5nKQogCQljYXNlIDI6CiAJCQllcmVwb3J0KExPRywKIAkJCQkJKGVycm1zZygiZHVyYXRpb246 ICVzIG1zICBzdGF0ZW1lbnQ6ICVzIiwKLQkJCQkJCQltc2VjX3N0ciwgcXVlcnlfc3RyaW5nKSwK KwkJCQkJCQltc2VjX3N0ciwgcXVlcnlfbG9nKSwKIAkJCQkJIGVycmhpZGVzdG10KHRydWUpLAog CQkJCQkgZXJyZGV0YWlsX2V4ZWN1dGUocGFyc2V0cmVlX2xpc3QpKSk7CiAJCQlicmVhazsKQEAg LTEzODgsNiArMTQwMCw4IEBAIGV4ZWNfc2ltcGxlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZykKIAogCVRSQUNFX1BPU1RHUkVTUUxfUVVFUllfRE9ORShxdWVyeV9zdHJpbmcpOwogCisJ aWYgKHRydW5jYXRlZF9xdWVyeSkKKwkJcGZyZWUodHJ1bmNhdGVkX3F1ZXJ5KTsKIAlkZWJ1Z19x dWVyeV9zdHJpbmcgPSBOVUxMOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9l cnJvci9lbG9nLmMgYi9zcmMvYmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKaW5kZXggMjg5MDU5 NDM1YS4uOGExMDcxNjc3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3IvZWxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYwpAQCAtMTExLDYgKzExMSw3 IEBAIGludAkJCUxvZ19kZXN0aW5hdGlvbiA9IExPR19ERVNUSU5BVElPTl9TVERFUlI7CiBjaGFy CSAgICpMb2dfZGVzdGluYXRpb25fc3RyaW5nID0gTlVMTDsKIGJvb2wJCXN5c2xvZ19zZXF1ZW5j ZV9udW1iZXJzID0gdHJ1ZTsKIGJvb2wJCXN5c2xvZ19zcGxpdF9tZXNzYWdlcyA9IHRydWU7Citp bnQJCQltYXhfbG9nX3NpemUgPSAwOwogCiAvKiBQcm9jZXNzZWQgZm9ybSBvZiBiYWNrdHJhY2Vf ZnVuY3Rpb25zIEdVQyAqLwogc3RhdGljIGNoYXIgKmJhY2t0cmFjZV9mdW5jdGlvbl9saXN0OwpA QCAtMTY4OCwxMSArMTY4OSwxOCBAQCBFbWl0RXJyb3JSZXBvcnQodm9pZCkKIHsKIAlFcnJvckRh dGEgICplZGF0YSA9ICZlcnJvcmRhdGFbZXJyb3JkYXRhX3N0YWNrX2RlcHRoXTsKIAlNZW1vcnlD b250ZXh0IG9sZGNvbnRleHQ7CisJY2hhciogdHJ1bmNhdGVkX3F1ZXJ5ID0gTlVMTDsKIAogCXJl Y3Vyc2lvbl9kZXB0aCsrOwogCUNIRUNLX1NUQUNLX0RFUFRIKCk7CiAJb2xkY29udGV4dCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhlZGF0YS0+YXNzb2NfY29udGV4dCk7CiAKKwlpZiAobmVlZF90 cnVuY2F0ZV9xdWVyeV9sb2coZGVidWdfcXVlcnlfc3RyaW5nKSkKKwl7CisJCXRydW5jYXRlZF9x dWVyeSA9IHRydW5jYXRlX3F1ZXJ5X2xvZyhkZWJ1Z19xdWVyeV9zdHJpbmcpOworCQlkZWJ1Z19x dWVyeV9zdHJpbmcgPSB0cnVuY2F0ZWRfcXVlcnk7CisJfQorCiAJLyoKIAkgKiBSZXNldCB0aGUg Zm9ybWF0dGVkIHRpbWVzdGFtcCBmaWVsZHMgYmVmb3JlIGVtaXR0aW5nIGFueSBsb2dzLiAgVGhp cwogCSAqIGluY2x1ZGVzIGFsbCB0aGUgbG9nIGRlc3RpbmF0aW9ucyBhbmQgZW1pdF9sb2dfaG9v aywgYXMgdGhlIGxhdHRlcgpAQCAtMTczMyw2ICsxNzQxLDkgQEAgRW1pdEVycm9yUmVwb3J0KHZv aWQpCiAKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAJcmVjdXJzaW9uX2Rl cHRoLS07CisKKwlpZiAodHJ1bmNhdGVkX3F1ZXJ5KQorCQlwZnJlZSh0cnVuY2F0ZWRfcXVlcnkp OwogfQogCiAvKgpAQCAtMzc3MywzICszNzg0LDM5IEBAIHdyaXRlX3N0ZGVycihjb25zdCBjaGFy ICpmbXQsLi4uKQogI2VuZGlmCiAJdmFfZW5kKGFwKTsKIH0KKworLyoKKyAqCUFwcGx5IHRydW5j YXRpb24gdG8gYnVpbGQgcXVlcnkgdGhhdCB3aWxsIGJlIGxvZ2dlZC4KKyAqCisgKglJZiBxdWVy eSBuZWVkcyB0byBiZSB0cnVuY2F0ZWQsIGNvcGllZCB3aWxsIGJlIHNldCB0byB0cnVlCisgKglh bmQgcmV0dXJuZWQgc3RyaW5nIG11c3QgYmUgZnJlZWQKKyovCitjaGFyKgordHJ1bmNhdGVfcXVl cnlfbG9nKGNvbnN0IGNoYXIqIHF1ZXJ5KQoreworCXNpemVfdCB0cnVuY2F0ZWRfcXVlcnlfbGVu OworCWNoYXIqIHRydW5jYXRkX3F1ZXJ5OworCXNpemVfdCBxdWVyeV9sZW47CisKKwlpZiAoIXF1 ZXJ5KQorCQlyZXR1cm4gTlVMTDsKKworCXF1ZXJ5X2xlbiA9IHN0cmxlbihxdWVyeSk7CisJdHJ1 bmNhdGVkX3F1ZXJ5X2xlbiA9IHBnX21iY2xpcGxlbihxdWVyeSwgcXVlcnlfbGVuLCBtYXhfbG9n X3NpemUpOworCXRydW5jYXRkX3F1ZXJ5ID0gKGNoYXIgKikgcGFsbG9jKHRydW5jYXRlZF9xdWVy eV9sZW4rMSk7CisJbWVtY3B5KHRydW5jYXRkX3F1ZXJ5LCBxdWVyeSwgdHJ1bmNhdGVkX3F1ZXJ5 X2xlbik7CisJdHJ1bmNhdGRfcXVlcnlbdHJ1bmNhdGVkX3F1ZXJ5X2xlbl0gPSAnXDAnOworCXJl dHVybiB0cnVuY2F0ZF9xdWVyeTsKK30KKworLyoKKyAqCUNoZWNrcyBpZiBxdWVyeSBzaG91bGQg YmUgdHJ1bmNhdGVkCisgKglhY2NvcmRpbmcgdG8gbWF4X2xvZ19zaXplCisqLworYm9vbAorbmVl ZF90cnVuY2F0ZV9xdWVyeV9sb2coY29uc3QgY2hhciogcXVlcnkpCit7CisJaWYgKCFxdWVyeSkK KwkJcmV0dXJuIGZhbHNlOworCXJldHVybiAhKG1heF9sb2dfc2l6ZSA9PSAwIHx8IHN0cmxlbihx dWVyeSkgPCBtYXhfbG9nX3NpemUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpp bmRleCA5ODQ1YWJkNjkzLi44YWQxOGY3YTQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJs ZXMuYwpAQCAtMzcyNCw2ICszNzI0LDE4IEBAIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5h bWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfbG9nX3Np emUiLCBQR0NfU1VTRVQsIExPR0dJTkdfV0hBVCwKKwkJCWdldHRleHRfbm9vcCgiU2V0cyBtYXgg c2l6ZSBpbiBieXRlcyBvZiBsb2dnZWQgc3RhdGVtZW50LiIpLAorCQkJTlVMTCwKKwkJCUdVQ19V TklUX0JZVEUKKwkJfSwKKwkJJm1heF9sb2dfc2l6ZSwKKwkJMCwKKwkJMCwgSU5UX01BWCwKKwkJ TlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAl7CiAJ CXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwgMCwgTlVMTCwgTlVMTCwgTlVM TApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IDQwN2NkMWUwOGMuLmRlNjk1ZTI1N2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTYxNyw2ICs2MTcsOCBAQAogCQkJCQkjIGJpbmQtcGFy YW1ldGVyIHZhbHVlcyB0byBOIGJ5dGVzOwogCQkJCQkjIC0xIG1lYW5zIHByaW50IGluIGZ1bGws IDAgZGlzYWJsZXMKICNsb2dfc3RhdGVtZW50ID0gJ25vbmUnCQkJIyBub25lLCBkZGwsIG1vZCwg YWxsCisjbWF4X2xvZ19zaXplID0gMCAJCQkJIyBtYXggc2l6ZSBvZiBsb2dnZWQgc3RhdGVtZW50 CisJCQkJICAgICMgMCBkaXNhYmxlcyB0aGUgZmVhdHVyZQogI2xvZ19yZXBsaWNhdGlvbl9jb21t YW5kcyA9IG9mZgogI2xvZ190ZW1wX2ZpbGVzID0gLTEJCQkjIGxvZyB0ZW1wb3JhcnkgZmlsZXMg ZXF1YWwgb3IgbGFyZ2VyCiAJCQkJCSMgdGhhbiB0aGUgc3BlY2lmaWVkIHNpemUgaW4ga2lsb2J5 dGVzOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19jdGwvdC8wMDRfbG9ncm90YXRlLnBsIGIvc3Jj L2Jpbi9wZ19jdGwvdC8wMDRfbG9ncm90YXRlLnBsCmluZGV4IGVhY2NhMWE2NTIuLjFjMWY4OWNi MGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfY3RsL3QvMDA0X2xvZ3JvdGF0ZS5wbAorKysgYi9z cmMvYmluL3BnX2N0bC90LzAwNF9sb2dyb3RhdGUucGwKQEAgLTY5LDYgKzY5LDcgQEAgbG9nX2Rl c3RpbmF0aW9uID0gJ3N0ZGVyciwgY3N2bG9nLCBqc29ubG9nJwogIyB0aGVzZSBlbnN1cmUgc3Rh YmlsaXR5IG9mIHRlc3QgcmVzdWx0czoKIGxvZ19yb3RhdGlvbl9hZ2UgPSAwCiBsY19tZXNzYWdl cyA9ICdDJworbWF4X2xvZ19zaXplID0gMzIKICkpOwogCiAkbm9kZS0+c3RhcnQoKTsKQEAgLTEz NSw2ICsxMzYsMjAgQEAgY2hlY2tfbG9nX3BhdHRlcm4oJ3N0ZGVycicsICRuZXdfY3VycmVudF9s b2dmaWxlcywgJ3N5bnRheCBlcnJvcicsICRub2RlKTsKIGNoZWNrX2xvZ19wYXR0ZXJuKCdjc3Zs b2cnLCAkbmV3X2N1cnJlbnRfbG9nZmlsZXMsICdzeW50YXggZXJyb3InLCAkbm9kZSk7CiBjaGVj a19sb2dfcGF0dGVybignanNvbmxvZycsICRuZXdfY3VycmVudF9sb2dmaWxlcywgJ3N5bnRheCBl cnJvcicsICRub2RlKTsKIAorJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywgJ0lOU0VSVCBJTlRPIFNP TUVfTk9OX0VYSVNUQU5UX1RBQkxFIFZBTFVFUyAoVEVTVCknKTsKK2ZvciAobXkgJGF0dGVtcHRz ID0gMDsgJGF0dGVtcHRzIDwgJG1heF9hdHRlbXB0czsgJGF0dGVtcHRzKyspCit7CisJZXZhbCB7 CisJCSRjdXJyZW50X2xvZ2ZpbGVzID0gc2x1cnBfZmlsZSgkbm9kZS0+ZGF0YV9kaXIgLiAnL2N1 cnJlbnRfbG9nZmlsZXMnKTsKKwl9OworCWxhc3QgdW5sZXNzICRAOworCXVzbGVlcCgxMDBfMDAw KTsKK30KK2RpZSAkQCBpZiAkQDsKK2NoZWNrX2xvZ19wYXR0ZXJuKCdzdGRlcnInLCAgJGN1cnJl bnRfbG9nZmlsZXMsICdJTlNFUlQgSU5UTyBTT01FX05PTl9FWElTVEFOVF9UQSg/IShCTEUgVkFM VUVTIFwoVEVTVFwpKSknLCAkbm9kZSk7CitjaGVja19sb2dfcGF0dGVybignY3N2bG9nJywgICRj dXJyZW50X2xvZ2ZpbGVzLCAnSU5TRVJUIElOVE8gU09NRV9OT05fRVhJU1RBTlRfVEEoPyEoQkxF IFZBTFVFUyBcKFRFU1RcKSkpJywgJG5vZGUpOworY2hlY2tfbG9nX3BhdHRlcm4oJ2pzb25sb2cn LCAkY3VycmVudF9sb2dmaWxlcywgJ0lOU0VSVCBJTlRPIFNPTUVfTk9OX0VYSVNUQU5UX1RBKD8h KEJMRSBWQUxVRVMgXChURVNUXCkpKScsICRub2RlKTsKKwogJG5vZGUtPnN0b3AoKTsKIAogZG9u ZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmggYi9zcmMv aW5jbHVkZS91dGlscy9lbG9nLmgKaW5kZXggZTU0ZWNhNWI0OC4uY2FmYThkZTNjMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvZWxvZy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2Vs b2cuaApAQCAtNTAyLDYgKzUwMiw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgTG9nX2Rlc3Rp bmF0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIGNoYXIgKkxvZ19kZXN0aW5hdGlvbl9zdHJpbmc7 CiBleHRlcm4gUEdETExJTVBPUlQgYm9vbCBzeXNsb2dfc2VxdWVuY2VfbnVtYmVyczsKIGV4dGVy biBQR0RMTElNUE9SVCBib29sIHN5c2xvZ19zcGxpdF9tZXNzYWdlczsKK2V4dGVybiBQR0RMTElN UE9SVCBpbnQgbWF4X2xvZ19zaXplOwogCiAvKiBMb2cgZGVzdGluYXRpb24gYml0bWFwICovCiAj ZGVmaW5lIExPR19ERVNUSU5BVElPTl9TVERFUlIJIDEKQEAgLTUxNyw2ICs1MTgsOSBAQCBleHRl cm4gdm9pZCBEZWJ1Z0ZpbGVPcGVuKHZvaWQpOwogZXh0ZXJuIGNoYXIgKnVucGFja19zcWxfc3Rh dGUoaW50IHNxbF9zdGF0ZSk7CiBleHRlcm4gYm9vbCBpbl9lcnJvcl9yZWN1cnNpb25fdHJvdWJs ZSh2b2lkKTsKIAorZXh0ZXJuIGJvb2wgbmVlZF90cnVuY2F0ZV9xdWVyeV9sb2coY29uc3QgY2hh ciogcXVlcnkpOworZXh0ZXJuIGNoYXIqIHRydW5jYXRlX3F1ZXJ5X2xvZyhjb25zdCBjaGFyKiBx dWVyeSk7CisKIC8qIENvbW1vbiBmdW5jdGlvbnMgc2hhcmVkIGFjcm9zcyBkZXN0aW5hdGlvbnMg Ki8KIGV4dGVybiB2b2lkIHJlc2V0X2Zvcm1hdHRlZF9zdGFydF90aW1lKHZvaWQpOwogZXh0ZXJu IGNoYXIgKmdldF9mb3JtYXR0ZWRfc3RhcnRfdGltZSh2b2lkKTsKLS0gCjIuMzkuMiAoQXBwbGUg R2l0LTE0MykKCg== --000000000000a0e1de06281373d5--