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 1soN7J-00Aj0I-6f for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Sep 2024 13:10:42 +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 1soN7I-00HQvK-Vl for pgsql-hackers@arkaria.postgresql.org; Wed, 11 Sep 2024 13:10:40 +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 1soN47-00HLhp-Aq for pgsql-hackers@lists.postgresql.org; Wed, 11 Sep 2024 13:07:23 +0000 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1soN43-000eLc-Dr for pgsql-hackers@lists.postgresql.org; Wed, 11 Sep 2024 13:07:22 +0000 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-7d666fb3fb9so477510a12.0 for ; Wed, 11 Sep 2024 06:07:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timescale.com; s=google; t=1726060038; x=1726664838; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=asxvYMkiV5Lmx/sQQqtPaquNTaxt9ocsRvT8S67GzaM=; b=DeP9rZhv298Ts+HWmLTlWcXOqR3dzB6K04h1Y9Ljkcr6LIgNluXx/I6DNSE7AbjA7+ 4L+wmUQB0GmsT9XCReLJOGw7HpnAXqwy6RNbRXiMC2lawcWH2Zul5DN+3imast4xCSEl 8d3DGxCaYdxGmwl6PdR34yAKf+trd2DcTgyRARM8iDs/WmkfxqYmYRUeu17Mc5VoOXV4 UB/rKElIvFeWjN0pj2SRINMOUx6Heu6Qrvbsnyf9prJQADWKht3sD2T/14qcR87WLCpQ 7InEaSe82MBt8qrAVb1gdTgayz4QddCf/3lX30VE1TwDgUK73u6WbgzDbPi24Q/u1LRt AA4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726060038; x=1726664838; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=asxvYMkiV5Lmx/sQQqtPaquNTaxt9ocsRvT8S67GzaM=; b=R94WwcU9aZ0oqH2KA6MKzL0NkjDerzbKEdsKiYg7vDQ0zr5YJtpfl37iF3z1uAbOTB j8TxMV2EYAzPs1CM2fFsBQHxcTId2k/o0jBfNyPzczfJazKwCBqSGjUxsokm5otftbbW IbjwpO2KBatU4m61hegt/9ryYw+KiI4UysrUv1J2gwK5SO/SF8P7zb+SnyVIntS7JuMc 9pa5ZvN5mbuGhOyUY+RGDal3n48XDT9E4LOXuofVzvIdpoX4RTqaLX7oEvB7PtLkNvnE zueiro9M5Y+VtOZqj7eyeAjF2fQaIxUPteQTnPJb3olzlIB5kJJ1qjRGzzVb02Ync86a hJew== X-Gm-Message-State: AOJu0YxKqTMbzPd7fij+ijbeelXdIQEa8Zk85mY4sc/LsuO/br/GSPIB O6LtR53TWJ1T8WsVU7/OrWkSXDdEOfbcreaaKDN/IJmslCAEsnAFa6zZoINV9hi6oqznRdsOmvt wG8tS88oV9noqbqWBdBlYkuC4pPgN3/01hbOuIG7rzDtLarqKYXqfVg== X-Google-Smtp-Source: AGHT+IFYxItPXMgERWBZuCpwAUS/W5W9Nk3YIr02AzJp6rAuYopfGh4QZw1+bXC/eZGtYjYQe5x+5T0BIcYOHu6kJ8Q= X-Received: by 2002:a05:6a20:c70b:b0:1cf:359b:1a31 with SMTP id adf61e73a8af0-1cf5e4cc9d2mr6606974637.19.1726060037762; Wed, 11 Sep 2024 06:07:17 -0700 (PDT) MIME-Version: 1.0 From: Aleksander Alekseev Date: Wed, 11 Sep 2024 16:07:06 +0300 Message-ID: Subject: [PATCH] Refactor SLRU to always use long file names To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000069a99d0621d7aba9" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000069a99d0621d7aba9 Content-Type: text/plain; charset="UTF-8" Hi, Commit 4ed8f0913bfd introduced long SLRU file names. The proposed patch removes SlruCtl->long_segment_names flag and makes SLRU always use long file names. This simplifies both the code and the API. Corresponding changes to pg_upgrade are included. One drawback I see is that technically SLRU is an exposed API and changing it may affect third-party code. I'm not sure if we should seriously worry about this. Firstly, the change is trivial and secondly, it's not clear whether such third-party code even exists (we broke this API just recently in 4ed8f0913bfd and no one complained). I didn't include any tests for the new pg_upgrade code. To my knowledge we test it manually, with buildfarm members and during alpha- and beta-testing periods. Please let me know if you think there should be a corresponding TAP test. Thoughts? -- Best regards, Aleksander Alekseev --00000000000069a99d0621d7aba9 Content-Type: application/octet-stream; name="v1-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Disposition: attachment; filename="v1-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0xvk2u20 RnJvbSBjMjk3MTYzZTliNjlkNmY5NzgzMDFlZWI2Mjk4MzRiNzNlODFlMmQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpbWVz Y2FsZS5jb20+CkRhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMTM6MTc6MzMgKzAzMDAKU3ViamVjdDog W1BBVENIIHYxXSBBbHdheXMgdXNlIGxvbmcgU0xSVSBzZWdtZW50IGZpbGUgbmFtZXMKClBHMTcg aW50cm9kdWNlZCBsb25nIFNMUlUgc2VnbWVudCBmaWxlIG5hbWVzIChjb21taXQgNGVkOGYwOTEz YmZkKS4gV2UgdXNlZApzaG9ydCBvciBsb25nIGZpbGUgbmFtZXMgZGVwZW5kaW5nIG9uIFNscnVD dGwtPmxvbmdfc2VnbWVudF9uYW1lcy4gVGhpcyBjb21taXQKcmVmYWN0b3JzIFNMUlUgdG8gYWx3 YXlzIHVzZSBsb25nIGZpbGUgbmFtZXMgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGNvZGUuCgpB bGVrc2FuZGVyIEFsZWtzZWV2LCByZXZpZXdlZCBieSBUT0RPIEZJWE1FCkRpc2N1c3Npb246IFRP RE8gRklYTUUKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgICAgICAgICAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jICAgICAgfCAg MyArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgICB8ICA2ICst CiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICAgICAgIHwgNzMgKysrKy0t LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgICAg ICB8ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAgICAgIHwg IDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyAgICAgICAgfCAgMiAr LQogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyAgICAgICAgICAgICB8IDc4ICsrKysr KysrKysrKysrKysrKysrKwogc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCAgICAgICAg ICAgICB8ICA2ICsrCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBs IHwgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmggICAgICAgICAgICAgICAgICAgfCAx MCArLS0KIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jICAgICAgfCAgOCAr LS0KIDEyIGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspLCA4NiBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKaW5kZXggZTZmNzkzMjBlOS4uNzFmYTI5MWMxMCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtODEwLDcgKzgxMCw3IEBAIENMT0dTaG1l bUluaXQodm9pZCkKIAlYYWN0Q3RsLT5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVzOwog CVNpbXBsZUxydUluaXQoWGFjdEN0bCwgInRyYW5zYWN0aW9uIiwgQ0xPR1NobWVtQnVmZmVycygp LCBDTE9HX0xTTlNfUEVSX1BBR0UsCiAJCQkJICAicGdfeGFjdCIsIExXVFJBTkNIRV9YQUNUX0JV RkZFUiwKLQkJCQkgIExXVFJBTkNIRV9YQUNUX1NMUlUsIFNZTkNfSEFORExFUl9DTE9HLCBmYWxz ZSk7CisJCQkJICBMV1RSQU5DSEVfWEFDVF9TTFJVLCBTWU5DX0hBTkRMRVJfQ0xPRyk7CiAJU2xy dVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKIH0K IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwppbmRleCA3N2UxODk5ZDdhLi40 NGRlOTYyYTI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRf dHMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwpAQCAtNTU2 LDggKzU1Niw3IEBAIENvbW1pdFRzU2htZW1Jbml0KHZvaWQpCiAJU2ltcGxlTHJ1SW5pdChDb21t aXRUc0N0bCwgImNvbW1pdF90aW1lc3RhbXAiLCBDb21taXRUc1NobWVtQnVmZmVycygpLCAwLAog CQkJCSAgInBnX2NvbW1pdF90cyIsIExXVFJBTkNIRV9DT01NSVRUU19CVUZGRVIsCiAJCQkJICBM V1RSQU5DSEVfQ09NTUlUVFNfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9DT01NSVRfVFMsCi0J CQkJICBmYWxzZSk7CisJCQkJICBTWU5DX0hBTkRMRVJfQ09NTUlUX1RTKTsKIAlTbHJ1UGFnZVBy ZWNlZGVzVW5pdFRlc3RzKENvbW1pdFRzQ3RsLCBDT01NSVRfVFNfWEFDVFNfUEVSX1BBR0UpOwog CiAJY29tbWl0VHNTaGFyZWQgPSBTaG1lbUluaXRTdHJ1Y3QoIkNvbW1pdFRzIHNoYXJlZCIsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmluZGV4IDhjMzdkN2ViYTcuLjQwNzJh NzhmM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5j CisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCkBAIC0xOTc0LDE1 ICsxOTc0LDEzIEBAIE11bHRpWGFjdFNobWVtSW5pdCh2b2lkKQogCQkJCSAgIm11bHRpeGFjdF9v ZmZzZXQiLCBtdWx0aXhhY3Rfb2Zmc2V0X2J1ZmZlcnMsIDAsCiAJCQkJICAicGdfbXVsdGl4YWN0 L29mZnNldHMiLCBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX0JVRkZFUiwKIAkJCQkgIExXVFJB TkNIRV9NVUxUSVhBQ1RPRkZTRVRfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1Rf T0ZGU0VULAotCQkJCSAgZmFsc2UpOworCQkJCSAgU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZT RVQpOwogCVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoTXVsdGlYYWN0T2Zmc2V0Q3RsLCBNVUxU SVhBQ1RfT0ZGU0VUU19QRVJfUEFHRSk7CiAJU2ltcGxlTHJ1SW5pdChNdWx0aVhhY3RNZW1iZXJD dGwsCiAJCQkJICAibXVsdGl4YWN0X21lbWJlciIsIG11bHRpeGFjdF9tZW1iZXJfYnVmZmVycywg MCwKIAkJCQkgICJwZ19tdWx0aXhhY3QvbWVtYmVycyIsIExXVFJBTkNIRV9NVUxUSVhBQ1RNRU1C RVJfQlVGRkVSLAogCQkJCSAgTFdUUkFOQ0hFX01VTFRJWEFDVE1FTUJFUl9TTFJVLAotCQkJCSAg U1lOQ19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVIsCi0JCQkJICBmYWxzZSk7CisJCQkJICBTWU5D X0hBTkRMRVJfTVVMVElYQUNUX01FTUJFUik7CiAJLyogZG9lc24ndCBjYWxsIFNpbXBsZUxydVRy dW5jYXRlKCkgb3IgbWVldCBjcml0ZXJpYSBmb3IgdW5pdCB0ZXN0cyAqLwogCiAJLyogSW5pdGlh bGl6ZSBvdXIgc2hhcmVkIHN0YXRlIHN0cnVjdCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vc2xydS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc2xydS5j CmluZGV4IGU3ZjczYmY0MjcuLmQ1Y2M1ZmM2ZTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1 LmMKQEAgLTc3LDQyICs3NywyMiBAQAogICoKICAqICJwYXRoIiBzaG91bGQgcG9pbnQgdG8gYSBi dWZmZXIgYXQgbGVhc3QgTUFYUEdQQVRIIGNoYXJhY3RlcnMgbG9uZy4KICAqCi0gKiBJZiBjdGwt Pmxvbmdfc2VnbWVudF9uYW1lcyBpcyB0cnVlLCBzZWdubyBjYW4gYmUgaW4gdGhlIHJhbmdlIFsw LCAyXjYwLTFdLgotICogVGhlIHJlc3VsdGluZyBmaWxlIG5hbWUgaXMgbWFkZSBvZiAxNSBjaGFy YWN0ZXJzLCBlLmcuIGRpci8xMjM0NTY3ODlBQkNERUYuCi0gKgotICogSWYgY3RsLT5sb25nX3Nl Z21lbnRfbmFtZXMgaXMgZmFsc2UsIHNlZ25vIGNhbiBiZSBpbiB0aGUgcmFuZ2UgWzAsIDJeMjQt MV0uCi0gKiBUaGUgcmVzdWx0aW5nIGZpbGUgbmFtZSBpcyBtYWRlIG9mIDQgdG8gNiBjaGFyYWN0 ZXJzLCBhcyBvZjoKLSAqCi0gKiAgZGlyLzEyMzQgICBmb3IgWzAsIDJeMTYtMV0KLSAqICBkaXIv MTIzNDUgIGZvciBbMl4xNiwgMl4yMC0xXQotICogIGRpci8xMjM0NTYgZm9yIFsyXjIwLCAyXjI0 LTFdCisgKiBzZWdubyBjYW4gYmUgaW4gdGhlIHJhbmdlIFswLCAyXjYwLTFdLiBUaGUgcmVzdWx0 aW5nIGZpbGUgbmFtZSBpcyBtYWRlCisgKiBvZiAxNSBjaGFyYWN0ZXJzLCBlLmcuIGRpci8xMjM0 NTY3ODlBQkNERUYuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiBTbHJ1RmlsZU5hbWUoU2xydUN0 bCBjdGwsIGNoYXIgKnBhdGgsIGludDY0IHNlZ25vKQogewotCWlmIChjdGwtPmxvbmdfc2VnbWVu dF9uYW1lcykKLQl7Ci0JCS8qCi0JCSAqIFdlIGNvdWxkIHVzZSAxNiBjaGFyYWN0ZXJzIGhlcmUg YnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291bGQgYmUgdGhhdAotCQkgKiB0aGUgU0xSVSBzZWdtZW50 cyB3aWxsIGJlIGhhcmQgdG8gZGlzdGluZ3Vpc2ggZnJvbSBXQUwgc2VnbWVudHMuCi0JCSAqCi0J CSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2UgMTUgY2hhcmFjdGVycy4gSXQgaXMgZW5vdWdoIGJ1 dCBhbHNvIG1lYW5zCi0JCSAqIHRoYXQgaW4gdGhlIGZ1dHVyZSB3ZSBjYW4ndCBkZWNyZWFzZSBT TFJVX1BBR0VTX1BFUl9TRUdNRU5UIGVhc2lseS4KLQkJICovCi0JCUFzc2VydChzZWdubyA+PSAw ICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZGRkYpKTsKLQkJcmV0dXJuIHNu cHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwMTVsbFgiLCBjdGwtPkRpciwKLQkJCQkJCShs b25nIGxvbmcpIHNlZ25vKTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogRGVzcGl0ZSB0aGUg ZmFjdCB0aGF0ICUwNFggZm9ybWF0IHN0cmluZyBpcyB1c2VkIHVwIHRvIDI0IGJpdAotCQkgKiBp bnRlZ2VycyBhcmUgYWxsb3dlZC4gU2VlIFNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3Ro KCkKLQkJICovCi0JCUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhG RkZGRkYpKTsKLQkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgiLCAo Y3RsKS0+RGlyLAotCQkJCQkJKHVuc2lnbmVkIGludCkgc2Vnbm8pOwotCX0KKwkvKgorCSAqIFdl IGNvdWxkIHVzZSAxNiBjaGFyYWN0ZXJzIGhlcmUgYnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291bGQg YmUgdGhhdAorCSAqIHRoZSBTTFJVIHNlZ21lbnRzIHdpbGwgYmUgaGFyZCB0byBkaXN0aW5ndWlz aCBmcm9tIFdBTCBzZWdtZW50cy4KKwkgKgorCSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2UgMTUg Y2hhcmFjdGVycy4gSXQgaXMgZW5vdWdoIGJ1dCBhbHNvIG1lYW5zCisJICogdGhhdCBpbiB0aGUg ZnV0dXJlIHdlIGNhbid0IGRlY3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5Lgor CSAqLworCUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZG RkZGRkZGRkYpKTsKKwlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAxNWxs WCIsIGN0bC0+RGlyLAorCQkJCQkobG9uZyBsb25nKSBzZWdubyk7CiB9CiAKIC8qCkBAIC0yNTEs NyArMjMxLDcgQEAgU2ltcGxlTHJ1QXV0b3R1bmVCdWZmZXJzKGludCBkaXZpc29yLCBpbnQgbWF4 KQogdm9pZAogU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwgaW50 IG5zbG90cywgaW50IG5sc25zLAogCQkJICBjb25zdCBjaGFyICpzdWJkaXIsIGludCBidWZmZXJf dHJhbmNoZV9pZCwgaW50IGJhbmtfdHJhbmNoZV9pZCwKLQkJCSAgU3luY1JlcXVlc3RIYW5kbGVy IHN5bmNfaGFuZGxlciwgYm9vbCBsb25nX3NlZ21lbnRfbmFtZXMpCisJCQkgIFN5bmNSZXF1ZXN0 SGFuZGxlciBzeW5jX2hhbmRsZXIpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQ7CiAJYm9vbAkJZm91 bmQ7CkBAIC0zNDIsNyArMzIyLDYgQEAgU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3Qg Y2hhciAqbmFtZSwgaW50IG5zbG90cywgaW50IG5sc25zLAogCSAqLwogCWN0bC0+c2hhcmVkID0g c2hhcmVkOwogCWN0bC0+c3luY19oYW5kbGVyID0gc3luY19oYW5kbGVyOwotCWN0bC0+bG9uZ19z ZWdtZW50X25hbWVzID0gbG9uZ19zZWdtZW50X25hbWVzOwogCWN0bC0+YmFua19tYXNrID0gKG5z bG90cyAvIFNMUlVfQkFOS19TSVpFKSAtIDE7CiAJc3RybGNweShjdGwtPkRpciwgc3ViZGlyLCBz aXplb2YoY3RsLT5EaXIpKTsKIH0KQEAgLTE3NDUsMzAgKzE3MjQsNiBAQCBTbHJ1U2NhbkRpckNi RGVsZXRlQWxsKFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwgdm9p ZCAqZGF0YSkKIAlyZXR1cm4gZmFsc2U7CQkJCS8qIGtlZXAgZ29pbmcgKi8KIH0KIAotLyoKLSAq IEFuIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgYnkgU2xydVNjYW5EaXJlY3RvcnkoKS4KLSAqCi0g KiBSZXR1cm5zIHRydWUgaWYgYSBmaWxlIHdpdGggYSBuYW1lIG9mIGEgZ2l2ZW4gbGVuZ3RoIG1h eSBiZSBhIGNvcnJlY3QKLSAqIFNMUlUgc2VnbWVudC4KLSAqLwotc3RhdGljIGlubGluZSBib29s Ci1TbHJ1Q29ycmVjdFNlZ21lbnRGaWxlbmFtZUxlbmd0aChTbHJ1Q3RsIGN0bCwgc2l6ZV90IGxl bikKLXsKLQlpZiAoY3RsLT5sb25nX3NlZ21lbnRfbmFtZXMpCi0JCXJldHVybiAobGVuID09IDE1 KTsJCS8qIHNlZSBTbHJ1RmlsZU5hbWUoKSAqLwotCWVsc2UKLQotCQkvKgotCQkgKiBDb21taXQg NjM4Y2YwOWU3NmQgYWxsb3dlZCA1LWNoYXJhY3RlciBsZW5ndGhzLiBMYXRlciBjb21taXQKLQkJ ICogNzNjOTg2YWRkZTUgYWxsb3dlZCA2LWNoYXJhY3RlciBsZW5ndGguCi0JCSAqCi0JCSAqIE5v dGU6IFRoZXJlIGlzIGFuIG9uZ29pbmcgcGxhbiB0byBtaWdyYXRlIGFsbCBTTFJVcyB0byA2NC1i aXQgcGFnZQotCQkgKiBudW1iZXJzLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgMTUtY2hhcmFjdGVy IGZpbGUgbmFtZXMsIHdoaWNoIG1heQotCQkgKiBldmVudHVhbGx5IGRlcHJlY2F0ZSB0aGUgc3Vw cG9ydCBmb3IgNCwgNSwgYW5kIDYtY2hhcmFjdGVyIG5hbWVzLgotCQkgKi8KLQkJcmV0dXJuIChs ZW4gPT0gNCB8fCBsZW4gPT0gNSB8fCBsZW4gPT0gNik7Ci19Ci0KIC8qCiAgKiBTY2FuIHRoZSBT aW1wbGVMcnUgZGlyZWN0b3J5IGFuZCBhcHBseSBhIGNhbGxiYWNrIHRvIGVhY2ggZmlsZSBmb3Vu ZCBpbiBpdC4KICAqCkBAIC0xODAwLDcgKzE3NTUsNyBAQCBTbHJ1U2NhbkRpcmVjdG9yeShTbHJ1 Q3RsIGN0bCwgU2xydVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIAogCQlsZW4g PSBzdHJsZW4oY2xkZS0+ZF9uYW1lKTsKIAotCQlpZiAoU2xydUNvcnJlY3RTZWdtZW50RmlsZW5h bWVMZW5ndGgoY3RsLCBsZW4pICYmCisJCWlmICgobGVuID09IDE1KSAmJgogCQkJc3Ryc3BuKGNs ZGUtPmRfbmFtZSwgIjAxMjM0NTY3ODlBQkNERUYiKSA9PSBsZW4pCiAJCXsKIAkJCXNlZ25vID0g c3RydG9pNjQoY2xkZS0+ZF9uYW1lLCBOVUxMLCAxNik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v c3VidHJhbnMuYwppbmRleCA1MGJiMWQ4Y2ZjLi5iOTJkN2Q0ZTI3IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3N1YnRyYW5zLmMKQEAgLTI0Myw3ICsyNDMsNyBAQCBTVUJUUkFOU1NobWVtSW5p dCh2b2lkKQogCVN1YlRyYW5zQ3RsLT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRl czsKIAlTaW1wbGVMcnVJbml0KFN1YlRyYW5zQ3RsLCAic3VidHJhbnNhY3Rpb24iLCBTVUJUUkFO U1NobWVtQnVmZmVycygpLCAwLAogCQkJCSAgInBnX3N1YnRyYW5zIiwgTFdUUkFOQ0hFX1NVQlRS QU5TX0JVRkZFUiwKLQkJCQkgIExXVFJBTkNIRV9TVUJUUkFOU19TTFJVLCBTWU5DX0hBTkRMRVJf Tk9ORSwgZmFsc2UpOworCQkJCSAgTFdUUkFOQ0hFX1NVQlRSQU5TX1NMUlUsIFNZTkNfSEFORExF Ul9OT05FKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5zQ3RsLCBTVUJUUkFO U19YQUNUU19QRVJfUEFHRSk7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2FzeW5jLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDhlZDUwM2UxYzEu Ljg0ZTg5ZTZmMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYwpAQCAtNTM3LDcgKzUzNyw3IEBAIEFzeW5j U2htZW1Jbml0KHZvaWQpCiAJTm90aWZ5Q3RsLT5QYWdlUHJlY2VkZXMgPSBhc3luY1F1ZXVlUGFn ZVByZWNlZGVzOwogCVNpbXBsZUxydUluaXQoTm90aWZ5Q3RsLCAibm90aWZ5Iiwgbm90aWZ5X2J1 ZmZlcnMsIDAsCiAJCQkJICAicGdfbm90aWZ5IiwgTFdUUkFOQ0hFX05PVElGWV9CVUZGRVIsIExX VFJBTkNIRV9OT1RJRllfU0xSVSwKLQkJCQkgIFNZTkNfSEFORExFUl9OT05FLCB0cnVlKTsKKwkJ CQkgIFNZTkNfSEFORExFUl9OT05FKTsKIAogCWlmICghZm91bmQpCiAJewpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGUyNGEwZjJmZGIuLjllOGE0Yzc4NTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTgxNCw3ICs4MTQsNyBAQCBTZXJpYWxJbml0 KHZvaWQpCiAJU2ltcGxlTHJ1SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKIAkJ CQkgIHNlcmlhbGl6YWJsZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKIAkJCQkgIExXVFJBTkNI RV9TRVJJQUxfQlVGRkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRM RVJfTk9ORSwgZmFsc2UpOworCQkJCSAgU1lOQ19IQU5ETEVSX05PTkUpOwogI2lmZGVmIFVTRV9B U1NFUlRfQ0hFQ0tJTkcKIAlTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYyBiL3Ny Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMKaW5kZXggNjYzMjM1ODE2Zi4uOWE3OGVjYzkx YSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMv YmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5jCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRl ICJwb3N0Z3Jlc19mZS5oIgogCisjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8dGltZS5o PgogCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzc19kLmgiCkBAIC01OSw2ICs2MCw4IEBAIHN0 YXRpYyB2b2lkIHByZXBhcmVfbmV3X2NsdXN0ZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBwcmVwYXJl X25ld19nbG9iYWxzKHZvaWQpOwogc3RhdGljIHZvaWQgY3JlYXRlX25ld19vYmplY3RzKHZvaWQp Owogc3RhdGljIHZvaWQgY29weV94YWN0X3hsb2dfeGlkKHZvaWQpOworc3RhdGljIHZvaWQgY2hl Y2tfc2xydV9zZWdtZW50X2ZpbGVuYW1lcyh2b2lkKTsKK3N0YXRpYyB2b2lkIHJlbmFtZV9zbHJ1 X3NlZ21lbnRzKGNvbnN0IGNoYXIgKmRpcm5hbWUpOwogc3RhdGljIHZvaWQgc2V0X2Zyb3plbnhp ZHMoYm9vbCBtaW5teGlkX29ubHkpOwogc3RhdGljIHZvaWQgbWFrZV9vdXRwdXRkaXJzKGNoYXIg KnBnZGF0YSk7CiBzdGF0aWMgdm9pZCBzZXR1cChjaGFyICphcmd2MCk7CkBAIC0xNTQsNiArMTU3 LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICovCiAKIAljb3B5X3hhY3RfeGxv Z194aWQoKTsKKwljaGVja19zbHJ1X3NlZ21lbnRfZmlsZW5hbWVzKCk7CiAKIAkvKiBOZXcgbm93 IHVzaW5nIHhpZHMgb2YgdGhlIG9sZCBzeXN0ZW0gKi8KIApAQCAtODA2LDYgKzgxMCw4MCBAQCBj b3B5X3hhY3RfeGxvZ194aWQodm9pZCkKIAljaGVja19vaygpOwogfQogCitzdGF0aWMgdm9pZAor cmVuYW1lX3NscnVfc2VnbWVudHMoY29uc3QgY2hhciogZGlybmFtZSkKK3sKKwlESVIJCSAgICpk aXI7CisJc3RydWN0IGRpcmVudCAqZGU7CisJaW50IAkJbGVuOworCWludDY0IAkJc2Vnbm87CisJ Y2hhcgkJZGlyX3BhdGhbTUFYUEdQQVRIXTsKKwljaGFyCQlvbGRfcGF0aFtNQVhQR1BBVEhdOwor CWNoYXIJCW5ld19wYXRoW01BWFBHUEFUSF07CisKKwlwcmVwX3N0YXR1cygiUmVuYW1pbmcgU0xS VSBzZWdtZW50cyBpbiAlcyIsIGRpcm5hbWUpOworCXNucHJpbnRmKGRpcl9wYXRoLCBzaXplb2Yo ZGlyX3BhdGgpLCAiJXMvJXMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEsIGRpcm5hbWUpOworCisJZGly ID0gb3BlbmRpcihkaXJfcGF0aCk7CisJaWYgKGRpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291 bGQgbm90IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJfcGF0aCk7CisKKwl3aGlsZSAo ZXJybm8gPSAwLCAoZGUgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBp Z25vcmUgJy4nLCAnLi4nIGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCBkb2Vzbid0IGxvb2sKKwkJ ICogbGlrZSBhbiBTTFJVIHNlZ21lbnQgd2l0aCBhIHNob3J0IGZpbGUgbmFtZQorCQkgKi8KKwor CQlsZW4gPSBzdHJsZW4oZGUtPmRfbmFtZSk7CisJCWlmKGxlbiAhPSA0ICYmIGxlbiAhPSA1ICYm IGxlbiAhPSA2KQorCQkJY29udGludWU7CisKKwkJaWYoc3Ryc3BuKGRlLT5kX25hbWUsICIwMTIz NDU2Nzg5QUJDREVGIikgIT0gbGVuKQorCQkJY29udGludWU7CisKKwkJc2Vnbm8gPSBzdHJ0b2k2 NChkZS0+ZF9uYW1lLCBOVUxMLCAxNik7CisJCXNucHJpbnRmKG5ld19wYXRoLCBNQVhQR1BBVEgs ICIlcy8lMDE1bGxYIiwgZGlyX3BhdGgsCisJCQkJCShsb25nIGxvbmcpIHNlZ25vKTsKKwkJc25w cmludGYob2xkX3BhdGgsIE1BWFBHUEFUSCwgIiVzLyVzIiwgZGlyX3BhdGgsIGRlLT5kX25hbWUp OworCisJCWlmIChwZ19tdl9maWxlKG9sZF9wYXRoLCBuZXdfcGF0aCkgIT0gMCkKKwkJCXBnX2Zh dGFsKCJjb3VsZCBub3QgcmVuYW1lIGZpbGUgXCIlc1wiIHRvIFwiJXNcIjogJW0iLAorCQkJCQkg b2xkX3BhdGgsIG5ld19wYXRoKTsKKwl9CisKKwlpZiAoZXJybm8pCisJCXBnX2ZhdGFsKCJjb3Vs ZCBub3QgcmVhZCBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIGRpcl9wYXRoKTsKKworCWlmIChjbG9z ZWRpcihkaXIpKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6 ICVtIiwgZGlyX3BhdGgpOworCisJY2hlY2tfb2soKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNr X3NscnVfc2VnbWVudF9maWxlbmFtZXModm9pZCkKK3sKKwlpbnQgaTsKKwlzdGF0aWMgY29uc3Qg Y2hhciogZGlyc1tdID0geworCQkicGdfeGFjdCIsCisJCSJwZ19jb21taXRfdHMiLAorCQkicGdf bXVsdGl4YWN0L29mZnNldHMiLAorCQkicGdfbXVsdGl4YWN0L21lbWJlcnMiLAorCQkicGdfc3Vi dHJhbnMiLAorCQkicGdfc2VyaWFsIiwKKwl9OworCisJLyoKKwlUT0RPIEZJWE1FIFVOQ09NTUVO VCBCRUZPUkUgQ09NTUlUVElORworCWlmKG5ld19jbHVzdGVyLmNvbnRyb2xkYXRhLmNhdF92ZXIg PCBTTFJVX1NFR19GSUxFTkFNRVNfQ0hBTkdFX0NBVF9WRVIpCisJCXJldHVybjsKKwkqLworCisJ Zm9yIChpID0gMDsgaSA8IHNpemVvZihkaXJzKS9zaXplb2YoZGlyc1swXSk7IGkrKykKKwkJcmVu YW1lX3NscnVfc2VnbWVudHMoZGlyc1tpXSk7Cit9CisKIAogLyoKICAqCXNldF9mcm96ZW54aWRz KCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggYi9zcmMvYmlu L3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCmluZGV4IGNkYjZlMmI3NTkuLmJhM2FkMGY0OTAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmgKKysrIGIvc3JjL2Jpbi9w Z191cGdyYWRlL3BnX3VwZ3JhZGUuaApAQCAtMTI1LDYgKzEyNSwxMiBAQCBleHRlcm4gY2hhciAq b3V0cHV0X2ZpbGVzW107CiAgKi8KICNkZWZpbmUgSlNPTkJfRk9STUFUX0NIQU5HRV9DQVRfVkVS IDIwMTQwOTI5MQogCisvKgorICogY2hhbmdlIG9mIFNMUlUgc2VnbWVudCBmaWxlbmFtZXMgbGVu Z3RoIGluIDE4LjAKKyAqIFRPRE8gRklYTUUgQ0hBTkdFIFRPIFRIRSBBQ1RVQUwgVkFMVUUgQkVG T1JFIENPTU1JVFRJTkcKKyAqLworI2RlZmluZSBTTFJVX1NFR19GSUxFTkFNRVNfQ0hBTkdFX0NB VF9WRVIgMjAyNDEwMDEKKwogCiAvKgogICogRWFjaCByZWxhdGlvbiBpcyByZXByZXNlbnRlZCBi eSBhIHJlbGluZm8gc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvdC8wMDNfY29ycnVwdGlvbi5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2Nv cnJ1cHRpb24ucGwKaW5kZXggYWU5MWUwNDMzOC4uYjRlYTNhOGJkOSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbAorKysgYi9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCkBAIC0xODIsNyArMTgyLDcgQEAgc3Vi IG11dGlsYXRlX2V4dHJhX3RhYmxlc3BhY2VfZmlsZQogc3ViIG11dGlsYXRlX21pc3NpbmdfZmls ZQogewogCW15ICgkYmFja3VwX3BhdGgpID0gQF87Ci0JbXkgJHBhdGhuYW1lID0gIiRiYWNrdXBf cGF0aC9wZ194YWN0LzAwMDAiOworCW15ICRwYXRobmFtZSA9ICIkYmFja3VwX3BhdGgvcGdfeGFj dC8wMDAwMDAwMDAwMDAwMDAiOwogCXVubGluaygkcGF0aG5hbWUpIHx8IGRpZSAiJHBhdGhuYW1l OiAkISI7CiAJcmV0dXJuOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKaW5kZXggOTdlNjEyY2QxMC4uOTRjMmUzNzEy ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3Mvc2xydS5oCkBAIC0xMzMsMTMgKzEzMyw2IEBAIHR5cGVkZWYgc3RydWN0IFNscnVD dGxEYXRhCiAJICovCiAJYml0czE2CQliYW5rX21hc2s7CiAKLQkvKgotCSAqIElmIHRydWUsIHVz ZSBsb25nIHNlZ21lbnQgZmlsZSBuYW1lcy4gIE90aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFt ZXMuCi0JICoKLQkgKiBGb3IgZGV0YWlscyBhYm91dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2Vl IFNscnVGaWxlTmFtZSgpLgotCSAqLwotCWJvb2wJCWxvbmdfc2VnbWVudF9uYW1lczsKLQogCS8q CiAJICogV2hpY2ggc3luYyBoYW5kbGVyIGZ1bmN0aW9uIHRvIHVzZSB3aGVuIGhhbmRpbmcgc3lu YyByZXF1ZXN0cyBvdmVyIHRvCiAJICogdGhlIGNoZWNrcG9pbnRlci4gIFNZTkNfSEFORExFUl9O T05FIHRvIGRpc2FibGUgZnN5bmMgKGVnIHBnX25vdGlmeSkuCkBAIC0xODcsOCArMTgwLDcgQEAg ZXh0ZXJuIFNpemUgU2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGludCBubHNucyk7CiBl eHRlcm4gaW50CVNpbXBsZUxydUF1dG90dW5lQnVmZmVycyhpbnQgZGl2aXNvciwgaW50IG1heCk7 CiBleHRlcm4gdm9pZCBTaW1wbGVMcnVJbml0KFNscnVDdGwgY3RsLCBjb25zdCBjaGFyICpuYW1l LCBpbnQgbnNsb3RzLCBpbnQgbmxzbnMsCiAJCQkJCQkgIGNvbnN0IGNoYXIgKnN1YmRpciwgaW50 IGJ1ZmZlcl90cmFuY2hlX2lkLAotCQkJCQkJICBpbnQgYmFua190cmFuY2hlX2lkLCBTeW5jUmVx dWVzdEhhbmRsZXIgc3luY19oYW5kbGVyLAotCQkJCQkJICBib29sIGxvbmdfc2VnbWVudF9uYW1l cyk7CisJCQkJCQkgIGludCBiYW5rX3RyYW5jaGVfaWQsIFN5bmNSZXF1ZXN0SGFuZGxlciBzeW5j X2hhbmRsZXIpOwogZXh0ZXJuIGludAlTaW1wbGVMcnVaZXJvUGFnZShTbHJ1Q3RsIGN0bCwgaW50 NjQgcGFnZW5vKTsKIGV4dGVybiBpbnQJU2ltcGxlTHJ1UmVhZFBhZ2UoU2xydUN0bCBjdGwsIGlu dDY0IHBhZ2VubywgYm9vbCB3cml0ZV9vaywKIAkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgeGlkKTsK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMKaW5kZXggZDIyN2IwNjcwMy4uZGU2 YTZiZmZkMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1 LmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMKQEAgLTIxMywx MSArMjEzLDYgQEAgdGVzdF9zbHJ1X3BhZ2VfcHJlY2VkZXNfbG9naWNhbGx5KGludDY0IHBhZ2Ux LCBpbnQ2NCBwYWdlMikKIHN0YXRpYyB2b2lkCiB0ZXN0X3NscnVfc2htZW1fc3RhcnR1cCh2b2lk KQogewotCS8qCi0JICogU2hvcnQgc2VnbWVudHMgbmFtZXMgYXJlIHdlbGwgdGVzdGVkIGVsc2V3 aGVyZSBzbyBpbiB0aGlzIHRlc3Qgd2UgYXJlCi0JICogZm9jdXNpbmcgb24gbG9uZyBuYW1lcy4K LQkgKi8KLQljb25zdCBib29sCWxvbmdfc2VnbWVudF9uYW1lcyA9IHRydWU7CiAJY29uc3QgY2hh cglzbHJ1X2Rpcl9uYW1lW10gPSAicGdfdGVzdF9zbHJ1IjsKIAlpbnQJCQl0ZXN0X3RyYW5jaGVf aWQ7CiAJaW50CQkJdGVzdF9idWZmZXJfdHJhbmNoZV9pZDsKQEAgLTI0MSw4ICsyMzYsNyBAQCB0 ZXN0X3NscnVfc2htZW1fc3RhcnR1cCh2b2lkKQogCVRlc3RTbHJ1Q3RsLT5QYWdlUHJlY2VkZXMg PSB0ZXN0X3NscnVfcGFnZV9wcmVjZWRlc19sb2dpY2FsbHk7CiAJU2ltcGxlTHJ1SW5pdChUZXN0 U2xydUN0bCwgIlRlc3RTTFJVIiwKIAkJCQkgIE5VTV9URVNUX0JVRkZFUlMsIDAsIHNscnVfZGly X25hbWUsCi0JCQkJICB0ZXN0X2J1ZmZlcl90cmFuY2hlX2lkLCB0ZXN0X3RyYW5jaGVfaWQsIFNZ TkNfSEFORExFUl9OT05FLAotCQkJCSAgbG9uZ19zZWdtZW50X25hbWVzKTsKKwkJCQkgIHRlc3Rf YnVmZmVyX3RyYW5jaGVfaWQsIHRlc3RfdHJhbmNoZV9pZCwgU1lOQ19IQU5ETEVSX05PTkUpOwog fQogCiB2b2lkCi0tIAoyLjQ2LjAKCg== --00000000000069a99d0621d7aba9--