Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eOtNF-0005TV-Fg for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Dec 2017 22:50:05 +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 1eOtNE-0006Hg-FO for pgsql-hackers@arkaria.postgresql.org; Tue, 12 Dec 2017 22:50:04 +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 1eOtNE-0006HW-6n for pgsql-hackers@lists.postgresql.org; Tue, 12 Dec 2017 22:50:04 +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 1eOtN9-0005Zk-IG for pgsql-hackers@postgresql.org; Tue, 12 Dec 2017 22:50:03 +0000 Received: from Davids-MacBook.local (c-68-33-78-252.hsd1.md.comcast.net [68.33.78.252]) (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 D98E454669 for ; Tue, 12 Dec 2017 22:49:55 +0000 (UTC) To: PostgreSQL-development From: David Steele Subject: PATCH: Exclude unlogged tables from base backups Message-ID: <04791bab-cb04-ba43-e9c0-664a4c1ffb2c@pgmasters.net> Date: Tue, 12 Dec 2017 17:49:54 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------6F7DD02DB88E048ED34FF106" 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. --------------6F7DD02DB88E048ED34FF106 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Including unlogged relations in base backups takes up space and is wasteful since they are truncated during backup recovery. The attached patches exclude unlogged relations from base backups except for the init fork, which is required to recreate the main fork during recovery. * exclude-unlogged-v1-01.patch Some refactoring of reinit.c was required to reduce code duplication but the coverage report showed that most of the interesting parts of reinit.c were not being tested. This patch adds coverage for reinit.c. * exclude-unlogged-v1-02.patch Refactor reinit.c to allow other modules to identify and work with unlogged relation forks. * exclude-unlogged-v1-03.patch Exclude unlogged relation forks (except init) from pg_basebackup to save space (and time). I decided not to try and document unlogged exclusions in the continuous backup documentation yet (they are noted in the protocol docs). I would like to get some input on whether the community thinks this is a good idea. It's a non-trivial procedure that would be easy to misunderstand and does not affect the quality of the backup other than using less space. Thoughts? I'll add these patches to the next CF. -- -David david@pgmasters.net --------------6F7DD02DB88E048ED34FF106 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="exclude-unlogged-v1-01.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exclude-unlogged-v1-01.patch" ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE0X3VubG9nZ2VkX3JlaW5pdC5w bCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDE0X3VubG9nZ2VkX3JlaW5pdC5wbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zNWZlYmE2OWEwCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTRfdW5sb2dnZWRfcmVpbml0LnBsCkBA IC0wLDAgKzEsMTE3IEBACisjIFRlc3RzIHRoYXQgdW5sb2dnZWQgdGFibGVzIGFyZSBwcm9w ZXJseSByZWluaXRpYWxpemVkIGFmdGVyIGEgY3Jhc2guCisjCisjIFRoZSBiZWhhdmlvciBz aG91bGQgYmUgdGhlIHNhbWUgd2hlbiByZXN0b3JpbmcgZnJvbSBhIGJhY2t1cCBidXQgdGhh dCBpcyBub3QKKyMgdGVzdGVkIGhlcmUgKHlldCkuCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzOwordXNlIFBvc3RncmVzTm9kZTsKK3VzZSBUZXN0TGliOwordXNlIFRlc3Q6Ok1vcmUg dGVzdHMgPT4gMTY7CisKKyMgSW5pdGlhbGl6ZSBub2RlIHdpdGhvdXQgcmVwbGljYXRpb24g c2V0dGluZ3MKK215ICRub2RlID0gZ2V0X25ld19ub2RlKCdtYWluJyk7CisKKyRub2RlLT5p bml0OworJG5vZGUtPnN0YXJ0OworbXkgJHBnZGF0YSA9ICRub2RlLT5kYXRhX2RpcjsKKwor IyBDcmVhdGUgYW4gdW5sb2dnZWQgdGFibGUgdG8gdGVzdCB0aGF0IGZvcmtzIG90aGVyIHRo YW4gaW5pdCBhcmUgbm90IGNvcGllZAorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAn Q1JFQVRFIFVOTE9HR0VEIFRBQkxFIGJhc2VfdW5sb2dnZWQgKGlkIGludCknKTsKKworbXkg JGJhc2VVbmxvZ2dlZFBhdGggPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJcXtz ZWxlY3QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ2Jhc2VfdW5sb2dnZWQnKX0pOworCisjIE1h a2Ugc3VyZSBtYWluIGFuZCBpbml0IGZvcmtzIGV4aXN0CitvaygtZiAiJHBnZGF0YS8ke2Jh c2VVbmxvZ2dlZFBhdGh9X2luaXQiLCAnaW5pdCBmb3JrIGluIGJhc2UnKTsKK29rKC1mICIk cGdkYXRhLyRiYXNlVW5sb2dnZWRQYXRoIiwgJ21haW4gZm9yayBpbiBiYXNlJyk7CisKKyMg VGhlIGZvbGxvd2luZyB0ZXN0cyB0ZXN0IHN5bWxpbmtzLiBXaW5kb3dzIGRvZXNuJ3QgaGF2 ZSBzeW1saW5rcywgc28KKyMgc2tpcCBvbiBXaW5kb3dzLgorbXkgJHRhYmxlc3BhY2VEaXIg PSB1bmRlZjsKK215ICR0czFVbmxvZ2dlZFBhdGggPSB1bmRlZjsKKworU0tJUDoKK3sKKwlz a2lwICJzeW1saW5rcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiLCAyIGlmICgkd2luZG93 c19vcyk7CisKKyAgICAjIENyZWF0ZSB1bmxvZ2dlZCB0YWJsZXMgaW4gYSB0YWJsZXNwYWNl CisgICAgJHRhYmxlc3BhY2VEaXIgPSBUZXN0TGliOjp0ZW1wZGlyIC4gIi90czEiOworCisg ICAgbWtkaXIoJHRhYmxlc3BhY2VEaXIpCisgICAgICAgIG9yIGRpZSAidW5hYmxlIHRvIG1r ZGlyIFwiJHRhYmxlc3BhY2VEaXJcIiI7CisKKyAgICAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisgICAgICAgICJDUkVBVEUgVEFCTEVTUEFDRSB0czEgTE9DQVRJT04gJyR0YWJs ZXNwYWNlRGlyJyIpOworICAgICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKyAgICAg ICAgJ0NSRUFURSBVTkxPR0dFRCBUQUJMRSB0czFfdW5sb2dnZWQgKGlkIGludCkgVEFCTEVT UEFDRSB0czEnKTsKKworICAgICR0czFVbmxvZ2dlZFBhdGggPSAkbm9kZS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisgICAgCXF7c2VsZWN0IHBnX3JlbGF0aW9uX2ZpbGVwYXRoKCd0czFf dW5sb2dnZWQnKX0pOworCisgICAgIyBNYWtlIHN1cmUgbWFpbiBhbmQgaW5pdCBmb3JrcyBl eGlzdAorICAgIG9rKC1mICIkcGdkYXRhLyR7dHMxVW5sb2dnZWRQYXRofV9pbml0IiwgJ2lu aXQgZm9yayBpbiB0YWJsZXNwYWNlJyk7CisgICAgb2soLWYgIiRwZ2RhdGEvJHRzMVVubG9n Z2VkUGF0aCIsICdtYWluIGZvcmsgaW4gdGFibGVzcGFjZScpOworfQorCisjIENyYXNoIHRo ZSBwb3N0bWFzdGVyCiskbm9kZS0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKyMgV3JpdGUgZm9y a3MgdG8gdGVzdCB0aGF0IHRoZXkgYXJlIHJlbW92ZWQgZHVyaW5nIHJlY292ZXJ5Ciskbm9k ZS0+Y29tbWFuZF9vayhbJ3RvdWNoJywgIiRwZ2RhdGEvJHtiYXNlVW5sb2dnZWRQYXRofV92 bSJdLAorCSd0b3VjaCB2bSBmb3JrIGluIGJhc2UnKTsKKyRub2RlLT5jb21tYW5kX29rKFsn dG91Y2gnLCAiJHBnZGF0YS8ke2Jhc2VVbmxvZ2dlZFBhdGh9X2ZzbSJdLAorCSd0b3VjaCBm c20gZm9yayBpbiBiYXNlJyk7CisKKyMgUmVtb3ZlIG1haW4gZm9yayB0byB0ZXN0IHRoYXQg aXQgaXMgcmVjb3BpZWQgZnJvbSBpbml0Cit1bmxpbmsoIiRwZ2RhdGEvJHtiYXNlVW5sb2dn ZWRQYXRofSIpCisgICAgb3IgZGllICJ1bmFibGUgdG8gcmVtb3ZlIFwiJHtiYXNlVW5sb2dn ZWRQYXRofVwiIjsKKworIyBUaGUgZm9sbG93aW5nIHRlc3RzIHRlc3Qgc3ltbGlua3MuIFdp bmRvd3MgZG9lc24ndCBoYXZlIHN5bWxpbmtzLCBzbworIyBza2lwIG9uIFdpbmRvd3MuCitT S0lQOgoreworCXNraXAgInN5bWxpbmtzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyIsIDIg aWYgKCR3aW5kb3dzX29zKTsKKworICAgICMgV3JpdGUgZm9ya3MgdG8gdGVzdCB0aGF0IHRo ZXkgYXJlIHJlbW92ZWQgYnkgcmVjb3ZlcnkKKyAgICAkbm9kZS0+Y29tbWFuZF9vayhbJ3Rv dWNoJywgIiRwZ2RhdGEvJHt0czFVbmxvZ2dlZFBhdGh9X3ZtIl0sCisgICAgCSd0b3VjaCB2 bSBmb3JrIGluIHRhYmxlc3BhY2UnKTsKKyAgICAkbm9kZS0+Y29tbWFuZF9vayhbJ3RvdWNo JywgIiRwZ2RhdGEvJHt0czFVbmxvZ2dlZFBhdGh9X2ZzbSJdLAorICAgIAkndG91Y2ggZnNt IGZvcmsgaW4gdGFibGVzcGFjZScpOworCisgICAgIyBSZW1vdmUgbWFpbiBmb3JrIHRvIHRl c3QgdGhhdCBpdCBpcyByZWNvcGllZCBmcm9tIGluaXQKKyAgICB1bmxpbmsoIiRwZ2RhdGEv JHt0czFVbmxvZ2dlZFBhdGh9IikKKyAgICAgICAgb3IgZGllICJ1bmFibGUgdG8gcmVtb3Zl IFwiJHt0czFVbmxvZ2dlZFBhdGh9XCIiOworfQorCisjIFN0YXJ0IHRoZSBwb3N0bWFzdGVy Ciskbm9kZS0+c3RhcnQ7CisKKyMgQ2hlY2sgdW5sb2dnZWQgdGFibGUgaW4gYmFzZQorb2so LWYgIiRwZ2RhdGEvJHtiYXNlVW5sb2dnZWRQYXRofV9pbml0IiwgJ2luaXQgZm9yayBpbiBi YXNlJyk7CitvaygtZiAiJHBnZGF0YS8kYmFzZVVubG9nZ2VkUGF0aCIsICdtYWluIGZvcmsg aW4gYmFzZScpOworb2soIS1mICIkcGdkYXRhLyR7YmFzZVVubG9nZ2VkUGF0aH1fdm0iLCAn dm0gZm9yayBub3QgaW4gYmFzZScpOworb2soIS1mICIkcGdkYXRhLyR7YmFzZVVubG9nZ2Vk UGF0aH1fZnNtIiwgJ2ZzbSBmb3JrIG5vdCBpbiBiYXNlJyk7CisKKyMgRHJvcCB1bmxvZ2dl ZCB0YWJsZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBUQUJMRSBiYXNl X3VubG9nZ2VkJyk7CisKKyMgVGhlIGZvbGxvd2luZyB0ZXN0cyB0ZXN0IHN5bWxpbmtzLiBX aW5kb3dzIGRvZXNuJ3QgaGF2ZSBzeW1saW5rcywgc28KKyMgc2tpcCBvbiBXaW5kb3dzLgor U0tJUDoKK3sKKwlza2lwICJzeW1saW5rcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MiLCA0 IGlmICgkd2luZG93c19vcyk7CisKKyAgICAjIENoZWNrIHVubG9nZ2VkIHRhYmxlIGluIHRh Ymxlc3BhY2UKKyAgICBvaygtZiAiJHBnZGF0YS8ke3RzMVVubG9nZ2VkUGF0aH1faW5pdCIs ICdpbml0IGZvcmsgaW4gdGFibGVzcGFjZScpOworICAgIG9rKC1mICIkcGdkYXRhLyR0czFV bmxvZ2dlZFBhdGgiLCAnbWFpbiBmb3JrIGluIHRhYmxlc3BhY2UnKTsKKyAgICBvayghLWYg IiRwZ2RhdGEvJHt0czFVbmxvZ2dlZFBhdGh9X3ZtIiwgJ3ZtIGZvcmsgbm90IGluIHRhYmxl c3BhY2UnKTsKKyAgICBvayghLWYgIiRwZ2RhdGEvJHt0czFVbmxvZ2dlZFBhdGh9X2ZzbSIs ICdmc20gZm9yayBub3QgaW4gdGFibGVzcGFjZScpOworCisgICAgIyBEcm9wIHVubG9nZ2Vk IHRhYmxlCisgICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBUQUJMRSB0 czFfdW5sb2dnZWQnKTsKKworICAgICMgRHJvcCB0YWJsZXNwYWNlCisgICAgJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBUQUJMRVNQQUNFIHRzMScpOworICAgIHJtZGly KCR0YWJsZXNwYWNlRGlyKQorICAgICAgICBvciBkaWUgInVuYWJsZSB0byBybWRpciBcIiR0 YWJsZXNwYWNlRGlyXCIiOworfQo= --------------6F7DD02DB88E048ED34FF106 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="exclude-unlogged-v1-02.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exclude-unlogged-v1-02.patch" ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvZmlsZS9yZWluaXQuYwppbmRleCAwMDY3OGNiMTgyLi4wYzI1Njhl M2Y1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvcmVpbml0LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL3JlaW5pdC5jCkBAIC0yMSw3ICsyMSw2IEBA CiAjaW5jbHVkZSAic3RvcmFnZS9jb3B5ZGlyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvcmVpbml0LmgiCi0jaW5jbHVkZSAidXRpbHMvaHNlYXJj aC5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0YXRpYyB2b2lkIFJlc2V0 VW5sb2dnZWRSZWxhdGlvbnNJblRhYmxlc3BhY2VEaXIoY29uc3QgY2hhciAqdHNkaXJuYW1l LApAQCAtMTQ2LDYgKzE0NSw5OSBAQCBSZXNldFVubG9nZ2VkUmVsYXRpb25zSW5UYWJsZXNw YWNlRGlyKGNvbnN0IGNoYXIgKnRzZGlybmFtZSwgaW50IG9wKQogfQogCiAvKgorICogRmlu ZCBhbGwgdW5sb2dnZWQgcmVsYXRpb25zIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IGFu ZCByZXR1cm4gdGhlaXIgT0lEcy4KKyAqCisgKiBJdCdzIHBvc3NpYmxlIHRoYXQgc29tZW9u ZSBjb3VsZCBjcmVhdGUgYSB0b24gb2YgdW5sb2dnZWQgcmVsYXRpb25zIGluIHRoZQorICog c2FtZSBkYXRhYmFzZSAmIHRhYmxlc3BhY2UsIHNvIHdlJ2QgYmV0dGVyIHVzZSBhIGhhc2gg dGFibGUgcmF0aGVyIHRoYW4gYW4KKyAqIGFycmF5IG9yIGxpbmtlZCBsaXN0IHRvIGtlZXAg dHJhY2sgb2Ygd2hpY2ggZmlsZXMgbmVlZCB0byBiZSByZXNldC4KKyAqIE90aGVyd2lzZSwg c2VhcmNoIG9wZXJhdGlvbnMgd291bGQgYmUgTyhuXjIpLgorICovCitIVEFCICoKK1Jlc2V0 VW5sb2dnZWRSZWxhdGlvbnNIYXNoKGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lKQorewor CURJUiAqZGJzcGFjZV9kaXI7CisJc3RydWN0IGRpcmVudCAqZGU7CisJSFRBQiAqaGFzaCA9 IE5VTEw7CisKKwkvKiBTY2FuIHRoZSBkaXJlY3RvcnkuICovCisJZGJzcGFjZV9kaXIgPSBB bGxvY2F0ZURpcihkYnNwYWNlZGlybmFtZSk7CisJd2hpbGUgKChkZSA9IFJlYWREaXIoZGJz cGFjZV9kaXIsIGRic3BhY2VkaXJuYW1lKSkgIT0gTlVMTCkKKwl7CisJCUZvcmtOdW1iZXIJ Zm9ya051bTsKKwkJaW50CQkJb2lkY2hhcnM7CisJCXVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5 IGVudDsKKworCQkvKiBTa2lwIGFueXRoaW5nIHRoYXQgZG9lc24ndCBsb29rIGxpa2UgYSBy ZWxhdGlvbiBkYXRhIGZpbGUuICovCisJCWlmICghcGFyc2VfZmlsZW5hbWVfZm9yX25vbnRl bXBfcmVsYXRpb24oZGUtPmRfbmFtZSwgJm9pZGNoYXJzLAorCQkJCQkJCQkJCQkJICZmb3Jr TnVtKSkKKwkJCWNvbnRpbnVlOworCisJCS8qIEFsc28gc2tpcCBpdCB1bmxlc3MgdGhpcyBp cyB0aGUgaW5pdCBmb3JrLiAqLworCQlpZiAoZm9ya051bSAhPSBJTklUX0ZPUktOVU0pCisJ CQljb250aW51ZTsKKworCQkvKiBDcmVhdGUgdGhlIGhhc2ggdGFibGUgaWYgaXQgaGFzIG5v dCBiZWVuIGNyZWF0ZWQgYWxyZWFkeS4gKi8KKwkJaWYgKCFoYXNoKQorCQl7CisJCQlIQVNI Q1RMIGN0bDsKKworCQkJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJCWN0bC5r ZXlzaXplID0gc2l6ZW9mKHVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5KTsKKwkJCWN0bC5lbnRy eXNpemUgPSBzaXplb2YodW5sb2dnZWRfcmVsYXRpb25fZW50cnkpOworCQkJaGFzaCA9IGhh c2hfY3JlYXRlKCJ1bmxvZ2dlZCBoYXNoIiwgMzIsICZjdGwsIEhBU0hfRUxFTSk7CisJCX0K KworCQkvKgorCQkgKiBQdXQgdGhlIE9JRCBwb3J0aW9uIG9mIHRoZSBuYW1lIGludG8gdGhl IGhhc2ggdGFibGUsIGlmIGl0CisJCSAqIGlzbid0IGFscmVhZHkuCisJCSAqLworCQltZW1z ZXQoZW50Lm9pZCwgMCwgc2l6ZW9mKGVudC5vaWQpKTsKKwkJbWVtY3B5KGVudC5vaWQsIGRl LT5kX25hbWUsIG9pZGNoYXJzKTsKKwkJaGFzaF9zZWFyY2goaGFzaCwgJmVudCwgSEFTSF9F TlRFUiwgTlVMTCk7CisJfQorCisJLyogRG9uZSB3aXRoIHRoZSBmaXJzdCBwYXNzLiAqLwor CUZyZWVEaXIoZGJzcGFjZV9kaXIpOworCisJcmV0dXJuIGhhc2g7Cit9CisKKy8qCisgKiBE ZXRlcm1pbmUgd2hldGhlciB0aGUgc3BlY2lmaWVkIGZpbGUgaXMgYW4gdW5sb2dnZWQgcmVs YXRpb24gZm9yay4KKyAqCisgKiBJZiBub3QgYW4gdW5sb2dnZWQgcmVsYXRpb24gdGhlbiBy ZXR1cm4gbm90VW5sb2dnZWQsIG90aGVyd2lzZSByZXR1cm4KKyAqIHVubG9nZ2VkSW5pdCBp ZiBhbiB1bmxvZ2dlZCBpbml0IGZvcmsgYW5kIHVubG9nZ2VkT3RoZXIgaWYgYW55IG90aGVy IHVubG9nZ2VkCisgKiBmb3JrLgorICovCitVbmxvZ2dlZFJlbGF0aW9uRm9yaworUmVzZXRV bmxvZ2dlZFJlbGF0aW9uc01hdGNoKEhUQUIgKmhhc2gsIGNvbnN0IGNoYXIgKmZpbGUpCit7 CisJRm9ya051bWJlcglmb3JrTnVtOworCWludAkJCW9pZGNoYXJzOworCWJvb2wgCQlmb3Vu ZDsKKwl1bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSBlbnQ7CisKKwkvKiBJZiBpdCdzIG5vdCBh IHJlbGF0aW9uIHRoZW4gaXQncyBub3QgdW5sb2dnZWQuICovCisJaWYgKCFwYXJzZV9maWxl bmFtZV9mb3Jfbm9udGVtcF9yZWxhdGlvbihmaWxlLCAmb2lkY2hhcnMsICZmb3JrTnVtKSkK KwkJcmV0dXJuIG5vdFVubG9nZ2VkOworCisJLyogQW4gdW5sb2dnZWQgaW5pdCBmb3JrLiAq LworCWlmIChmb3JrTnVtID09IElOSVRfRk9SS05VTSkKKwkJcmV0dXJuIHVubG9nZ2VkSW5p dDsKKworCS8qIFNlZSB3aGV0aGVyIHRoZSBPSUQgcG9ydGlvbiBvZiB0aGUgbmFtZSBzaG93 cyB1cCBpbiB0aGUgaGFzaCB0YWJsZS4gKi8KKwltZW1zZXQoZW50Lm9pZCwgMCwgc2l6ZW9m KGVudC5vaWQpKTsKKwltZW1jcHkoZW50Lm9pZCwgZmlsZSwgb2lkY2hhcnMpOworCWhhc2hf c2VhcmNoKGhhc2gsICZlbnQsIEhBU0hfRklORCwgJmZvdW5kKTsKKworCS8qIElmIGZvdW5k IHRoaXMgaXMgYW5vdGhlciBmb3JrIG9mIGFuIHVubG9nZ2VkIHRhYmxlIChidXQgbm90IGlu aXQpLiAqLworCWlmIChmb3VuZCkKKwkJcmV0dXJuIHVubG9nZ2VkT3RoZXI7CisKKwlyZXR1 cm4gbm90VW5sb2dnZWQ7Cit9CisKKy8qCiAgKiBQcm9jZXNzIG9uZSBwZXItZGJzcGFjZSBk aXJlY3RvcnkgZm9yIFJlc2V0VW5sb2dnZWRSZWxhdGlvbnMKICAqLwogc3RhdGljIHZvaWQK QEAgLTE2Niw1OCArMjU4LDEzIEBAIFJlc2V0VW5sb2dnZWRSZWxhdGlvbnNJbkRic3BhY2VE aXIoY29uc3QgY2hhciAqZGJzcGFjZWRpcm5hbWUsIGludCBvcCkKIAlpZiAoKG9wICYgVU5M T0dHRURfUkVMQVRJT05fQ0xFQU5VUCkgIT0gMCkKIAl7CiAJCUhUQUIJICAgKmhhc2g7Ci0J CUhBU0hDVEwJCWN0bDsKLQotCQkvKgotCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgc29tZW9u ZSBjb3VsZCBjcmVhdGUgYSB0b24gb2YgdW5sb2dnZWQgcmVsYXRpb25zCi0JCSAqIGluIHRo ZSBzYW1lIGRhdGFiYXNlICYgdGFibGVzcGFjZSwgc28gd2UnZCBiZXR0ZXIgdXNlIGEgaGFz aCB0YWJsZQotCQkgKiByYXRoZXIgdGhhbiBhbiBhcnJheSBvciBsaW5rZWQgbGlzdCB0byBr ZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVzCi0JCSAqIG5lZWQgdG8gYmUgcmVzZXQuICBPdGhl cndpc2UsIHRoaXMgY2xlYW51cCBvcGVyYXRpb24gd291bGQgYmUKLQkJICogTyhuXjIpLgot CQkgKi8KLQkJbWVtc2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKLQkJY3RsLmtleXNpemUg PSBzaXplb2YodW5sb2dnZWRfcmVsYXRpb25fZW50cnkpOwotCQljdGwuZW50cnlzaXplID0g c2l6ZW9mKHVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5KTsKLQkJaGFzaCA9IGhhc2hfY3JlYXRl KCJ1bmxvZ2dlZCBoYXNoIiwgMzIsICZjdGwsIEhBU0hfRUxFTSk7Ci0KLQkJLyogU2NhbiB0 aGUgZGlyZWN0b3J5LiAqLwotCQlkYnNwYWNlX2RpciA9IEFsbG9jYXRlRGlyKGRic3BhY2Vk aXJuYW1lKTsKLQkJd2hpbGUgKChkZSA9IFJlYWREaXIoZGJzcGFjZV9kaXIsIGRic3BhY2Vk aXJuYW1lKSkgIT0gTlVMTCkKLQkJewotCQkJRm9ya051bWJlcglmb3JrTnVtOwotCQkJaW50 CQkJb2lkY2hhcnM7Ci0JCQl1bmxvZ2dlZF9yZWxhdGlvbl9lbnRyeSBlbnQ7Ci0KLQkJCS8q IFNraXAgYW55dGhpbmcgdGhhdCBkb2Vzbid0IGxvb2sgbGlrZSBhIHJlbGF0aW9uIGRhdGEg ZmlsZS4gKi8KLQkJCWlmICghcGFyc2VfZmlsZW5hbWVfZm9yX25vbnRlbXBfcmVsYXRpb24o ZGUtPmRfbmFtZSwgJm9pZGNoYXJzLAotCQkJCQkJCQkJCQkJCSAmZm9ya051bSkpCi0JCQkJ Y29udGludWU7Ci0KLQkJCS8qIEFsc28gc2tpcCBpdCB1bmxlc3MgdGhpcyBpcyB0aGUgaW5p dCBmb3JrLiAqLwotCQkJaWYgKGZvcmtOdW0gIT0gSU5JVF9GT1JLTlVNKQotCQkJCWNvbnRp bnVlOwogCi0JCQkvKgotCQkJICogUHV0IHRoZSBPSUQgcG9ydGlvbiBvZiB0aGUgbmFtZSBp bnRvIHRoZSBoYXNoIHRhYmxlLCBpZiBpdAotCQkJICogaXNuJ3QgYWxyZWFkeS4KLQkJCSAq LwotCQkJbWVtc2V0KGVudC5vaWQsIDAsIHNpemVvZihlbnQub2lkKSk7Ci0JCQltZW1jcHko ZW50Lm9pZCwgZGUtPmRfbmFtZSwgb2lkY2hhcnMpOwotCQkJaGFzaF9zZWFyY2goaGFzaCwg JmVudCwgSEFTSF9FTlRFUiwgTlVMTCk7Ci0JCX0KLQotCQkvKiBEb25lIHdpdGggdGhlIGZp cnN0IHBhc3MuICovCi0JCUZyZWVEaXIoZGJzcGFjZV9kaXIpOworCQkvKiBCdWlsZCBhIGhh c2ggdGFibGUgb2YgYWxsIHVubG9nZ2VkIHJlbGF0aW9ucy4gKi8KKwkJaGFzaCA9IFJlc2V0 VW5sb2dnZWRSZWxhdGlvbnNIYXNoKGRic3BhY2VkaXJuYW1lKTsKIAotCQkvKgotCQkgKiBJ ZiB3ZSBkaWRuJ3QgZmluZCBhbnkgaW5pdCBmb3JrcywgdGhlcmUncyBubyBwb2ludCBpbiBj b250aW51aW5nOwotCQkgKiB3ZSBjYW4gYmFpbCBvdXQgbm93LgotCQkgKi8KLQkJaWYgKGhh c2hfZ2V0X251bV9lbnRyaWVzKGhhc2gpID09IDApCi0JCXsKLQkJCWhhc2hfZGVzdHJveSho YXNoKTsKKwkJLyogTm8gbmVlZCB0byBjb250aW51ZSBpZiB0aGVyZSBhcmUgbm8gdW5sb2dn ZWQgdGFibGVzLiAqLworCQlpZiAoIWhhc2gpCiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKgog CQkgKiBOb3csIG1ha2UgYSBzZWNvbmQgcGFzcyBhbmQgcmVtb3ZlIGFueXRoaW5nIHRoYXQg bWF0Y2hlcy4KQEAgLTIyNSwzMCArMjcyLDkgQEAgUmVzZXRVbmxvZ2dlZFJlbGF0aW9uc0lu RGJzcGFjZURpcihjb25zdCBjaGFyICpkYnNwYWNlZGlybmFtZSwgaW50IG9wKQogCQlkYnNw YWNlX2RpciA9IEFsbG9jYXRlRGlyKGRic3BhY2VkaXJuYW1lKTsKIAkJd2hpbGUgKChkZSA9 IFJlYWREaXIoZGJzcGFjZV9kaXIsIGRic3BhY2VkaXJuYW1lKSkgIT0gTlVMTCkKIAkJewot CQkJRm9ya051bWJlcglmb3JrTnVtOwotCQkJaW50CQkJb2lkY2hhcnM7Ci0JCQlib29sCQlm b3VuZDsKLQkJCXVubG9nZ2VkX3JlbGF0aW9uX2VudHJ5IGVudDsKLQotCQkJLyogU2tpcCBh bnl0aGluZyB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgcmVsYXRpb24gZGF0YSBmaWxlLiAq LwotCQkJaWYgKCFwYXJzZV9maWxlbmFtZV9mb3Jfbm9udGVtcF9yZWxhdGlvbihkZS0+ZF9u YW1lLCAmb2lkY2hhcnMsCi0JCQkJCQkJCQkJCQkJICZmb3JrTnVtKSkKLQkJCQljb250aW51 ZTsKLQotCQkJLyogV2UgbmV2ZXIgcmVtb3ZlIHRoZSBpbml0IGZvcmsuICovCi0JCQlpZiAo Zm9ya051bSA9PSBJTklUX0ZPUktOVU0pCi0JCQkJY29udGludWU7Ci0KLQkJCS8qCi0JCQkg KiBTZWUgd2hldGhlciB0aGUgT0lEIHBvcnRpb24gb2YgdGhlIG5hbWUgc2hvd3MgdXAgaW4g dGhlIGhhc2gKLQkJCSAqIHRhYmxlLgotCQkJICovCi0JCQltZW1zZXQoZW50Lm9pZCwgMCwg c2l6ZW9mKGVudC5vaWQpKTsKLQkJCW1lbWNweShlbnQub2lkLCBkZS0+ZF9uYW1lLCBvaWRj aGFycyk7Ci0JCQloYXNoX3NlYXJjaChoYXNoLCAmZW50LCBIQVNIX0ZJTkQsICZmb3VuZCk7 Ci0KLQkJCS8qIElmIHNvLCBudWtlIGl0ISAqLwotCQkJaWYgKGZvdW5kKQorCQkJLyogSWYg dGhpcyBpcyBhbiB1bmxvZ2dlZCByZWxhdGlvbiBmb3JrIG90aGVyIHRoYW4gaW5pdCwgbnVr ZSBpdCEgKi8KKwkJCWlmIChSZXNldFVubG9nZ2VkUmVsYXRpb25zTWF0Y2goCisJCQkJCWhh c2gsIGRlLT5kX25hbWUpID09IHVubG9nZ2VkT3RoZXIpCiAJCQl7CiAJCQkJc25wcmludGYo cm1fcGF0aCwgc2l6ZW9mKHJtX3BhdGgpLCAiJXMvJXMiLAogCQkJCQkJIGRic3BhY2VkaXJu YW1lLCBkZS0+ZF9uYW1lKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVp bml0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3JlaW5pdC5oCmluZGV4IDkwZTQ5NGU5MzMu LmY1NzgxYjViZjIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcmVpbml0LmgK KysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9yZWluaXQuaApAQCAtMTUsOSArMTUsMjQgQEAK ICNpZm5kZWYgUkVJTklUX0gKICNkZWZpbmUgUkVJTklUX0gKIAorI2luY2x1ZGUgInV0aWxz L2hzZWFyY2guaCIKKwogZXh0ZXJuIHZvaWQgUmVzZXRVbmxvZ2dlZFJlbGF0aW9ucyhpbnQg b3ApOwogCiAjZGVmaW5lIFVOTE9HR0VEX1JFTEFUSU9OX0NMRUFOVVAJCTB4MDAwMQogI2Rl ZmluZSBVTkxPR0dFRF9SRUxBVElPTl9JTklUCQkJMHgwMDAyCiAKKy8qIFJldHVybiB2YWx1 ZXMgZm9yIFJlc2V0VW5sb2dnZWRSZWxhdGlvbnNNYXRjaCgpLiAqLwordHlwZWRlZiBlbnVt Cit7CisJbm90VW5sb2dnZWQsCQkJLyogTm90IGEgcmVsYXRpb24gb3Igbm90IGFuIHVubG9n Z2VkIHJlbGF0aW9uLiAqLworCXVubG9nZ2VkSW5pdCwJCQkvKiBBbiB1bmxvZ2dlZCByZWxh dGlvbiBpbml0IGZvcmsuICovCisJdW5sb2dnZWRPdGhlcgkJCS8qIEFuIHVubG9nZ2VkIHJl bGF0aW9uIGZvcmsgb3RoZXIgdGhhbiBpbml0LiAqLworfSBVbmxvZ2dlZFJlbGF0aW9uRm9y azsKKworLyogVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGlkZW50aWZ5aW5nIHVubG9nZ2VkIHRh YmxlIGZvcmtzLiAqLworZXh0ZXJuIEhUQUIgKlJlc2V0VW5sb2dnZWRSZWxhdGlvbnNIYXNo KGNvbnN0IGNoYXIgKmRic3BhY2VkaXJuYW1lKTsKK2V4dGVybiBVbmxvZ2dlZFJlbGF0aW9u Rm9yayBSZXNldFVubG9nZ2VkUmVsYXRpb25zTWF0Y2goCisJSFRBQiAqdW5sb2dnZWRIYXNo LCBjb25zdCBjaGFyICpmaWxlTmFtZSk7CisKICNlbmRpZgkJCQkJCQkvKiBSRUlOSVRfSCAq Lwo= --------------6F7DD02DB88E048ED34FF106 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="exclude-unlogged-v1-03.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exclude-unlogged-v1-03.patch" ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21s L3Byb3RvY29sLnNnbWwKaW5kZXggODE3NGUzZGVmYS4uYWNhYzI4NmJmNCAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3Rv Y29sLnNnbWwKQEAgLTI1NDksNiArMjU0OSwxMiBAQCBUaGUgY29tbWFuZHMgYWNjZXB0ZWQg aW4gd2Fsc2VuZGVyIG1vZGUgYXJlOgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPGxp c3RpdGVtPgogICAgICAgICA8cGFyYT4KKyAgICAgICAgIFVubG9nZ2VkIHJlbGF0aW9ucywg ZXhjZXB0IGZvciB0aGUgaW5pdCBmb3JrIHdoaWNoIGlzIHJlcXVpcmVkIHRvCisgICAgICAg ICByZWNyZWF0ZSB0aGUgKGVtcHR5KSB1bmxvZ2dlZCByZWxhdGlvbiBvbiByZWNvdmVyeS4K KyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgPGxpc3RpdGVt PgorICAgICAgICA8cGFyYT4KICAgICAgICAgIDxmaWxlbmFtZT5wZ193YWw8L2ZpbGVuYW1l PiwgaW5jbHVkaW5nIHN1YmRpcmVjdG9yaWVzLiBJZiB0aGUgYmFja3VwIGlzIHJ1bgogICAg ICAgICAgd2l0aCBXQUwgZmlsZXMgaW5jbHVkZWQsIGEgc3ludGhlc2l6ZWQgdmVyc2lvbiBv ZiA8ZmlsZW5hbWU+cGdfd2FsPC9maWxlbmFtZT4gd2lsbCBiZQogICAgICAgICAgaW5jbHVk ZWQsIGJ1dCBpdCB3aWxsIG9ubHkgY29udGFpbiB0aGUgZmlsZXMgbmVjZXNzYXJ5IGZvciB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2Jhc2ViYWNrdXAuYwppbmRleCBjZDdkMzkxYjJm Li41OWFiN2UxOWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9iYXNl YmFja3VwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vYmFzZWJhY2t1cC5jCkBA IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9kc21faW1wbC5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUg InN0b3JhZ2UvcmVpbml0LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNs dWRlICJ1dGlscy9lbG9nLmgiCiAjaW5jbHVkZSAidXRpbHMvcHNfc3RhdHVzLmgiCkBAIC05 NTgsNiArOTU5LDM2IEBAIHNlbmREaXIoY29uc3QgY2hhciAqcGF0aCwgaW50IGJhc2VwYXRo bGVuLCBib29sIHNpemVvbmx5LCBMaXN0ICp0YWJsZXNwYWNlcywKIAljaGFyCQlwYXRoYnVm W01BWFBHUEFUSCAqIDJdOwogCXN0cnVjdCBzdGF0IHN0YXRidWY7CiAJaW50NjQJCXNpemUg PSAwOworCUhUQUIgCQkqdW5sb2dnZWRIYXNoID0gTlVMTDsJLyogVW5sb2dnZWQgdGFibGVz IGluIHRoaXMgcGF0aC4gKi8KKwljb25zdCBjaGFyIAkqdW5sb2dnZWREZWxpbTsJCQkvKiBT cGxpdCB0aGlzIHBhdGggZnJvbSBwYXJlbnQgcGF0aC4gKi8KKworCS8qCisJICogRmluZCBh bnkgdW5sb2dnZWQgcmVsYXRpb25zIGluIHRoaXMgcGF0aCBhbmQgc3RvcmUgdGhlbSBpbiBh IGhhc2guIEFsbAorCSAqIHVubG9nZ2VkIHJlbGF0aW9uIGZvcmtzIGV4Y2VwdCBpbml0IHdp bGwgYmUgZXhjbHVkZWQgZnJvbSB0aGUgYmFja3VwLgorCSAqCisJICogU3RhcnQgYnkgZmlu ZGluZyB0aGUgbG9jYXRpb24gb2YgdGhlIGRlbGltaXRlciBiZXR3ZWVuIHRoZSBwYXJlbnQK KwkgKiBwYXRoIGFuZCB0aGUgY3VycmVudCBwYXRoLgorCSAqLworCXVubG9nZ2VkRGVsaW0g PSBzdHJyY2hyKHBhdGgsICcvJyk7CisKKwkvKiBEb2VzIHRoaXMgcGF0aCBsb29rIGxpa2Ug YSBkYXRhYmFzZSBwYXRoIChpLmUuIGFsbCBkaWdpdHMpPyAqLworCWlmICh1bmxvZ2dlZERl bGltICE9IE5VTEwgJiYKKwkJc3Ryc3BuKHVubG9nZ2VkRGVsaW0gKyAxLCAiMDEyMzQ1Njc4 OSIpID09IHN0cmxlbih1bmxvZ2dlZERlbGltICsgMSkpCisJeworCQkvKiBQYXJ0IG9mIHBh dGggdGhhdCBjb250YWlucyB0aGUgcGFyZW50IGRpcmVjdG9yeS4gKi8KKwkJaW50IHBhcmVu dFBhdGhMZW4gPSB1bmxvZ2dlZERlbGltIC0gcGF0aDsKKworCQkvKgorCQkgKiBCdWlsZCB0 aGUgdW5sb2dnZWQgcmVsYXRpb24gaGFzaCBpZiB0aGUgcGFyZW50IHBhdGggaXMgZWl0aGVy CisJCSAqICRQR0RBVEEvYmFzZSBvciBhIHRhYmxlc3BhY2UgdmVyc2lvbiBwYXRoLgorCQkg Ki8KKwkJaWYgKHN0cm5jbXAocGF0aCwgIi4vYmFzZSIsIHBhcmVudFBhdGhMZW4pID09IDAg fHwKKwkJCShwYXJlbnRQYXRoTGVuID49IChzaXplb2YoVEFCTEVTUEFDRV9WRVJTSU9OX0RJ UkVDVE9SWSkgLSAxKSAmJgorCQkJIHN0cm5jbXAodW5sb2dnZWREZWxpbSAtIChzaXplb2Yo VEFCTEVTUEFDRV9WRVJTSU9OX0RJUkVDVE9SWSkgLSAxKSwKKwkJCQkJIFRBQkxFU1BBQ0Vf VkVSU0lPTl9ESVJFQ1RPUlksCisJCQkJCSBzaXplb2YoVEFCTEVTUEFDRV9WRVJTSU9OX0RJ UkVDVE9SWSkgLSAxKSA9PSAwKSkKKwkJCXVubG9nZ2VkSGFzaCA9IFJlc2V0VW5sb2dnZWRS ZWxhdGlvbnNIYXNoKHBhdGgpOworCX0KIAogCWRpciA9IEFsbG9jYXRlRGlyKHBhdGgpOwog CXdoaWxlICgoZGUgPSBSZWFkRGlyKGRpciwgcGF0aCkpICE9IE5VTEwpCkBAIC0xMDA3LDYg KzEwMzgsMTUgQEAgc2VuZERpcihjb25zdCBjaGFyICpwYXRoLCBpbnQgYmFzZXBhdGhsZW4s IGJvb2wgc2l6ZW9ubHksIExpc3QgKnRhYmxlc3BhY2VzLAogCQlpZiAoZXhjbHVkZUZvdW5k KQogCQkJY29udGludWU7CiAKKwkJLyogRXhjbHVkZSBhbGwgZm9ya3MgZm9yIHVubG9nZ2Vk IHRhYmxlcyBleGNlcHQgdGhlIGluaXQgZm9yay4gKi8KKwkJaWYgKHVubG9nZ2VkSGFzaCAm JiBSZXNldFVubG9nZ2VkUmVsYXRpb25zTWF0Y2goCisJCQkJdW5sb2dnZWRIYXNoLCBkZS0+ ZF9uYW1lKSA9PSB1bmxvZ2dlZE90aGVyKQorCQl7CisJCQllbG9nKERFQlVHMiwgInVubG9n Z2VkIHJlbGF0aW9uIGZpbGUgXCIlc1wiIGV4Y2x1ZGVkIGZyb20gYmFja3VwIiwKKwkJCQkg ZGUtPmRfbmFtZSk7CisJCQljb250aW51ZTsKKwkJfQorCiAJCXNucHJpbnRmKHBhdGhidWYs IHNpemVvZihwYXRoYnVmKSwgIiVzLyVzIiwgcGF0aCwgZGUtPmRfbmFtZSk7CiAKIAkJLyog U2tpcCBwZ19jb250cm9sIGhlcmUgdG8gYmFjayB1cCBpdCBsYXN0ICovCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvdC8wMTBfcGdfYmFzZWJhY2t1cC5wbCBiL3NyYy9i aW4vcGdfYmFzZWJhY2t1cC90LzAxMF9wZ19iYXNlYmFja3VwLnBsCmluZGV4IGNkZjRmNWJl MzcuLjRhMjJjNGE2NTcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAx MF9wZ19iYXNlYmFja3VwLnBsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzAxMF9w Z19iYXNlYmFja3VwLnBsCkBAIC00LDcgKzQsNyBAQCB1c2UgQ3dkOwogdXNlIENvbmZpZzsK IHVzZSBQb3N0Z3Jlc05vZGU7CiB1c2UgVGVzdExpYjsKLXVzZSBUZXN0OjpNb3JlIHRlc3Rz ID0+IDc5OwordXNlIFRlc3Q6Ok1vcmUgdGVzdHMgPT4gODc7CiAKIHByb2dyYW1faGVscF9v aygncGdfYmFzZWJhY2t1cCcpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ19iYXNlYmFja3Vw Jyk7CkBAIC02Niw2ICs2NiwxNiBAQCBmb3JlYWNoIG15ICRmaWxlbmFtZSAoCiAjIHBvc2l0 aXZlLgogJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnU0VMRUNUIDE7Jyk7CiAKKyMg Q3JlYXRlIGFuIHVubG9nZ2VkIHRhYmxlIHRvIHRlc3QgdGhhdCBmb3JrcyBvdGhlciB0aGFu IGluaXQgYXJlIG5vdCBjb3BpZWQuCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdD UkVBVEUgVU5MT0dHRUQgVEFCTEUgYmFzZV91bmxvZ2dlZCAoaWQgaW50KScpOworCitteSAk YmFzZVVubG9nZ2VkUGF0aCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxe3Nl bGVjdCBwZ19yZWxhdGlvbl9maWxlcGF0aCgnYmFzZV91bmxvZ2dlZCcpfSk7CisKKyMgTWFr ZSBzdXJlIG1haW4gYW5kIGluaXQgZm9ya3MgZXhpc3QKK29rKC1mICIkcGdkYXRhLyR7YmFz ZVVubG9nZ2VkUGF0aH1faW5pdCIsICd1bmxvZ2dlZCBpbml0IGZvcmsgaW4gYmFzZScpOwor b2soLWYgIiRwZ2RhdGEvJGJhc2VVbmxvZ2dlZFBhdGgiLCAndW5sb2dnZWQgbWFpbiBmb3Jr IGluIGJhc2UnKTsKKwogJG5vZGUtPmNvbW1hbmRfb2soWyAncGdfYmFzZWJhY2t1cCcsICct RCcsICIkdGVtcGRpci9iYWNrdXAiLCAnLVgnLCAnbm9uZScgXSwKIAkncGdfYmFzZWJhY2t1 cCBydW5zJyk7CiBvaygtZiAiJHRlbXBkaXIvYmFja3VwL1BHX1ZFUlNJT04iLCAnYmFja3Vw IHdhcyBjcmVhdGVkJyk7CkBAIC05Niw2ICsxMDYsMTIgQEAgZm9yZWFjaCBteSAkZmlsZW5h bWUgKAogCW9rKCEtZiAiJHRlbXBkaXIvYmFja3VwLyRmaWxlbmFtZSIsICIkZmlsZW5hbWUg bm90IGNvcGllZCIpOwogfQogCisjIFVubG9nZ2VkIHJlbGF0aW9uIGZvcmtzIG90aGVyIHRo YW4gaW5pdCBzaG91bGQgbm90IGJlIGNvcGllZAorb2soLWYgIiR0ZW1wZGlyL2JhY2t1cC8k e2Jhc2VVbmxvZ2dlZFBhdGh9X2luaXQiLAorCSd1bmxvZ2dlZCBpbml0IGZvcmsgaW4gYmFj a3VwJyk7CitvayghLWYgIiR0ZW1wZGlyL2JhY2t1cC8kYmFzZVVubG9nZ2VkUGF0aCIsCisJ J3VubG9nZ2VkIG1haW4gZm9yayBub3QgaW4gYmFja3VwJyk7CisKICMgTWFrZSBzdXJlIGV4 aXN0aW5nIGJhY2t1cF9sYWJlbCB3YXMgaWdub3JlZC4KIGlzbnQoc2x1cnBfZmlsZSgiJHRl bXBkaXIvYmFja3VwL2JhY2t1cF9sYWJlbCIpLAogCSdET05PVENPUFknLCAnZXhpc3Rpbmcg YmFja3VwX2xhYmVsIG5vdCBjb3BpZWQnKTsKQEAgLTE0Nyw3ICsxNjMsNyBAQCB1bmxpbmsg IiRwZ2RhdGEvJHN1cGVybG9uZ25hbWUiOwogIyBza2lwIG9uIFdpbmRvd3MuCiBTS0lQOgog ewotCXNraXAgInN5bWxpbmtzIG5vdCBzdXBwb3J0ZWQgb24gV2luZG93cyIsIDExIGlmICgk d2luZG93c19vcyk7CisJc2tpcCAic3ltbGlua3Mgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dz IiwgMTUgaWYgKCR3aW5kb3dzX29zKTsKIAogCSMgTW92ZSBwZ19yZXBsc2xvdCBvdXQgb2Yg JHBnZGF0YSBhbmQgY3JlYXRlIGEgc3ltbGluayB0byBpdC4KIAkkbm9kZS0+c3RvcDsKQEAg LTE3Nyw2ICsxOTMsMTkgQEAgU0tJUDoKIAlteSBAdGJsc3BjX3RhcnMgPSBnbG9iICIkdGVt cGRpci90YXJiYWNrdXAyL1swLTldKi50YXIiOwogCWlzKHNjYWxhcihAdGJsc3BjX3RhcnMp LCAxLCAnb25lIHRhYmxlc3BhY2UgdGFyIHdhcyBjcmVhdGVkJyk7CiAKKwkjIENyZWF0ZSBh biB1bmxvZ2dlZCB0YWJsZSB0byB0ZXN0IHRoYXQgZm9ya3Mgb3RoZXIgdGhhbiBpbml0IGFy ZSBub3QgY29waWVkLgorCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJJ0NSRUFU RSBVTkxPR0dFRCBUQUJMRSB0YmxzcGMxX3VubG9nZ2VkIChpZCBpbnQpIFRBQkxFU1BBQ0Ug dGJsc3BjMTsnKTsKKworCW15ICR0YmxzcGMxVW5sb2dnZWRQYXRoID0gJG5vZGUtPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXtzZWxlY3QgcGdfcmVsYXRpb25fZmlsZXBhdGgoJ3Ri bHNwYzFfdW5sb2dnZWQnKX0pOworCisJIyBNYWtlIHN1cmUgbWFpbiBhbmQgaW5pdCBmb3Jr cyBleGlzdAorCW9rKC1mICIkcGdkYXRhLyR7dGJsc3BjMVVubG9nZ2VkUGF0aH1faW5pdCIs CisJCSd1bmxvZ2dlZCBpbml0IGZvcmsgaW4gdGFibGVzcGFjZScpOworCW9rKC1mICIkcGdk YXRhLyR0YmxzcGMxVW5sb2dnZWRQYXRoIiwKKwkJJ3VubG9nZ2VkIG1haW4gZm9yayBpbiB0 YWJsZXNwYWNlJyk7CisKIAkkbm9kZS0+Y29tbWFuZF9mYWlscygKIAkJWyAncGdfYmFzZWJh Y2t1cCcsICctRCcsICIkdGVtcGRpci9iYWNrdXAxIiwgJy1GcCcgXSwKIAkJJ3BsYWluIGZv cm1hdCB3aXRoIHRhYmxlc3BhY2VzIGZhaWxzIHdpdGhvdXQgdGFibGVzcGFjZSBtYXBwaW5n Jyk7CkBAIC0xOTUsMTEgKzIyNCwyMCBAQCBTS0lQOgogCQkidGFibGVzcGFjZSBzeW1saW5r IHdhcyB1cGRhdGVkIik7CiAJY2xvc2VkaXIgJGRoOwogCisJIyBVbmxvZ2dlZCByZWxhdGlv biBmb3JrcyBvdGhlciB0aGFuIGluaXQgc2hvdWxkIG5vdCBiZSBjb3BpZWQKKwlteSAoJHRi bHNwYzFVbmxvZ2dlZEJhY2t1cFBhdGgpID0gJHRibHNwYzFVbmxvZ2dlZFBhdGggPX4gL1te XC9dKlwvW15cL10qXC9bXlwvXSokL2c7CisKKwlvaygtZiAiJHRlbXBkaXIvdGJhY2t1cC90 YmxzcGMxLyR7dGJsc3BjMVVubG9nZ2VkQmFja3VwUGF0aH1faW5pdCIsCisJCSd1bmxvZ2dl ZCBpbml0IGZvcmsgaW4gdGFibGVzcGFjZSBiYWNrdXAnKTsKKwlvayghLWYgIiR0ZW1wZGly L3RiYWNrdXAvdGJsc3BjMS8kdGJsc3BjMVVubG9nZ2VkQmFja3VwUGF0aCIsCisJCSd1bmxv Z2dlZCBpbWFpbiBmb3JrIG5vdCBpbiB0YWJsZXNwYWNlIGJhY2t1cCcpOworCiAJb2soIC1k ICIkdGVtcGRpci9iYWNrdXAxL3BnX3JlcGxzbG90IiwKIAkJJ3BnX3JlcGxzbG90IHN5bWxp bmsgY29waWVkIGFzIGRpcmVjdG9yeScpOwogCiAJbWtkaXIgIiR0ZW1wZGlyL3RibD1zcGMy IjsKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxFIHRlc3QxOyIp OworCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgVEFCTEUgdGJsc3BjMV91 bmxvZ2dlZDsiKTsKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIFRBQkxF U1BBQ0UgdGJsc3BjMTsiKTsKIAkkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJD UkVBVEUgVEFCTEVTUEFDRSB0YmxzcGMyIExPQ0FUSU9OICckc2hvcnRlcl90ZW1wZGlyL3Ri bD1zcGMyJzsiKTsK --------------6F7DD02DB88E048ED34FF106--