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 1rqAHc-00AwbP-Q7 for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Mar 2024 11:20:29 +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 1rqAHb-00Gu1s-EO for pgsql-hackers@arkaria.postgresql.org; Fri, 29 Mar 2024 11:20:27 +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 1rqAHb-00Gu1k-1e for pgsql-hackers@lists.postgresql.org; Fri, 29 Mar 2024 11:20:27 +0000 Received: from mail-oo1-xc2c.google.com ([2607:f8b0:4864:20::c2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rqAHX-007HX4-Q7 for pgsql-hackers@postgresql.org; Fri, 29 Mar 2024 11:20:26 +0000 Received: by mail-oo1-xc2c.google.com with SMTP id 006d021491bc7-5a49261093cso972715eaf.3 for ; Fri, 29 Mar 2024 04:20:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1711711222; x=1712316022; 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=oYJhUifK2XDFj1bc8cW8aJw8muIGdNQYL8YWG7LwxTU=; b=lYY8bC192XDAZ0e5FijfDefH418LCp/dH3FZwbPWabhbYLLONO+M7Xfr9XolpJ1OAM aOPlD9VSVt+rfssceADOkcrl/M37ViWoJDnX3mzbe1bzUEXudP1hB6FEetWfHTs/ehgR G2iJrfxuAO6eVf7EbKk+heAxqXEF6KxPqFUSfQEDav5qygNGahAqz3u6JxO61CHo0Uni mr19xroumCUnxbVEOyD3pojvbQBtzP44hB8FFxQVu2z1srHkU/gu/tnMlGpZS7/GhFAR KvChtjMDDUOLH/ltI7eM9tngFgxp2uYAzOkVc1twZAGYBxhecqh9sfqKAkpyrizwFfBS 3jvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711711222; x=1712316022; 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=oYJhUifK2XDFj1bc8cW8aJw8muIGdNQYL8YWG7LwxTU=; b=WpfXAfeIrmhwRymEF0YXJYXhSCi1+kaMjjhuFaXvARxbOGGSEq1rS00CXvkJIb6qye yj8+buuAZ9Tgi9dIe5p01rWsOwysvPxizdIz9OrNcGJ3M6rFYmv3EnYmqe/Yo6AO/CGb NevZn58sTtJXgBoYcs6v4+FwjEeNCk9Itobu9ZUo/CPI3xLCz6GtP302vOcpleA+KS77 DlSDsmXsdjs86kOdrJ2dCoFjPFnL5iPEmXI3k3q1GrUBNDqLMwIXGthhZn98s7Uk4fVc kyWsz5AYHtpDYimHPkVL3+887kha5ZfyJzjQM2/aIXi/vRfyGNj24s8ysEf29ljVK3hW 54xw== X-Forwarded-Encrypted: i=1; AJvYcCX5JRmN9IG4KQGy6ZwR83vC+1/3hhlpgBpXnBNy+r3zJ5kvA5eISxQpwiuYUivuWGU9QawlwJKte/1du5jm6P5iUvUQnO31NkANrUnl X-Gm-Message-State: AOJu0YyBRbhSCkO4MMZ5a9MyqV622bwckZK9ETCsiHYfmVbLaMXy8T6i vzjDvcz9k3SyS0XaznED8opYgncNCD1n2k251JY0ZFN7xQjxHbf+5UG6RKvarQ+voq2XdftfHOb Z31Jykye4NBu8hIQhe56lLFrxpEU7gNWEVAU= X-Google-Smtp-Source: AGHT+IFmssl0aY3027DZ3T2dtjyYglP+8dsxDWbXLwcKLN6+CZqUCILH/Rj2+uM/ZzcLVdur2WrMdJ1Na/ILLtSwW48= X-Received: by 2002:a05:6820:260f:b0:5a7:8369:e4aa with SMTP id cy15-20020a056820260f00b005a78369e4aamr1220416oob.0.1711711222152; Fri, 29 Mar 2024 04:20:22 -0700 (PDT) MIME-Version: 1.0 References: <20220512034010.4oqa76pasrulkw32@alap3.anarazel.de> <20220512234207.pwwp6q33f72byet2@alap3.anarazel.de> <0892cd00635c8bcd458de6d43d31cf61953da1b2.camel@j-davis.com> <727b0f3b48aec2a4f968bf11c6fa8ca6382b6cca.camel@j-davis.com> In-Reply-To: From: Danil Anisimow Date: Fri, 29 Mar 2024 18:20:11 +0700 Message-ID: Subject: Re: Comments on Custom RMGRs To: Jeff Davis Cc: Andres Freund , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000005aea0d0614cad30a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005aea0d0614cad30a Content-Type: multipart/alternative; boundary="0000000000005aea0c0614cad308" --0000000000005aea0c0614cad308 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Mar 22, 2024 at 2:02=E2=80=AFAM Jeff Davis wrot= e: > On Thu, 2024-03-21 at 19:47 +0700, Danil Anisimow wrote: > > [pgss_001.v1.patch] adds a custom resource manager to the > > pg_stat_statements extension. > > Did you consider moving the logic for loading the initial contents from > disk from pgss_shmem_startup to .rmgr_startup? I tried it, but .rmgr_startup is not called if the system was shut down cleanly. > My biggest concern is that it might not be quite right for a table AM > that has complex state that needs action to be taken at a slightly > different time, e.g. right after CheckPointBuffers(). > Then again, the rmgr is a low-level API, and any extension using it > should be prepared to adapt to changes. If it works for pgss, then we > know it works for at least one thing, and we can always improve it > later. For instance, we might call the hook several times and pass it a > "phase" argument. In [rmgr_003.v3.patch] I added a phase argument to RmgrCheckpoint(). Currently it is only called in two places: before and after CheckPointBuffers(). -- Regards, Daniil Anisimov Postgres Professional: http://postgrespro.com --0000000000005aea0c0614cad308 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Mar 22, 2024 at 2:02=E2=80=AFAM Jeff Davis <pgsql@j-davis.com> wrote:
> = On Thu, 2024-03-21 at 19:47 +0700, Danil Anisimow wrote:
> > [pgss= _001.v1.patch] adds a custom resource manager to the
> > pg_stat_s= tatements extension.
>
> Did you consider moving the logic for = loading the initial contents from
> disk from pgss_shmem_startup to .= rmgr_startup?

I tried it, but .rmgr_startup is not called if the sys= tem was shut down cleanly.

> My biggest concern is that it might = not be quite right for a table AM
> that has complex state that needs= action to be taken at a slightly
> different time, e.g. right after = CheckPointBuffers().

> Then again, the rmgr is a low-level API, a= nd any extension using it
> should be prepared to adapt to changes. I= f it works for pgss, then we
> know it works for at least one thing, = and we can always improve it
> later. For instance, we might call the= hook several times and pass it a
> "phase" argument.
In [rmgr_003.v3.patch] I added a phase argument to RmgrCheckpoint().
C= urrently it is only called in two places: before and after CheckPointBuffer= s().

--
Regards,
Daniil Anisimov
Postgres Professional: http://postgrespro.com
--0000000000005aea0c0614cad308-- --0000000000005aea0d0614cad30a Content-Type: text/x-patch; charset="US-ASCII"; name="rmgr_003.v3.patch" Content-Disposition: attachment; filename="rmgr_003.v3.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lucknfqw0 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3JtZ3IuYwppbmRleCAzZTJmMWQ0YTIzLi41YTFmYmU4Mzc5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9ybWdyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vcm1nci5jCkBAIC00NCw4ICs0NCw4IEBACiAKIAogLyogbXVz dCBiZSBrZXB0IGluIHN5bmMgd2l0aCBSbWdyRGF0YSBkZWZpbml0aW9uIGluIHhsb2dfaW50ZXJu YWwuaCAqLwotI2RlZmluZSBQR19STUdSKHN5bW5hbWUsbmFtZSxyZWRvLGRlc2MsaWRlbnRpZnks c3RhcnR1cCxjbGVhbnVwLG1hc2ssZGVjb2RlKSBcCi0JeyBuYW1lLCByZWRvLCBkZXNjLCBpZGVu dGlmeSwgc3RhcnR1cCwgY2xlYW51cCwgbWFzaywgZGVjb2RlIH0sCisjZGVmaW5lIFBHX1JNR1Io c3ltbmFtZSxuYW1lLHJlZG8sZGVzYyxpZGVudGlmeSxzdGFydHVwLGNsZWFudXAsbWFzayxkZWNv ZGUsY2hlY2twb2ludCkgXAorCXsgbmFtZSwgcmVkbywgZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAs IGNsZWFudXAsIG1hc2ssIGRlY29kZSwgY2hlY2twb2ludCB9LAogCiBSbWdyRGF0YQlSbWdyVGFi bGVbUk1fTUFYX0lEICsgMV0gPSB7CiAjaW5jbHVkZSAiYWNjZXNzL3JtZ3JsaXN0LmgiCkBAIC04 Myw2ICs4MywyNSBAQCBSbWdyQ2xlYW51cCh2b2lkKQogCX0KIH0KIAorLyoKKyAqIENoZWNrcG9p bnQgYWxsIHJlc291cmNlIG1hbmFnZXJzLgorICoKKyAqIFNlZSBDcmVhdGVDaGVja1BvaW50IGZv ciBkZXRhaWxzIGFib3V0IGZsYWdzLgorICogcGhhc2Ugc2hvd3MgYSBwb3NpdGlvbiBpbiB3aGlj aCBSbWdyQ2hlY2twb2ludCBpcyBjYWxsZWQgaW4gQ2hlY2tQb2ludEd1dHMuCisgKi8KK3ZvaWQK K1JtZ3JDaGVja3BvaW50KGludCBmbGFncywgUm1nckNoZWNrcG9pbnRQaGFzZSBwaGFzZSkKK3sK Kwlmb3IgKGludCBybWlkID0gMDsgcm1pZCA8PSBSTV9NQVhfSUQ7IHJtaWQrKykKKwl7CisJCWlm ICghUm1ncklkRXhpc3RzKHJtaWQpKQorCQkJY29udGludWU7CisKKwkJaWYgKFJtZ3JUYWJsZVty bWlkXS5ybV9jaGVja3BvaW50ICE9IE5VTEwpCisJCQlSbWdyVGFibGVbcm1pZF0ucm1fY2hlY2tw b2ludChmbGFncywgcGhhc2UpOworCX0KK30KKwogLyoKICAqIEVtaXQgRVJST1Igd2hlbiB3ZSBl bmNvdW50ZXIgYSByZWNvcmQgd2l0aCBhbiBSbWdySWQgd2UgZG9uJ3QKICAqIHJlY29nbml6ZS4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCAyMGE1Zjg2MjA5Li5kN2VjYWI2NzY5IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCkBAIC03MzU3LDggKzczNTcsMTMgQEAgQ2hlY2tQ b2ludEd1dHMoWExvZ1JlY1B0ciBjaGVja1BvaW50UmVkbywgaW50IGZsYWdzKQogCUNoZWNrUG9p bnRTVUJUUkFOUygpOwogCUNoZWNrUG9pbnRNdWx0aVhhY3QoKTsKIAlDaGVja1BvaW50UHJlZGlj YXRlKCk7CisKKwlSbWdyQ2hlY2twb2ludChmbGFncywgUk1HUl9DSEVDS1BPSU5UX0JFRk9SRV9C VUZGRVJTKTsKKwogCUNoZWNrUG9pbnRCdWZmZXJzKGZsYWdzKTsKIAorCVJtZ3JDaGVja3BvaW50 KGZsYWdzLCBSTUdSX0NIRUNLUE9JTlRfQUZURVJfQlVGRkVSUyk7CisKIAkvKiBQZXJmb3JtIGFs bCBxdWV1ZWQgdXAgZnN5bmNzICovCiAJVFJBQ0VfUE9TVEdSRVNRTF9CVUZGRVJfQ0hFQ0tQT0lO VF9TWU5DX1NUQVJUKCk7CiAJQ2hlY2twb2ludFN0YXRzLmNrcHRfc3luY190ID0gR2V0Q3VycmVu dFRpbWVzdGFtcCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19yZXdpbmQvcGFyc2V4bG9nLmMg Yi9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYwppbmRleCAyMmY3MzUxZmRjLi4xMWFlMWU3 YWY0IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYworKysgYi9zcmMv YmluL3BnX3Jld2luZC9wYXJzZXhsb2cuYwpAQCAtMjgsNyArMjgsNyBAQAogICogUm1nck5hbWVz IGlzIGFuIGFycmF5IG9mIHRoZSBidWlsdC1pbiByZXNvdXJjZSBtYW5hZ2VyIG5hbWVzLCB0byBt YWtlIGVycm9yCiAgKiBtZXNzYWdlcyBhIGJpdCBuaWNlci4KICAqLwotI2RlZmluZSBQR19STUdS KHN5bW5hbWUsbmFtZSxyZWRvLGRlc2MsaWRlbnRpZnksc3RhcnR1cCxjbGVhbnVwLG1hc2ssZGVj b2RlKSBcCisjZGVmaW5lIFBHX1JNR1Ioc3ltbmFtZSxuYW1lLHJlZG8sZGVzYyxpZGVudGlmeSxz dGFydHVwLGNsZWFudXAsbWFzayxkZWNvZGUsY2hlY2twb2ludCkgXAogICBuYW1lLAogCiBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgUm1nck5hbWVzW1JNX01BWF9JRCArIDFdID0gewpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3JtZ3JkZXNjLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAv cm1ncmRlc2MuYwppbmRleCA2YjhjMTdiYjRjLi4yYmI1YmE4YzlmIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX3dhbGR1bXAvcm1ncmRlc2MuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcm1ncmRl c2MuYwpAQCAtMzIsNyArMzIsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieWRlZnMuaCIK ICNpbmNsdWRlICJ1dGlscy9yZWxtYXBwZXIuaCIKIAotI2RlZmluZSBQR19STUdSKHN5bW5hbWUs bmFtZSxyZWRvLGRlc2MsaWRlbnRpZnksc3RhcnR1cCxjbGVhbnVwLG1hc2ssZGVjb2RlKSBcCisj ZGVmaW5lIFBHX1JNR1Ioc3ltbmFtZSxuYW1lLHJlZG8sZGVzYyxpZGVudGlmeSxzdGFydHVwLGNs ZWFudXAsbWFzayxkZWNvZGUsY2hlY2twb2ludCkgXAogCXsgbmFtZSwgZGVzYywgaWRlbnRpZnl9 LAogCiBzdGF0aWMgY29uc3QgUm1nckRlc2NEYXRhIFJtZ3JEZXNjVGFibGVbUk1fTl9CVUlMVElO X0lEU10gPSB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1nci5oIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JtZ3IuaAppbmRleCAzYjZhNDk3ZTFiLi4zNGRkYzAyMTBjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvcm1nci5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9y bWdyLmgKQEAgLTE5LDcgKzE5LDcgQEAgdHlwZWRlZiB1aW50OCBSbWdySWQ7CiAgKiBOb3RlOiBS TV9NQVhfSUQgbXVzdCBmaXQgaW4gUm1ncklkOyB3aWRlbmluZyB0aGF0IHR5cGUgd2lsbCBhZmZl Y3QgdGhlIFhMT0cKICAqIGZpbGUgZm9ybWF0LgogICovCi0jZGVmaW5lIFBHX1JNR1Ioc3ltbmFt ZSxuYW1lLHJlZG8sZGVzYyxpZGVudGlmeSxzdGFydHVwLGNsZWFudXAsbWFzayxkZWNvZGUpIFwK KyNkZWZpbmUgUEdfUk1HUihzeW1uYW1lLG5hbWUscmVkbyxkZXNjLGlkZW50aWZ5LHN0YXJ0dXAs Y2xlYW51cCxtYXNrLGRlY29kZSxjaGVja3BvaW50KSBcCiAJc3ltbmFtZSwKIAogdHlwZWRlZiBl bnVtIFJtZ3JJZHMKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9ybWdybGlzdC5oIGIv c3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKaW5kZXggNzhlNmI5MDhjNi4uMGIwM2NjNjli ZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKKysrIGIvc3JjL2lu Y2x1ZGUvYWNjZXNzL3JtZ3JsaXN0LmgKQEAgLTI0LDI2ICsyNCwyNiBAQAogICogQ2hhbmdlcyB0 byB0aGlzIGxpc3QgcG9zc2libHkgbmVlZCBhbiBYTE9HX1BBR0VfTUFHSUMgYnVtcC4KICAqLwog Ci0vKiBzeW1ib2wgbmFtZSwgdGV4dHVhbCBuYW1lLCByZWRvLCBkZXNjLCBpZGVudGlmeSwgc3Rh cnR1cCwgY2xlYW51cCwgbWFzaywgZGVjb2RlICovCi1QR19STUdSKFJNX1hMT0dfSUQsICJYTE9H IiwgeGxvZ19yZWRvLCB4bG9nX2Rlc2MsIHhsb2dfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEws IHhsb2dfZGVjb2RlKQotUEdfUk1HUihSTV9YQUNUX0lELCAiVHJhbnNhY3Rpb24iLCB4YWN0X3Jl ZG8sIHhhY3RfZGVzYywgeGFjdF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgeGFjdF9kZWNv ZGUpCi1QR19STUdSKFJNX1NNR1JfSUQsICJTdG9yYWdlIiwgc21ncl9yZWRvLCBzbWdyX2Rlc2Ms IHNtZ3JfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCi1QR19STUdSKFJNX0NMT0df SUQsICJDTE9HIiwgY2xvZ19yZWRvLCBjbG9nX2Rlc2MsIGNsb2dfaWRlbnRpZnksIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwpCi1QR19STUdSKFJNX0RCQVNFX0lELCAiRGF0YWJhc2UiLCBkYmFzZV9y ZWRvLCBkYmFzZV9kZXNjLCBkYmFzZV9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkK LVBHX1JNR1IoUk1fVEJMU1BDX0lELCAiVGFibGVzcGFjZSIsIHRibHNwY19yZWRvLCB0YmxzcGNf ZGVzYywgdGJsc3BjX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQotUEdfUk1HUihS TV9NVUxUSVhBQ1RfSUQsICJNdWx0aVhhY3QiLCBtdWx0aXhhY3RfcmVkbywgbXVsdGl4YWN0X2Rl c2MsIG11bHRpeGFjdF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKLVBHX1JNR1Io Uk1fUkVMTUFQX0lELCAiUmVsTWFwIiwgcmVsbWFwX3JlZG8sIHJlbG1hcF9kZXNjLCByZWxtYXBf aWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCi1QR19STUdSKFJNX1NUQU5EQllfSUQs ICJTdGFuZGJ5Iiwgc3RhbmRieV9yZWRvLCBzdGFuZGJ5X2Rlc2MsIHN0YW5kYnlfaWRlbnRpZnks IE5VTEwsIE5VTEwsIE5VTEwsIHN0YW5kYnlfZGVjb2RlKQotUEdfUk1HUihSTV9IRUFQMl9JRCwg IkhlYXAyIiwgaGVhcDJfcmVkbywgaGVhcDJfZGVzYywgaGVhcDJfaWRlbnRpZnksIE5VTEwsIE5V TEwsIGhlYXBfbWFzaywgaGVhcDJfZGVjb2RlKQotUEdfUk1HUihSTV9IRUFQX0lELCAiSGVhcCIs IGhlYXBfcmVkbywgaGVhcF9kZXNjLCBoZWFwX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBoZWFwX21h c2ssIGhlYXBfZGVjb2RlKQotUEdfUk1HUihSTV9CVFJFRV9JRCwgIkJ0cmVlIiwgYnRyZWVfcmVk bywgYnRyZWVfZGVzYywgYnRyZWVfaWRlbnRpZnksIGJ0cmVlX3hsb2dfc3RhcnR1cCwgYnRyZWVf eGxvZ19jbGVhbnVwLCBidHJlZV9tYXNrLCBOVUxMKQotUEdfUk1HUihSTV9IQVNIX0lELCAiSGFz aCIsIGhhc2hfcmVkbywgaGFzaF9kZXNjLCBoYXNoX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBoYXNo X21hc2ssIE5VTEwpCi1QR19STUdSKFJNX0dJTl9JRCwgIkdpbiIsIGdpbl9yZWRvLCBnaW5fZGVz YywgZ2luX2lkZW50aWZ5LCBnaW5feGxvZ19zdGFydHVwLCBnaW5feGxvZ19jbGVhbnVwLCBnaW5f bWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fR0lTVF9JRCwgIkdpc3QiLCBnaXN0X3JlZG8sIGdpc3Rf ZGVzYywgZ2lzdF9pZGVudGlmeSwgZ2lzdF94bG9nX3N0YXJ0dXAsIGdpc3RfeGxvZ19jbGVhbnVw LCBnaXN0X21hc2ssIE5VTEwpCi1QR19STUdSKFJNX1NFUV9JRCwgIlNlcXVlbmNlIiwgc2VxX3Jl ZG8sIHNlcV9kZXNjLCBzZXFfaWRlbnRpZnksIE5VTEwsIE5VTEwsIHNlcV9tYXNrLCBOVUxMKQot UEdfUk1HUihSTV9TUEdJU1RfSUQsICJTUEdpc3QiLCBzcGdfcmVkbywgc3BnX2Rlc2MsIHNwZ19p ZGVudGlmeSwgc3BnX3hsb2dfc3RhcnR1cCwgc3BnX3hsb2dfY2xlYW51cCwgc3BnX21hc2ssIE5V TEwpCi1QR19STUdSKFJNX0JSSU5fSUQsICJCUklOIiwgYnJpbl9yZWRvLCBicmluX2Rlc2MsIGJy aW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIGJyaW5fbWFzaywgTlVMTCkKLVBHX1JNR1IoUk1fQ09N TUlUX1RTX0lELCAiQ29tbWl0VHMiLCBjb21taXRfdHNfcmVkbywgY29tbWl0X3RzX2Rlc2MsIGNv bW1pdF90c19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkKLVBHX1JNR1IoUk1fUkVQ TE9SSUdJTl9JRCwgIlJlcGxpY2F0aW9uT3JpZ2luIiwgcmVwbG9yaWdpbl9yZWRvLCByZXBsb3Jp Z2luX2Rlc2MsIHJlcGxvcmlnaW5faWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwpCi1Q R19STUdSKFJNX0dFTkVSSUNfSUQsICJHZW5lcmljIiwgZ2VuZXJpY19yZWRvLCBnZW5lcmljX2Rl c2MsIGdlbmVyaWNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIGdlbmVyaWNfbWFzaywgTlVMTCkKLVBH X1JNR1IoUk1fTE9HSUNBTE1TR19JRCwgIkxvZ2ljYWxNZXNzYWdlIiwgbG9naWNhbG1zZ19yZWRv LCBsb2dpY2FsbXNnX2Rlc2MsIGxvZ2ljYWxtc2dfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEws IGxvZ2ljYWxtc2dfZGVjb2RlKQorLyogc3ltYm9sIG5hbWUsIHRleHR1YWwgbmFtZSwgcmVkbywg ZGVzYywgaWRlbnRpZnksIHN0YXJ0dXAsIGNsZWFudXAsIG1hc2ssIGRlY29kZSwgY2hlY2twb2lu dCAqLworUEdfUk1HUihSTV9YTE9HX0lELCAiWExPRyIsIHhsb2dfcmVkbywgeGxvZ19kZXNjLCB4 bG9nX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCB4bG9nX2RlY29kZSwgTlVMTCkKK1BHX1JN R1IoUk1fWEFDVF9JRCwgIlRyYW5zYWN0aW9uIiwgeGFjdF9yZWRvLCB4YWN0X2Rlc2MsIHhhY3Rf aWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIHhhY3RfZGVjb2RlLCBOVUxMKQorUEdfUk1HUihS TV9TTUdSX0lELCAiU3RvcmFnZSIsIHNtZ3JfcmVkbywgc21ncl9kZXNjLCBzbWdyX2lkZW50aWZ5 LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9DTE9HX0lELCAiQ0xP RyIsIGNsb2dfcmVkbywgY2xvZ19kZXNjLCBjbG9nX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxM LCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9EQkFTRV9JRCwgIkRhdGFiYXNlIiwgZGJhc2VfcmVk bywgZGJhc2VfZGVzYywgZGJhc2VfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5V TEwpCitQR19STUdSKFJNX1RCTFNQQ19JRCwgIlRhYmxlc3BhY2UiLCB0YmxzcGNfcmVkbywgdGJs c3BjX2Rlc2MsIHRibHNwY19pZGVudGlmeSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCkK K1BHX1JNR1IoUk1fTVVMVElYQUNUX0lELCAiTXVsdGlYYWN0IiwgbXVsdGl4YWN0X3JlZG8sIG11 bHRpeGFjdF9kZXNjLCBtdWx0aXhhY3RfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEws IE5VTEwpCitQR19STUdSKFJNX1JFTE1BUF9JRCwgIlJlbE1hcCIsIHJlbG1hcF9yZWRvLCByZWxt YXBfZGVzYywgcmVsbWFwX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQor UEdfUk1HUihSTV9TVEFOREJZX0lELCAiU3RhbmRieSIsIHN0YW5kYnlfcmVkbywgc3RhbmRieV9k ZXNjLCBzdGFuZGJ5X2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBzdGFuZGJ5X2RlY29kZSwg TlVMTCkKK1BHX1JNR1IoUk1fSEVBUDJfSUQsICJIZWFwMiIsIGhlYXAyX3JlZG8sIGhlYXAyX2Rl c2MsIGhlYXAyX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBoZWFwX21hc2ssIGhlYXAyX2RlY29kZSwg TlVMTCkKK1BHX1JNR1IoUk1fSEVBUF9JRCwgIkhlYXAiLCBoZWFwX3JlZG8sIGhlYXBfZGVzYywg aGVhcF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgaGVhcF9tYXNrLCBoZWFwX2RlY29kZSwgTlVMTCkK K1BHX1JNR1IoUk1fQlRSRUVfSUQsICJCdHJlZSIsIGJ0cmVlX3JlZG8sIGJ0cmVlX2Rlc2MsIGJ0 cmVlX2lkZW50aWZ5LCBidHJlZV94bG9nX3N0YXJ0dXAsIGJ0cmVlX3hsb2dfY2xlYW51cCwgYnRy ZWVfbWFzaywgTlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1fSEFTSF9JRCwgIkhhc2giLCBoYXNoX3Jl ZG8sIGhhc2hfZGVzYywgaGFzaF9pZGVudGlmeSwgTlVMTCwgTlVMTCwgaGFzaF9tYXNrLCBOVUxM LCBOVUxMKQorUEdfUk1HUihSTV9HSU5fSUQsICJHaW4iLCBnaW5fcmVkbywgZ2luX2Rlc2MsIGdp bl9pZGVudGlmeSwgZ2luX3hsb2dfc3RhcnR1cCwgZ2luX3hsb2dfY2xlYW51cCwgZ2luX21hc2ss IE5VTEwsIE5VTEwpCitQR19STUdSKFJNX0dJU1RfSUQsICJHaXN0IiwgZ2lzdF9yZWRvLCBnaXN0 X2Rlc2MsIGdpc3RfaWRlbnRpZnksIGdpc3RfeGxvZ19zdGFydHVwLCBnaXN0X3hsb2dfY2xlYW51 cCwgZ2lzdF9tYXNrLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9TRVFfSUQsICJTZXF1ZW5jZSIs IHNlcV9yZWRvLCBzZXFfZGVzYywgc2VxX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBzZXFfbWFzaywg TlVMTCwgTlVMTCkKK1BHX1JNR1IoUk1fU1BHSVNUX0lELCAiU1BHaXN0Iiwgc3BnX3JlZG8sIHNw Z19kZXNjLCBzcGdfaWRlbnRpZnksIHNwZ194bG9nX3N0YXJ0dXAsIHNwZ194bG9nX2NsZWFudXAs IHNwZ19tYXNrLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9CUklOX0lELCAiQlJJTiIsIGJyaW5f cmVkbywgYnJpbl9kZXNjLCBicmluX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBicmluX21hc2ssIE5V TEwsIE5VTEwpCitQR19STUdSKFJNX0NPTU1JVF9UU19JRCwgIkNvbW1pdFRzIiwgY29tbWl0X3Rz X3JlZG8sIGNvbW1pdF90c19kZXNjLCBjb21taXRfdHNfaWRlbnRpZnksIE5VTEwsIE5VTEwsIE5V TEwsIE5VTEwsIE5VTEwpCitQR19STUdSKFJNX1JFUExPUklHSU5fSUQsICJSZXBsaWNhdGlvbk9y aWdpbiIsIHJlcGxvcmlnaW5fcmVkbywgcmVwbG9yaWdpbl9kZXNjLCByZXBsb3JpZ2luX2lkZW50 aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKQorUEdfUk1HUihSTV9HRU5FUklDX0lE LCAiR2VuZXJpYyIsIGdlbmVyaWNfcmVkbywgZ2VuZXJpY19kZXNjLCBnZW5lcmljX2lkZW50aWZ5 LCBOVUxMLCBOVUxMLCBnZW5lcmljX21hc2ssIE5VTEwsIE5VTEwpCitQR19STUdSKFJNX0xPR0lD QUxNU0dfSUQsICJMb2dpY2FsTWVzc2FnZSIsIGxvZ2ljYWxtc2dfcmVkbywgbG9naWNhbG1zZ19k ZXNjLCBsb2dpY2FsbXNnX2lkZW50aWZ5LCBOVUxMLCBOVUxMLCBOVUxMLCBsb2dpY2FsbXNnX2Rl Y29kZSwgTlVMTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFs LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ19pbnRlcm5hbC5oCmluZGV4IGI4OGIyNGYwYzEu LjUyYTcwZTY1ZTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nX2ludGVybmFs LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dfaW50ZXJuYWwuaApAQCAtMzI1LDYgKzMy NSwxNSBAQCB0eXBlZGVmIGVudW0KIAlSRUNPVkVSWV9UQVJHRVRfQUNUSU9OX1NIVVRET1dOLAog fQkJCVJlY292ZXJ5VGFyZ2V0QWN0aW9uOwogCisvKiBDaGVja3BvaW50IHBoYXNlcyBpbiB3aGlj aCBSbWdyQ2hlY2twb2ludCgpIGlzIGNhbGxlZC4gKi8KK3R5cGVkZWYgZW51bSBSbWdyQ2hlY2tw b2ludFBoYXNlCit7CisJUk1HUl9DSEVDS1BPSU5UX0JFRk9SRV9CVUZGRVJTID0gMCwJLyogUm1n ckNoZWNrcG9pbnQoKSBpcyBjYWxsZWQKKwkJCQkJCQkJCQkgKiBiZWZvcmUgQ2hlY2tQb2ludEJ1 ZmZlcnMoKSAqLworCVJNR1JfQ0hFQ0tQT0lOVF9BRlRFUl9CVUZGRVJTLAkJLyogUm1nckNoZWNr cG9pbnQoKSBpcyBjYWxsZWQKKwkJCQkJCQkJCQkgKiBhZnRlciBDaGVja1BvaW50QnVmZmVycygp ICovCit9IFJtZ3JDaGVja3BvaW50UGhhc2U7CisKIHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250 ZXh0Owogc3RydWN0IFhMb2dSZWNvcmRCdWZmZXI7CiAKQEAgLTM1NiwxMSArMzY1LDEzIEBAIHR5 cGVkZWYgc3RydWN0IFJtZ3JEYXRhCiAJdm9pZAkJKCpybV9tYXNrKSAoY2hhciAqcGFnZWRhdGEs IEJsb2NrTnVtYmVyIGJsa25vKTsKIAl2b2lkCQkoKnJtX2RlY29kZSkgKHN0cnVjdCBMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJCQkJCQkJICBzdHJ1Y3QgWExvZ1JlY29yZEJ1ZmZlciAq YnVmKTsKKwl2b2lkCQkoKnJtX2NoZWNrcG9pbnQpIChpbnQgZmxhZ3MsIFJtZ3JDaGVja3BvaW50 UGhhc2UgcGhhc2UpOwogfSBSbWdyRGF0YTsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFJtZ3JEYXRh IFJtZ3JUYWJsZVtdOwogZXh0ZXJuIHZvaWQgUm1nclN0YXJ0dXAodm9pZCk7CiBleHRlcm4gdm9p ZCBSbWdyQ2xlYW51cCh2b2lkKTsKK2V4dGVybiB2b2lkIFJtZ3JDaGVja3BvaW50KGludCBmbGFn cywgUm1nckNoZWNrcG9pbnRQaGFzZSBwaGFzZSk7CiBleHRlcm4gdm9pZCBSbWdyTm90Rm91bmQo Um1ncklkIHJtaWQpOwogZXh0ZXJuIHZvaWQgUmVnaXN0ZXJDdXN0b21SbWdyKFJtZ3JJZCBybWlk LCBjb25zdCBSbWdyRGF0YSAqcm1ncik7CiAK --0000000000005aea0d0614cad30a--