Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eenf6-0002ie-OX for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jan 2018 19:58:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eenf6-0003rP-9z for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jan 2018 19:58:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1eenf6-0003rD-1v for pgsql-hackers@lists.postgresql.org; Thu, 25 Jan 2018 19:58:16 +0000 Received: from mail.thelabyrinth.net ([45.56.70.56]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eenf1-0007nX-Vw for pgsql-hackers@postgresql.org; Thu, 25 Jan 2018 19:58:15 +0000 Received: from Davids-iMac.local (unknown [173.169.74.224]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dsteele) by mail.thelabyrinth.net (Postfix) with ESMTPSA id 5034B5465C; Thu, 25 Jan 2018 19:58:08 +0000 (UTC) Subject: Re: PATCH: Exclude unlogged tables from base backups To: Masahiko Sawada , Adam Brightwell Cc: Robert Haas , Stephen Frost , PostgreSQL-development References: <04791bab-cb04-ba43-e9c0-664a4c1ffb2c@pgmasters.net> <20171212225234.jqdwd4sp663l4znp@alap3.anarazel.de> <5e428ad7-f37f-6479-aabf-2c8b9318fb79@pgmasters.net> <20171212230740.evr7rvkzz5bztdg6@alap3.anarazel.de> <20171213014804.GH4628@tamriel.snowman.net> From: David Steele Message-ID: Date: Thu, 25 Jan 2018 14:58:07 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------E5E00521094701BDD5E981B2" Content-Language: en-US List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------E5E00521094701BDD5E981B2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 1/25/18 12:31 AM, Masahiko Sawada wrote: > On Thu, Jan 25, 2018 at 3:25 AM, David Steele wrote: >>> >>> Here is the first review comments. >>> >>> + unloggedDelim = strrchr(path, '/'); >>> >>> I think it doesn't work fine on windows. How about using >>> last_dir_separator() instead? >> >> I think this function is OK on Windows -- we use it quite a bit. >> However, last_dir_separator() is clearer so I have changed it. > > Thank you for updating this. I was concerned about a separator > character '/' might not work fine on windows. Ah yes, I see what you mean now. > On Thu, Jan 25, 2018 at 6:23 AM, David Steele wrote: >> On 1/24/18 4:02 PM, Adam Brightwell wrote: >> Actually, I was talking to Stephen about this it seems like #3 would be >> more practical if we just stat'd the init fork for each relation file >> found. I doubt the stat would add a lot of overhead and we can track >> each unlogged relation in a hash table to reduce overhead even more. >> > > Can the readdir handle files that are added during the loop? I think > that we still cannot exclude a new unlogged relation if the relation > is added after we execute readdir first time. To completely eliminate > it we need a sort of lock that prevents to create new unlogged > relation from current backends. Or we need to do readdir loop multiple > times to see if no new relations were added during sending files. As far as I know readdir() is platform-dependent in terms of how it scans the dir and if files created after the opendir() will appear. It shouldn't matter, though, since WAL replay will recreate those files. > If you're updating the patch to implement #3, this patch should be > marked as "Waiting on Author". After updated I'll review it again. Attached is a new patch that uses stat() to determine if the init fork for a relation file exists. I decided not to build a hash table as it could use considerable memory and I didn't think it would be much faster than a simple stat() call. The reinit.c refactor has been removed since it was no longer needed. I'll submit the tests I wrote for reinit.c as a separate patch for the next CF. Thanks, -- -David david@pgmasters.net --------------E5E00521094701BDD5E981B2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="exclude-unlogged-v3.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exclude-unlogged-v3.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21s L3Byb3RvY29sLnNnbWwKaW5kZXggNGM1ZWQxZTZkNi4uNTg1NGVjMTUzMyAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3Rv Y29sLnNnbWwKQEAgLTI1NTIsNiArMjU1MiwxMiBAQCBUaGUgY29tbWFuZHMgYWNjZXB0ZWQg aW4gd2Fsc2VuZGVyIG1vZGUgYXJlOgogICAgICAgICAgd2l0aCA8ZmlsZW5hbWU+cGdzcWxf dG1wPC9maWxlbmFtZT4uCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBVbmxvZ2dlZCBy ZWxhdGlvbnMsIGV4Y2VwdCBmb3IgdGhlIGluaXQgZm9yayB3aGljaCBpcyByZXF1aXJlZCB0 bworICAgICAgICAgcmVjcmVhdGUgdGhlIChlbXB0eSkgdW5sb2dnZWQgcmVsYXRpb24gb24g cmVjb3ZlcnkuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgogICAgICAg IDxsaXN0aXRlbT4KICAgICAgICAgPHBhcmE+CiAgICAgICAgICA8ZmlsZW5hbWU+cGdfd2Fs PC9maWxlbmFtZT4sIGluY2x1ZGluZyBzdWJkaXJlY3Rvcmllcy4gSWYgdGhlIGJhY2t1cCBp cyBydW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwppbmRleCBkZDdhZDY0 ODYyLi42ODg3OTBhZDBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9i YXNlYmFja3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5j CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAibm9kZXMvcGdfbGlzdC5oIgogI2luY2x1 ZGUgInBndGFyLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9ydC5oIgog I2luY2x1ZGUgInBvc3RtYXN0ZXIvc3lzbG9nZ2VyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRp b24vYmFzZWJhY2t1cC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgpA QCAtMzMsNiArMzQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvZHNtX2ltcGwuaCIKICNpbmNs dWRlICJzdG9yYWdlL2ZkLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3JlaW5pdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvZWxvZy5oIgogI2luY2x1ZGUgInV0aWxzL3BzX3N0YXR1cy5oIgpAQCAt OTU5LDEyICs5NjEsNDQgQEAgc2VuZERpcihjb25zdCBjaGFyICpwYXRoLCBpbnQgYmFzZXBh dGhsZW4sIGJvb2wgc2l6ZW9ubHksIExpc3QgKnRhYmxlc3BhY2VzLAogCWNoYXIJCXBhdGhi dWZbTUFYUEdQQVRIICogMl07CiAJc3RydWN0IHN0YXQgc3RhdGJ1ZjsKIAlpbnQ2NAkJc2l6 ZSA9IDA7CisJY29uc3QgY2hhciAJKmxhc3REaXI7CQkJLyogU3BsaXQgbGFzdCBkaXIgZnJv bSBwYXJlbnQgcGF0aC4gKi8KKwlib29sIAkJaXNEYkRpciA9IGZhbHNlOwkvKiBEb2VzIHRo aXMgZGlyZWN0b3J5IGNvbnRhaW4gcmVsYXRpb25zPyAqLworCisJLyoKKwkgKiBEZXRlcm1p bmUgaWYgdGhlIGN1cnJlbnQgcGF0aCBpcyBhIGRhdGFiYXNlIGRpcmVjdG9yeSB0aGF0IGNh bgorCSAqIGNvbnRhaW4gcmVsYXRpb25zLgorCSAqCisJICogU3RhcnQgYnkgZmluZGluZyB0 aGUgbG9jYXRpb24gb2YgdGhlIGRlbGltaXRlciBiZXR3ZWVuIHRoZSBwYXJlbnQKKwkgKiBw YXRoIGFuZCB0aGUgY3VycmVudCBwYXRoLgorCSAqLworCWxhc3REaXIgPSBsYXN0X2Rpcl9z ZXBhcmF0b3IocGF0aCk7CisKKwkvKiBEb2VzIHRoaXMgcGF0aCBsb29rIGxpa2UgYSBkYXRh YmFzZSBwYXRoIChpLmUuIGFsbCBkaWdpdHMpPyAqLworCWlmIChsYXN0RGlyICE9IE5VTEwg JiYKKwkJc3Ryc3BuKGxhc3REaXIgKyAxLCAiMDEyMzQ1Njc4OSIpID09IHN0cmxlbihsYXN0 RGlyICsgMSkpCisJeworCQkvKiBQYXJ0IG9mIHBhdGggdGhhdCBjb250YWlucyB0aGUgcGFy ZW50IGRpcmVjdG9yeS4gKi8KKwkJaW50IHBhcmVudFBhdGhMZW4gPSBsYXN0RGlyIC0gcGF0 aDsKKworCQkvKgorCQkgKiBNYXJrIHBhdGggYXMgYSBkYXRhYmFzZSBkaXJlY3RvcnkgaWYg dGhlIHBhcmVudCBwYXRoIGlzIGVpdGhlcgorCQkgKiAkUEdEQVRBL2Jhc2Ugb3IgYSB0YWJs ZXNwYWNlIHZlcnNpb24gcGF0aC4KKwkJICovCisJCWlmIChzdHJuY21wKHBhdGgsICIuL2Jh c2UiLCBwYXJlbnRQYXRoTGVuKSA9PSAwIHx8CisJCQkocGFyZW50UGF0aExlbiA+PSAoc2l6 ZW9mKFRBQkxFU1BBQ0VfVkVSU0lPTl9ESVJFQ1RPUlkpIC0gMSkgJiYKKwkJCSBzdHJuY21w KGxhc3REaXIgLSAoc2l6ZW9mKFRBQkxFU1BBQ0VfVkVSU0lPTl9ESVJFQ1RPUlkpIC0gMSks CisJCQkJCSBUQUJMRVNQQUNFX1ZFUlNJT05fRElSRUNUT1JZLAorCQkJCQkgc2l6ZW9mKFRB QkxFU1BBQ0VfVkVSU0lPTl9ESVJFQ1RPUlkpIC0gMSkgPT0gMCkpCisJCQlpc0RiRGlyID0g dHJ1ZTsKKwl9CiAKIAlkaXIgPSBBbGxvY2F0ZURpcihwYXRoKTsKIAl3aGlsZSAoKGRlID0g UmVhZERpcihkaXIsIHBhdGgpKSAhPSBOVUxMKQogCXsKIAkJaW50CQkJZXhjbHVkZUlkeDsK IAkJYm9vbAkJZXhjbHVkZUZvdW5kOworCQlGb3JrTnVtYmVyCXJlbEZvcmtOdW07CQkvKiBU eXBlIG9mIGZvcmsgaWYgZmlsZSBpcyBhIHJlbGF0aW9uICovCisJCWludAkJCXJlbE9pZENo YXJzOwkvKiBDaGFycyBpbiBmaWxlbmFtZSB0aGF0IGFyZSB0aGUgcmVsIG9pZCAqLwogCiAJ CS8qIFNraXAgc3BlY2lhbCBzdHVmZiAqLwogCQlpZiAoc3RyY21wKGRlLT5kX25hbWUsICIu IikgPT0gMCB8fCBzdHJjbXAoZGUtPmRfbmFtZSwgIi4uIikgPT0gMCkKQEAgLTEwMDgsNiAr MTA0MiwzNiBAQCBzZW5kRGlyKGNvbnN0IGNoYXIgKnBhdGgsIGludCBiYXNlcGF0aGxlbiwg Ym9vbCBzaXplb25seSwgTGlzdCAqdGFibGVzcGFjZXMsCiAJCWlmIChleGNsdWRlRm91bmQp CiAJCQljb250aW51ZTsKIAorCQkvKiBFeGNsdWRlIGFsbCBmb3JrcyBmb3IgdW5sb2dnZWQg dGFibGVzIGV4Y2VwdCB0aGUgaW5pdCBmb3JrICovCisJCWlmIChpc0RiRGlyICYmCisJCQlw YXJzZV9maWxlbmFtZV9mb3Jfbm9udGVtcF9yZWxhdGlvbihkZS0+ZF9uYW1lLCAmcmVsT2lk Q2hhcnMsCisJCQkJCQkJCQkJCQkmcmVsRm9ya051bSkpCisJCXsKKwkJCS8qIE5ldmVyIGV4 Y2x1ZGUgaW5pdCBmb3JrcyAqLworCQkJaWYgKHJlbEZvcmtOdW0gIT0gSU5JVF9GT1JLTlVN KQorCQkJeworCQkJCWNoYXIgaW5pdEZvcmtGaWxlW01BWFBHUEFUSF07CisJCQkJY2hhciBy ZWxPaWRbT0lEQ0hBUlMgKyAxXTsKKworCQkJCS8qCisJCQkJICogSWYgYW55IG90aGVyIHR5 cGUgb2YgZm9yaywgY2hlY2sgaWYgdGhlcmUgaXMgYW4gaW5pdCBmb3JrCisJCQkJICogd2l0 aCB0aGUgc2FtZSBPSUQuIElmIHNvLCB0aGUgZmlsZSBjYW4gYmUgZXhjbHVkZWQuCisJCQkJ ICovCisJCQkJc3RybmNweShyZWxPaWQsIGRlLT5kX25hbWUsIHJlbE9pZENoYXJzKTsKKwkJ CQlzbnByaW50Zihpbml0Rm9ya0ZpbGUsIHNpemVvZihpbml0Rm9ya0ZpbGUpLCAiJXMvJXNf aW5pdCIsCisJCQkJCQkgcGF0aCwgcmVsT2lkKTsKKworCQkJCWlmIChsc3RhdChpbml0Rm9y a0ZpbGUsICZzdGF0YnVmKSA9PSAwKQorCQkJCXsKKwkJCQkJZWxvZyhERUJVRzIsCisJCQkJ CQkgInVubG9nZ2VkIHJlbGF0aW9uIGZpbGUgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gYmFja3Vw IiwKKwkJCQkJCSBkZS0+ZF9uYW1lKTsKKworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9 CisJCX0KKwogCQlzbnByaW50ZihwYXRoYnVmLCBzaXplb2YocGF0aGJ1ZiksICIlcy8lcyIs IHBhdGgsIGRlLT5kX25hbWUpOwogCiAJCS8qIFNraXAgcGdfY29udHJvbCBoZXJlIHRvIGJh Y2sgdXAgaXQgbGFzdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxl L3JlaW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jCmluZGV4IDky MzYzYWU2YWQuLjdiOGExMjUzYzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv ZmlsZS9yZWluaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMK QEAgLTI4LDggKzI4LDYgQEAgc3RhdGljIHZvaWQgUmVzZXRVbmxvZ2dlZFJlbGF0aW9uc0lu VGFibGVzcGFjZURpcihjb25zdCBjaGFyICp0c2Rpcm5hbWUsCiAJCQkJCQkJCQkgIGludCBv cCk7CiBzdGF0aWMgdm9pZCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5EYnNwYWNlRGlyKGNv bnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lLAogCQkJCQkJCQkgICBpbnQgb3ApOwotc3RhdGlj IGJvb2wgcGFyc2VfZmlsZW5hbWVfZm9yX25vbnRlbXBfcmVsYXRpb24oY29uc3QgY2hhciAq bmFtZSwKLQkJCQkJCQkJCWludCAqb2lkY2hhcnMsIEZvcmtOdW1iZXIgKmZvcmspOwogCiB0 eXBlZGVmIHN0cnVjdAogewpAQCAtMzczLDcgKzM3MSw3IEBAIFJlc2V0VW5sb2dnZWRSZWxh dGlvbnNJbkRic3BhY2VEaXIoY29uc3QgY2hhciAqZGJzcGFjZWRpcm5hbWUsIGludCBvcCkK ICAqIHBvcnRpb24gb2YgdGhlIGZpbGVuYW1lLiAgVGhpcyBpcyBjcml0aWNhbCB0byBwcm90 ZWN0IGFnYWluc3QgYSBwb3NzaWJsZQogICogYnVmZmVyIG92ZXJydW4uCiAgKi8KLXN0YXRp YyBib29sCitib29sCiBwYXJzZV9maWxlbmFtZV9mb3Jfbm9udGVtcF9yZWxhdGlvbihjb25z dCBjaGFyICpuYW1lLCBpbnQgKm9pZGNoYXJzLAogCQkJCQkJCQkJRm9ya051bWJlciAqZm9y aykKIHsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNl YmFja3VwLnBsIGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAu cGwKaW5kZXggY2RmNGY1YmUzNy4uNDU1YzdmY2EwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKKysrIGIvc3JjL2Jpbi9wZ19i YXNlYmFja3VwL3QvMDEwX3BnX2Jhc2ViYWNrdXAucGwKQEAgLTQsNyArNCw3IEBAIHVzZSBD d2Q7CiB1c2UgQ29uZmlnOwogdXNlIFBvc3RncmVzTm9kZTsKIHVzZSBUZXN0TGliOwotdXNl IFRlc3Q6Ok1vcmUgdGVzdHMgPT4gNzk7Cit1c2UgVGVzdDo6TW9yZSB0ZXN0cyA9PiA4NzsK IAogcHJvZ3JhbV9oZWxwX29rKCdwZ19iYXNlYmFja3VwJyk7CiBwcm9ncmFtX3ZlcnNpb25f b2soJ3BnX2Jhc2ViYWNrdXAnKTsKQEAgLTY2LDYgKzY2LDE2IEBAIGZvcmVhY2ggbXkgJGZp bGVuYW1lICgKICMgcG9zaXRpdmUuCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdT RUxFQ1QgMTsnKTsKIAorIyBDcmVhdGUgYW4gdW5sb2dnZWQgdGFibGUgdG8gdGVzdCB0aGF0 IGZvcmtzIG90aGVyIHRoYW4gaW5pdCBhcmUgbm90IGNvcGllZC4KKyRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgJ0NSRUFURSBVTkxPR0dFRCBUQUJMRSBiYXNlX3VubG9nZ2VkIChp ZCBpbnQpJyk7CisKK215ICRiYXNlVW5sb2dnZWRQYXRoID0gJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCXF7c2VsZWN0IHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCdiYXNlX3VubG9n Z2VkJyl9KTsKKworIyBNYWtlIHN1cmUgbWFpbiBhbmQgaW5pdCBmb3JrcyBleGlzdAorb2so LWYgIiRwZ2RhdGEvJHtiYXNlVW5sb2dnZWRQYXRofV9pbml0IiwgJ3VubG9nZ2VkIGluaXQg Zm9yayBpbiBiYXNlJyk7CitvaygtZiAiJHBnZGF0YS8kYmFzZVVubG9nZ2VkUGF0aCIsICd1 bmxvZ2dlZCBtYWluIGZvcmsgaW4gYmFzZScpOworCiAkbm9kZS0+Y29tbWFuZF9vayhbICdw Z19iYXNlYmFja3VwJywgJy1EJywgIiR0ZW1wZGlyL2JhY2t1cCIsICctWCcsICdub25lJyBd LAogCSdwZ19iYXNlYmFja3VwIHJ1bnMnKTsKIG9rKC1mICIkdGVtcGRpci9iYWNrdXAvUEdf VkVSU0lPTiIsICdiYWNrdXAgd2FzIGNyZWF0ZWQnKTsKQEAgLTk2LDYgKzEwNiwxMiBAQCBm b3JlYWNoIG15ICRmaWxlbmFtZSAoCiAJb2soIS1mICIkdGVtcGRpci9iYWNrdXAvJGZpbGVu YW1lIiwgIiRmaWxlbmFtZSBub3QgY29waWVkIik7CiB9CiAKKyMgVW5sb2dnZWQgcmVsYXRp b24gZm9ya3Mgb3RoZXIgdGhhbiBpbml0IHNob3VsZCBub3QgYmUgY29waWVkCitvaygtZiAi JHRlbXBkaXIvYmFja3VwLyR7YmFzZVVubG9nZ2VkUGF0aH1faW5pdCIsCisJJ3VubG9nZ2Vk IGluaXQgZm9yayBpbiBiYWNrdXAnKTsKK29rKCEtZiAiJHRlbXBkaXIvYmFja3VwLyRiYXNl VW5sb2dnZWRQYXRoIiwKKwkndW5sb2dnZWQgbWFpbiBmb3JrIG5vdCBpbiBiYWNrdXAnKTsK KwogIyBNYWtlIHN1cmUgZXhpc3RpbmcgYmFja3VwX2xhYmVsIHdhcyBpZ25vcmVkLgogaXNu dChzbHVycF9maWxlKCIkdGVtcGRpci9iYWNrdXAvYmFja3VwX2xhYmVsIiksCiAJJ0RPTk9U Q09QWScsICdleGlzdGluZyBiYWNrdXBfbGFiZWwgbm90IGNvcGllZCcpOwpAQCAtMTQ3LDcg KzE2Myw3IEBAIHVubGluayAiJHBnZGF0YS8kc3VwZXJsb25nbmFtZSI7CiAjIHNraXAgb24g V2luZG93cy4KIFNLSVA6CiB7Ci0Jc2tpcCAic3ltbGlua3Mgbm90IHN1cHBvcnRlZCBvbiBX aW5kb3dzIiwgMTEgaWYgKCR3aW5kb3dzX29zKTsKKwlza2lwICJzeW1saW5rcyBub3Qgc3Vw cG9ydGVkIG9uIFdpbmRvd3MiLCAxNSBpZiAoJHdpbmRvd3Nfb3MpOwogCiAJIyBNb3ZlIHBn X3JlcGxzbG90IG91dCBvZiAkcGdkYXRhIGFuZCBjcmVhdGUgYSBzeW1saW5rIHRvIGl0Lgog CSRub2RlLT5zdG9wOwpAQCAtMTc3LDYgKzE5MywxOSBAQCBTS0lQOgogCW15IEB0YmxzcGNf dGFycyA9IGdsb2IgIiR0ZW1wZGlyL3RhcmJhY2t1cDIvWzAtOV0qLnRhciI7CiAJaXMoc2Nh bGFyKEB0YmxzcGNfdGFycyksIDEsICdvbmUgdGFibGVzcGFjZSB0YXIgd2FzIGNyZWF0ZWQn KTsKIAorCSMgQ3JlYXRlIGFuIHVubG9nZ2VkIHRhYmxlIHRvIHRlc3QgdGhhdCBmb3JrcyBv dGhlciB0aGFuIGluaXQgYXJlIG5vdCBjb3BpZWQuCisJJG5vZGUtPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQknQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIHRibHNwYzFfdW5sb2dnZWQgKGlk IGludCkgVEFCTEVTUEFDRSB0YmxzcGMxOycpOworCisJbXkgJHRibHNwYzFVbmxvZ2dlZFBh dGggPSAkbm9kZS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxe3NlbGVjdCBwZ19yZWxh dGlvbl9maWxlcGF0aCgndGJsc3BjMV91bmxvZ2dlZCcpfSk7CisKKwkjIE1ha2Ugc3VyZSBt YWluIGFuZCBpbml0IGZvcmtzIGV4aXN0CisJb2soLWYgIiRwZ2RhdGEvJHt0YmxzcGMxVW5s b2dnZWRQYXRofV9pbml0IiwKKwkJJ3VubG9nZ2VkIGluaXQgZm9yayBpbiB0YWJsZXNwYWNl Jyk7CisJb2soLWYgIiRwZ2RhdGEvJHRibHNwYzFVbmxvZ2dlZFBhdGgiLAorCQkndW5sb2dn ZWQgbWFpbiBmb3JrIGluIHRhYmxlc3BhY2UnKTsKKwogCSRub2RlLT5jb21tYW5kX2ZhaWxz KAogCQlbICdwZ19iYXNlYmFja3VwJywgJy1EJywgIiR0ZW1wZGlyL2JhY2t1cDEiLCAnLUZw JyBdLAogCQkncGxhaW4gZm9ybWF0IHdpdGggdGFibGVzcGFjZXMgZmFpbHMgd2l0aG91dCB0 YWJsZXNwYWNlIG1hcHBpbmcnKTsKQEAgLTE5NSwxMSArMjI0LDIwIEBAIFNLSVA6CiAJCSJ0 YWJsZXNwYWNlIHN5bWxpbmsgd2FzIHVwZGF0ZWQiKTsKIAljbG9zZWRpciAkZGg7CiAKKwkj IFVubG9nZ2VkIHJlbGF0aW9uIGZvcmtzIG90aGVyIHRoYW4gaW5pdCBzaG91bGQgbm90IGJl IGNvcGllZAorCW15ICgkdGJsc3BjMVVubG9nZ2VkQmFja3VwUGF0aCkgPSAkdGJsc3BjMVVu bG9nZ2VkUGF0aCA9fiAvW15cL10qXC9bXlwvXSpcL1teXC9dKiQvZzsKKworCW9rKC1mICIk dGVtcGRpci90YmFja3VwL3RibHNwYzEvJHt0YmxzcGMxVW5sb2dnZWRCYWNrdXBQYXRofV9p bml0IiwKKwkJJ3VubG9nZ2VkIGluaXQgZm9yayBpbiB0YWJsZXNwYWNlIGJhY2t1cCcpOwor CW9rKCEtZiAiJHRlbXBkaXIvdGJhY2t1cC90YmxzcGMxLyR0YmxzcGMxVW5sb2dnZWRCYWNr dXBQYXRoIiwKKwkJJ3VubG9nZ2VkIG1haW4gZm9yayBub3QgaW4gdGFibGVzcGFjZSBiYWNr dXAnKTsKKwogCW9rKCAtZCAiJHRlbXBkaXIvYmFja3VwMS9wZ19yZXBsc2xvdCIsCiAJCSdw Z19yZXBsc2xvdCBzeW1saW5rIGNvcGllZCBhcyBkaXJlY3RvcnknKTsKIAogCW1rZGlyICIk dGVtcGRpci90Ymw9c3BjMiI7CiAJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBUQUJMRSB0ZXN0MTsiKTsKKwkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9Q IFRBQkxFIHRibHNwYzFfdW5sb2dnZWQ7Iik7CiAJJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiRFJPUCBUQUJMRVNQQUNFIHRibHNwYzE7Iik7CiAJJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCQkiQ1JFQVRFIFRBQkxFU1BBQ0UgdGJsc3BjMiBMT0NBVElPTiAnJHNo b3J0ZXJfdGVtcGRpci90Ymw9c3BjMic7Iik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3JlaW5pdC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWluaXQuaAppbmRleCBh ZGRkYTJjMGVhLi41YzM0Zjg4Yjk1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdl L3JlaW5pdC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVpbml0LmgKQEAgLTE2LDYg KzE2LDggQEAKICNkZWZpbmUgUkVJTklUX0gKIAogZXh0ZXJuIHZvaWQgUmVzZXRVbmxvZ2dl ZFJlbGF0aW9ucyhpbnQgb3ApOworZXh0ZXJuIGJvb2wgcGFyc2VfZmlsZW5hbWVfZm9yX25v bnRlbXBfcmVsYXRpb24oCisJY29uc3QgY2hhciAqbmFtZSwgaW50ICpvaWRjaGFycywgRm9y a051bWJlciAqZm9yayk7CiAKICNkZWZpbmUgVU5MT0dHRURfUkVMQVRJT05fQ0xFQU5VUAkJ MHgwMDAxCiAjZGVmaW5lIFVOTE9HR0VEX1JFTEFUSU9OX0lOSVQJCQkweDAwMDIK --------------E5E00521094701BDD5E981B2--