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.96) (envelope-from ) id 1vaPht-0083R5-1q for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 02:43:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vaPhs-0023ru-1b for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 02:43:33 +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.96) (envelope-from ) id 1vaPhs-0023rk-0N for pgsql-hackers@lists.postgresql.org; Tue, 30 Dec 2025 02:43:32 +0000 Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vaPhq-003Unp-1z for pgsql-hackers@lists.postgresql.org; Tue, 30 Dec 2025 02:43:32 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-b727f452fffso1689753566b.1 for ; Mon, 29 Dec 2025 18:43:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767062610; x=1767667410; 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=++AWYly4TBt9S4QD/ZQwP0vAsG8eMjC+Uln3k1KBrsM=; b=eQeAf//udXyK2qfKmwZ/8GB9L3BSXB8jgB0ohVFqKLKqWcbndDjjgqXXm8AGrgUlOe 6s2HL5P4WgO0dLgA3C8M4+yvs7saBKVXpVAePh3OwS1+cgsH08G7gPHrzgQdE7xyRVIP lilqRkJzJxgZZI6U707KYTMvOF/87axwukGE0INDZvqO45XFr/7VC32owZH6fhNuLMju HTyRoBEfIhUpeXcST9ZS9PvxsAkthGjPezvs/2mWt8+cTnJL4r7/tQ5MnADxIHbDaYtE zF1JyzgWO7Ts7nyr3oaZg4DNYtfa8h/mrC/QaWBH3PEkbmUVoBbPTwbZJUEfKIwdw4bl Aiuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767062610; x=1767667410; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=++AWYly4TBt9S4QD/ZQwP0vAsG8eMjC+Uln3k1KBrsM=; b=t4i8nshJFtKT4TrGXoA8r3OFVxYHCfU68nW2Ks2S3rA4EosIy9Jp4Tsx9Awj4X60j/ px3FrkRuUtDL25gvpwWLNabnIy+cZLx1Jmu6q7vOuT5qQB2eVBc7YHg+Pc0zvWw/ATK9 YcQ3bUcjv4qpQire3x0EiePDlUHFxIqhtpevWZxcFnvn4E1SWA29EDJiTqEPEU8rg1IQ TBOOjALNUiuFpQTn5NhCOfhyohk/bgN/+ECQ4SAMGljVpqHd5Bp6ir/zlWjNd3sbAZzq oDL+ocfi298gKytzcQcIeojeA3zyWQO9BjEUiF0nKCDNl4gbmfYZrIcIDZVoEmybQuqv lKVw== X-Gm-Message-State: AOJu0YxJdksWsZfbRhs9YTd/syf0IZxJFKLtuBIK/AyF+SNTRBp55NH7 kbC9qLN4co19zyDeQ255iAd7n9TfSEZo9x5eO0hq2sTHRS+tWDMatUeVTXW0oNG2mRfkryov0uo RQgElysAlHmVLtfWCsVf0/MbxPNI8B1/wPvUitEw= X-Gm-Gg: AY/fxX7jfTkOYWA0tKkOd4Ru3uXkfQZjqzVG1gZjoYAKz2AbU2kB6S92QJtmjBUs9jq yxxqANOck1bOSHJ0pyeSmq/5OHSb5gZnnYC/HIyUeu12t9ekmFgDf2Ghp/ct0Dt/T1B2w+EGKjf xvwARzkkJSPjuDFLezQF0hXYLRUWtPTwpetCX1JBaHXVB0s84PbTUvqA8J8N0V9B5DnS+ggVs9u K99HpUbOP4Fn7OT19IdvYvQLLDeWiJ4brR6RDFGwthngVOsIYWwAViniLoFELvoH1IW99J//n48 /ge+UgxS66IiKVNl+Q+xVVImTcNLTfsOB2pCD69H25SE/mxEzB574ev0Un1fUK+cHRdTZF+6OCJ hmLSeWQ== X-Google-Smtp-Source: AGHT+IHacFmMV1CB0q1ppMew77ogGusBPCgZ2hm4Sy3kUFg3HjKZiSSG5RrZCcG21CE2kSRO1n9O8lXp3k5xoTh+WrA= X-Received: by 2002:a17:907:1b0c:b0:b7a:71b7:2409 with SMTP id a640c23a62f3a-b8035743d9cmr4405799466b.15.1767062609761; Mon, 29 Dec 2025 18:43:29 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Tue, 30 Dec 2025 10:43:17 +0800 X-Gm-Features: AQt7F2osuPs1d65STayfHgc3tFntxQZASpp2zWfEr2m6KhOgB5kLgJwSbSdKx_w Message-ID: Subject: Re: Streamify more code paths To: Nazir Bilal Yavuz Cc: pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000026e7f50647225355" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000026e7f50647225355 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Dec 30, 2025 at 9:51=E2=80=AFAM Xuneng Zhou = wrote: > > Hi, > > Thanks for looking into this. > > On Mon, Dec 29, 2025 at 6:58=E2=80=AFPM Nazir Bilal Yavuz wrote: > > > > Hi, > > > > On Sun, 28 Dec 2025 at 14:46, Xuneng Zhou wrote: > > > > > > Hi, > > > > > > > > Two more to go: > > > > patch 5: Streamify log_newpage_range() WAL logging path > > > > patch 6: Streamify hash index VACUUM primary bucket page reads > > > > > > > > Benchmarks will be conducted soon. > > > > > > > > > > v6 in the last message has a problem and has not been updated. Attach > > > the right one again. Sorry for the noise. > > > > 0003 and 0006: > > > > You need to add 'StatApproxReadStreamPrivate' and > > 'HashBulkDeleteStreamPrivate' to the typedefs.list. > > Done. > > > 0005: > > > > @@ -1321,8 +1341,10 @@ log_newpage_range(Relation rel, ForkNumber forkn= um, > > nbufs =3D 0; > > while (nbufs < XLR_MAX_BLOCK_ID && blkno < endblk) > > { > > - Buffer buf =3D ReadBufferExtended(rel, forknum, blk= no, > > - RBM_NORMAL, NULL); > > + Buffer buf =3D read_stream_next_buffer(stream, NULL= ); > > + > > + if (!BufferIsValid(buf)) > > + break; > > > > We are loosening a check here, there should not be a invalid buffer in > > the stream until the endblk. I think you can remove this > > BufferIsValid() check, then we can learn if something goes wrong. > > My concern before for not adding assert at the end of streaming is the > potential early break in here: > > /* Nothing more to do if all remaining blocks were empty. */ > if (nbufs =3D=3D 0) > break; > > After looking more closely, it turns out to be a misunderstanding of the = logic. > > > 0006: > > > > You can use read_stream_reset() instead of read_stream_end(), then you > > can use the same stream with different variables, I believe this is > > the preferred way. > > > > Rest LGTM! > > > > Yeah, reset seems a more proper way here. > Run pgindent using the updated typedefs.list. --=20 Best, Xuneng --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0001-Switch-Bloom-scan-paths-to-streaming-read.-n-nRep.patch" Content-Disposition: attachment; filename="v4-0001-Switch-Bloom-scan-paths-to-streaming-read.-n-nRep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzf6kt0 RnJvbSAzMTRmOWNkZjZkOGE2MmNjODUyM2IzNzdiOGNmMTlkZjY0NmI5OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMS82XSBT d2l0Y2ggQmxvb20gc2NhbiBwYXRocyB0byBzdHJlYW1pbmcgcmVhZC5cblxuUmVwbGFjZQogcGVy LXBhZ2UgUmVhZEJ1ZmZlciBsb29wcyBpbiBibGdldGJpdG1hcCgpIHdpdGggcmVhZF9zdHJlYW1f YmVnaW5fcmVsYXRpb24oKQogYW5kIHNlcXVlbnRpYWwgYnVmZmVyIGl0ZXJhdGlvbiwgcmVkdWNp bmcgYnVmZmVyIGNodXJuIGFuZCBpbXByb3Zpbmcgc2NhbgogZWZmaWNpZW5jeSBvbiBsYXJnZSBC bG9vbSBpbmRleGVzLgoKLS0tCiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jIHwgMjkgKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMgYi9jb250 cmliL2Jsb29tL2Jsc2Nhbi5jCmluZGV4IDBkNzFlZGJlOTFjLi5iMWZkYWJhYWI3NCAxMDA2NDQK LS0tIGEvY29udHJpYi9ibG9vbS9ibHNjYW4uYworKysgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5j CkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Jl YWRfc3RyZWFtLmgiCiAKIC8qCiAgKiBCZWdpbiBzY2FuIG9mIGJsb29tIGluZGV4LgpAQCAtNzUs MTEgKzc2LDEzIEBAIGludDY0CiBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJp dG1hcCAqdGJtKQogewogCWludDY0CQludGlkcyA9IDA7Ci0JQmxvY2tOdW1iZXIgYmxrbm8gPSBC TE9PTV9IRUFEX0JMS05PLAorCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCW5wYWdlczsKIAlpbnQJ CQlpOwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJhczsKIAlCbG9vbVNjYW5PcGFxdWUgc28gPSAo Qmxvb21TY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2 YXRlIHA7CisJUmVhZFN0cmVhbSAqc3RyZWFtOwogCiAJaWYgKHNvLT5zaWduID09IE5VTEwpCiAJ ewpAQCAtMTE5LDE0ICsxMjIsMjkgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBU SURCaXRtYXAgKnRibSkKIAlpZiAoc2Nhbi0+aW5zdHJ1bWVudCkKIAkJc2Nhbi0+aW5zdHJ1bWVu dC0+bnNlYXJjaGVzKys7CiAKKwkvKiBTY2FuIGFsbCBibG9ja3MgZXhjZXB0IHRoZSBtZXRhcGFn ZSB1c2luZyBzdHJlYW1pbmcgcmVhZHMgKi8KKwlwLmN1cnJlbnRfYmxvY2tudW0gPSBCTE9PTV9I RUFEX0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlz IHNhZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtl cyBubworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0 aW9uKFJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElO RywKKwkJCQkJCQkJCQliYXMsCisJCQkJCQkJCQkJc2Nhbi0+aW5kZXhSZWxhdGlvbiwKKwkJCQkJ CQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2Is CisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25vID0gQkxPT01fSEVB RF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZmZXIJCWJ1ZmZlcjsK IAkJUGFnZQkJcGFnZTsKIAotCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc2Nhbi0+aW5k ZXhSZWxhdGlvbiwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJYmxrbm8sIFJCTV9OT1JNQUwsIGJh cyk7Ci0KKwkJYnVmZmVyID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsK IAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZl ckdldFBhZ2UoYnVmZmVyKTsKIApAQCAtMTYyLDYgKzE4MCw5IEBAIGJsZ2V0Yml0bWFwKEluZGV4 U2NhbkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVm ZmVyKTsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CisKKwlBc3NlcnQocmVhZF9zdHJl YW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsKKwlyZWFkX3N0 cmVhbV9lbmQoc3RyZWFtKTsKIAlGcmVlQWNjZXNzU3RyYXRlZ3koYmFzKTsKIAogCXJldHVybiBu dGlkczsKLS0gCjIuNTEuMAoK --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Disposition: attachment; filename="v4-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzfb6j4 RnJvbSA1ZDI4NmUxYThlY2NlOTA5MjFlNDRhNjU1NzUxZjhjYzU4NzU0NThhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOTowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgNS82XSBT dHJlYW1pZnkgbG9nX25ld3BhZ2VfcmFuZ2UoKSBXQUwgbG9nZ2luZyBwYXRoCgpSZWZhY3RvciBs b2dfbmV3cGFnZV9yYW5nZSgpIHRvIHVzZSB0aGUgUmVhZCBTdHJlYW0uIFRoaXMgYWxsb3dzCnBy ZWZldGNoaW5nIG9mIHVwY29taW5nIHJlbGF0aW9uIGJsb2NrcyBkdXJpbmcgYnVsayBXQUwgbG9n Z2luZwpwZXJhdGlvbnMsIG92ZXJsYXBwaW5nIEkvTyB3aXRoIENQVS1pbnRlbnNpdmUgWExvZ0lu c2VydCBhbmQKV0FMLXdyaXRpbmcgd29yay4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94bG9naW5zZXJ0LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hh bmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9naW5zZXJ0LmMKaW5kZXggYTU2ZDVhNTUyODIuLjIwNzVhZWE3MDM3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9naW5zZXJ0LmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ2luc2VydC5jCkBAIC0zOSw2ICszOSw3IEBACiAj aW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3Iu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3Ry ZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ3N0 YXRfaW50ZXJuYWwuaCIKIApAQCAtMTI5NSw2ICsxMjk2LDggQEAgbG9nX25ld3BhZ2VfcmFuZ2Uo UmVsYXRpb24gcmVsLCBGb3JrTnVtYmVyIGZvcmtudW0sCiB7CiAJaW50CQkJZmxhZ3M7CiAJQmxv Y2tOdW1iZXIgYmxrbm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0 cmVhbSAqc3RyZWFtOwogCiAJZmxhZ3MgPSBSRUdCVUZfRk9SQ0VfSU1BR0U7CiAJaWYgKHBhZ2Vf c3RkKQpAQCAtMTMwNyw2ICsxMzEwLDIzIEBAIGxvZ19uZXdwYWdlX3JhbmdlKFJlbGF0aW9uIHJl bCwgRm9ya051bWJlciBmb3JrbnVtLAogCSAqLwogCVhMb2dFbnN1cmVSZWNvcmRTcGFjZShYTFJf TUFYX0JMT0NLX0lEIC0gMSwgMCk7CiAKKwkvKiBTZXQgdXAgYSBzdHJlYW1pbmcgcmVhZCBmb3Ig dGhlIHJhbmdlIG9mIGJsb2NrcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IHN0YXJ0YmxrOwor CXAubGFzdF9leGNsdXNpdmUgPSBlbmRibGs7CisKKwkvKgorCSAqIEl0IGlzIHNhZmUgdG8gdXNl IGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubworCSAqIGxv Y2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RS RUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJ CQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJZm9ya251bSwKKwkJCQkJ CQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJCQkJ CQkwKTsKKwogCWJsa25vID0gc3RhcnRibGs7CiAJd2hpbGUgKGJsa25vIDwgZW5kYmxrKQogCXsK QEAgLTEzMjEsOCArMTM0MSw3IEBAIGxvZ19uZXdwYWdlX3JhbmdlKFJlbGF0aW9uIHJlbCwgRm9y a051bWJlciBmb3JrbnVtLAogCQluYnVmcyA9IDA7CiAJCXdoaWxlIChuYnVmcyA8IFhMUl9NQVhf QkxPQ0tfSUQgJiYgYmxrbm8gPCBlbmRibGspCiAJCXsKLQkJCUJ1ZmZlcgkJYnVmID0gUmVhZEJ1 ZmZlckV4dGVuZGVkKHJlbCwgZm9ya251bSwgYmxrbm8sCi0JCQkJCQkJCQkJCQkgUkJNX05PUk1B TCwgTlVMTCk7CisJCQlCdWZmZXIJCWJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVh bSwgTlVMTCk7CiAKIAkJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOwog CkBAIC0xMzYxLDYgKzEzODAsOSBAQCBsb2dfbmV3cGFnZV9yYW5nZShSZWxhdGlvbiByZWwsIEZv cmtOdW1iZXIgZm9ya251bSwKIAkJfQogCQlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAJfQorCisJQXNz ZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52YWxpZEJ1ZmZl cik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CiB9CiAKIC8qCi0tIAoyLjUxLjAKCg== --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Disposition: attachment; filename="v4-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzfb6h3 RnJvbSBmMzljOGZmYTNiYTcyN2YwYzE2NTZjNzEwNjEzMDk4MWJjZmU1OWQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgNC82XSBS ZXBsYWNlIHN5bmNocm9ub3VzIFJlYWRCdWZmZXJFeHRlbmRlZCgpIGxvb3Agd2l0aCB0aGUKIHN0 cmVhbWluZyByZWFkIGluIGdpbnZhY3V1bWNsZWFudXAoKSB0byBpbXByb3ZlIEkvTyBlZmZpY2ll bmN5IGR1cmluZyBHSU4KIGluZGV4IHZhY3V1bSBjbGVhbnVwIG9wZXJhdGlvbnMKCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYyB8IDI4ICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IGQ3YmFmN2M4NDdjLi41OGUwNWM3 MTI1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0yMiw2ICsyMiw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0 cmVhbS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0cnVjdCBHaW5WYWN1dW1T dGF0ZQpAQCAtNjkzLDYgKzY5NCw4IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCUJsb2NrTnVtYmVyIHRvdEZy ZWVQYWdlczsKIAlHaW5TdGF0ZQlnaW5zdGF0ZTsKIAlHaW5TdGF0c0RhdGEgaWR4U3RhdDsKKwlC bG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKKwlSZWFkU3RyZWFtICpzdHJlYW07CiAKIAkv KgogCSAqIEluIGFuIGF1dG92YWN1dW0gYW5hbHl6ZSwgd2Ugd2FudCB0byBjbGVhbiB1cCBwZW5k aW5nIGluc2VydGlvbnMuCkBAIC03NDMsNiArNzQ2LDI0IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5k ZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJdG90 RnJlZVBhZ2VzID0gMDsKIAorCS8qIFNjYW4gYWxsIGJsb2NrcyBzdGFydGluZyBmcm9tIHRoZSBy b290IHVzaW5nIHN0cmVhbWluZyByZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEdJTl9S T09UX0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlz IHNhZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtl cyBubworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0 aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxM IHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJaW5mby0+ c3RyYXRlZ3ksCisJCQkJCQkJCQkJaW5kZXgsCisJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJ CQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLAorCQkJCQkJCQkJCSZwLAorCQkJCQkJ CQkJCTApOworCiAJZm9yIChibGtubyA9IEdJTl9ST09UX0JMS05POyBibGtubyA8IG5wYWdlczsg Ymxrbm8rKykKIAl7CiAJCUJ1ZmZlcgkJYnVmZmVyOwpAQCAtNzUwLDggKzc3MSw4IEBAIGdpbnZh Y3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCiAJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJN X05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1 ZmZlcihzdHJlYW0sIE5VTEwpOworCiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fU0hBUkUpOwog CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC03NzYsNiArNzk3LDkgQEAgZ2lu dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMpCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAl9CiAKKwlBc3NlcnQo cmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsK KwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsKKwogCS8qIFVwZGF0ZSB0aGUgbWV0YXBhZ2Ugd2l0 aCBhY2N1cmF0ZSBwYWdlIGFuZCBlbnRyeSBjb3VudHMgKi8KIAlpZHhTdGF0Lm5Ub3RhbFBhZ2Vz ID0gbnBhZ2VzOwogCWdpblVwZGF0ZVN0YXRzKGluZm8tPmluZGV4LCAmaWR4U3RhdCwgZmFsc2Up OwotLSAKMi41MS4wCgo= --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0002-Streamify-Bloom-VACUUM-paths.-n-nUse-streaming-re.patch" Content-Disposition: attachment; filename="v4-0002-Streamify-Bloom-VACUUM-paths.-n-nUse-streaming-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzfb6d1 RnJvbSBhYWZkZmEwODUxYWI2MTc3N2U4ODc3Y2ZiNTBlM2IzNGJmNTRiOWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMi82XSBT dHJlYW1pZnkgQmxvb20gVkFDVVVNIHBhdGhzLlxuXG5Vc2Ugc3RyZWFtaW5nIHJlYWRzCiBpbiBi bGJ1bGtkZWxldGUoKSBhbmQgYmx2YWN1dW1jbGVhbnVwKCkgdG8gaXRlcmF0ZSBpbmRleCBwYWdl cyB3aXRob3V0CiByZXBlYXRlZCBSZWFkQnVmZmVyIGNhbGxzLCBpbXByb3ZpbmcgVkFDVVVNIHBl cmZvcm1hbmNlIGFuZCByZWR1Y2luZyBidWZmZXIKIG1hbmFnZXIgb3ZlcmhlYWQgZHVyaW5nIG1h aW50ZW5hbmNlIG9wZXJhdGlvbnMuCgotLS0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyB8IDU1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2Vk LCA1MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIv Ymxvb20vYmx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCBlNjhhOTAw OGY1Ni4uNzQ1MjMwMmYwMjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwor KysgYi9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRl ICJjb21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgi CiAKIAogLyoKQEAgLTQwLDYgKzQxLDggQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAq aW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlQYWdlCQlwYWdlOwogCUJsb29t TWV0YVBhZ2VEYXRhICptZXRhRGF0YTsKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOwor CUJsb2NrUmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAog CWlmIChzdGF0cyA9PSBOVUxMKQogCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0Rl bGV0ZVJlc3VsdCk7CkBAIC01MSw2ICs1NCwyNSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1J bmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqIHRoZXkgY2FuJ3Qg Y29udGFpbiB0dXBsZXMgdG8gZGVsZXRlLgogCSAqLwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVt YmVyT2ZCbG9ja3MoaW5kZXgpOworCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0 YXBhZ2UgdXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxP T01fSEVBRF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJ dCBpcyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2Ig dGFrZXMgbm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9y ZWxhdGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1f RlVMTCB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCWlu Zm8tPnN0cmF0ZWd5LAorCQkJCQkJCQkJCWluZGV4LAorCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwK KwkJCQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJ CQkJCQkJCQkwKTsKKwogCWZvciAoYmxrbm8gPSBCTE9PTV9IRUFEX0JMS05POyBibGtubyA8IG5w YWdlczsgYmxrbm8rKykKIAl7CiAJCUJsb29tVHVwbGUgKml0dXAsCkBAIC01OSw4ICs4MSw3IEBA IGJsYnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMsCiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBS ZWFkQnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCQlS Qk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRf YnVmZmVyKHN0cmVhbSwgTlVMTCk7CiAKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NL X0VYQ0xVU0lWRSk7CiAJCWd4bG9nU3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKQEAg LTEzMyw2ICsxNTQsOSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7 CiAJfQogCisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0g SW52YWxpZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKgogCSAqIFVw ZGF0ZSB0aGUgbWV0YXBhZ2UncyBub3RGdWxsUGFnZSBsaXN0IHdpdGggd2hhdGV2ZXIgd2UgZm91 bmQuICBPdXIKIAkgKiBpbmZvIGNvdWxkIGFscmVhZHkgYmUgb3V0IG9mIGRhdGUgYXQgdGhpcyBw b2ludCwgYnV0IGJsaW5zZXJ0KCkgd2lsbApAQCAtMTY2LDYgKzE5MCw4IEBAIGJsdmFjdXVtY2xl YW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMp CiAJUmVsYXRpb24JaW5kZXggPSBpbmZvLT5pbmRleDsKIAlCbG9ja051bWJlciBucGFnZXMsCiAJ CQkJYmxrbm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0cmVhbSAq c3RyZWFtOwogCiAJaWYgKGluZm8tPmFuYWx5emVfb25seSkKIAkJcmV0dXJuIHN0YXRzOwpAQCAt MTgxLDYgKzIwNywyNSBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJ bmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0YXRzLT5udW1fcGFnZXMgPSBucGFnZXM7 CiAJc3RhdHMtPnBhZ2VzX2ZyZWUgPSAwOwogCXN0YXRzLT5udW1faW5kZXhfdHVwbGVzID0gMDsK KworCS8qIFNjYW4gYWxsIGJsb2NrcyBleGNlcHQgdGhlIG1ldGFwYWdlIHVzaW5nIHN0cmVhbWlu ZyByZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEJMT09NX0hFQURfQkxLTk87CisJcC5s YXN0X2V4Y2x1c2l2ZSA9IG5wYWdlczsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0 Y2htb2RlIGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICogbG9ja3Mu CisJICovCisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1f TUFJTlRFTkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJF QURfU1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJ CQkJCQlpbmRleCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFu Z2VfcmVhZF9zdHJlYW1fY2IsCisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3Ig KGJsa25vID0gQkxPT01fSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewog CQlCdWZmZXIJCWJ1ZmZlcjsKQEAgLTE4OCw4ICsyMzMsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5k ZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJCXZh Y3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVk KGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+ c3RyYXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5V TEwpOwogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC0yMDYsNiArMjUwLDkgQEAgYmx2YWN1dW1jbGVh bnVwKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykK IAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KIAorCUFzc2VydChyZWFkX3N0cmVh bV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOworCXJlYWRfc3Ry ZWFtX2VuZChzdHJlYW0pOworCiAJSW5kZXhGcmVlU3BhY2VNYXBWYWN1dW0oaW5mby0+aW5kZXgp OwogCiAJcmV0dXJuIHN0YXRzOwotLSAKMi41MS4wCgo= --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Disposition: attachment; filename="v4-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzfb6l5 RnJvbSA1ODZiODAwN2NmZjQwNjcxZjcwMzlkNjdiNzdmOGUwMTU0ZThlNzgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOToyOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgNi82XSBT dHJlYW1pZnkgaGFzaCBpbmRleCBWQUNVVU0gcHJpbWFyeSBidWNrZXQgcGFnZSByZWFkcwoKUmVm YWN0b3IgaGFzaGJ1bGtkZWxldGUoKSB0byB1c2UgdGhlIFJlYWQgU3RyZWFtICBmb3IgcHJpbWFy eSBidWNrZXQKcGFnZXMuIFRoaXMgZW5hYmxlcyBwcmVmZXRjaGluZyBvZiB1cGNvbWluZyBidWNr ZXRzIHdoaWxlIHRoZSBjdXJyZW50Cm9uZSBpcyBiZWluZyBwcm9jZXNzZWQsIGltcHJvdmluZyBJ L08gZWZmaWNpZW5jeSBkdXJpbmcgaGFzaCBpbmRleAp2YWN1dW0gb3BlcmF0aW9ucy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgICB8IDgwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCB8ICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoLmMKaW5kZXggZTM4ODI1MmFmZGMuLjAxMjE5YzAwMTVlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rv cy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCkBAIC00MiwxMiArNDMsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlSZWxhdGlvbgloZWFw UmVsOwkJLyogaGVhcCByZWxhdGlvbiBkZXNjcmlwdG9yICovCiB9IEhhc2hCdWlsZFN0YXRlOwog CisvKiBXb3JraW5nIHN0YXRlIGZvciBzdHJlYW1pbmcgcmVhZHMgaW4gaGFzaGJ1bGtkZWxldGUg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisJSGFzaE1ldGFQYWdlIG1ldGFwOwkJCS8qIGNhY2hlZCBt ZXRhcGFnZSBmb3IgQlVDS0VUX1RPX0JMS05PICovCisJQnVja2V0CQluZXh0X2J1Y2tldDsJLyog bmV4dCBidWNrZXQgdG8gcHJlZmV0Y2ggKi8KKwlCdWNrZXQJCW1heF9idWNrZXQ7CQkvKiBzdG9w IHdoZW4gbmV4dF9idWNrZXQgPiBtYXhfYnVja2V0ICovCit9IEhhc2hCdWxrRGVsZXRlU3RyZWFt UHJpdmF0ZTsKKwogc3RhdGljIHZvaWQgaGFzaGJ1aWxkQ2FsbGJhY2soUmVsYXRpb24gaW5kZXgs CiAJCQkJCQkJICBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJICBEYXR1bSAqdmFsdWVzLAogCQkJ CQkJCSAgYm9vbCAqaXNudWxsLAogCQkJCQkJCSAgYm9vbCB0dXBsZUlzQWxpdmUsCiAJCQkJCQkJ ICB2b2lkICpzdGF0ZSk7CitzdGF0aWMgQmxvY2tOdW1iZXIgaGFzaF9idWxrZGVsZXRlX3JlYWRf c3RyZWFtX2NiKFJlYWRTdHJlYW0gKnN0cmVhbSwKKwkJCQkJCQkJCQkJCSAgdm9pZCAqY2FsbGJh Y2tfcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJCQkJICB2b2lkICpwZXJfYnVmZmVyX2RhdGEpOwog CiAKIC8qCkBAIC00NTAsNiArNDYyLDI3IEBAIGhhc2hlbmRzY2FuKEluZGV4U2NhbkRlc2Mgc2Nh bikKIAlzY2FuLT5vcGFxdWUgPSBOVUxMOwogfQogCisvKgorICogUmVhZCBzdHJlYW0gY2FsbGJh Y2sgZm9yIGhhc2hidWxrZGVsZXRlLgorICoKKyAqIFJldHVybnMgdGhlIGJsb2NrIG51bWJlciBv ZiB0aGUgcHJpbWFyeSBwYWdlIGZvciB0aGUgbmV4dCBidWNrZXQgdG8KKyAqIHZhY3V1bSwgdXNp bmcgdGhlIEJVQ0tFVF9UT19CTEtOTyBtYXBwaW5nIGZyb20gdGhlIGNhY2hlZCBtZXRhcGFnZS4K KyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitoYXNoX2J1bGtkZWxldGVfcmVhZF9zdHJlYW1fY2Io UmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJCSAgIHZvaWQgKmNhbGxiYWNrX3ByaXZhdGVfZGF0 YSwKKwkJCQkJCQkgICB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJSGFzaEJ1bGtEZWxldGVT dHJlYW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCUJ1Y2tldAkJYnVja2V0 OworCisJaWYgKHAtPm5leHRfYnVja2V0ID4gcC0+bWF4X2J1Y2tldCkKKwkJcmV0dXJuIEludmFs aWRCbG9ja051bWJlcjsKKworCWJ1Y2tldCA9IHAtPm5leHRfYnVja2V0Kys7CisJcmV0dXJuIEJV Q0tFVF9UT19CTEtOTyhwLT5tZXRhcCwgYnVja2V0KTsKK30KKwogLyoKICAqIEJ1bGsgZGVsZXRp b24gb2YgYWxsIGluZGV4IGVudHJpZXMgcG9pbnRpbmcgdG8gYSBzZXQgb2YgaGVhcCB0dXBsZXMu CiAgKiBUaGUgc2V0IG9mIHRhcmdldCB0dXBsZXMgaXMgc3BlY2lmaWVkIHZpYSBhIGNhbGxiYWNr IHJvdXRpbmUgdGhhdCB0ZWxscwpAQCAtNDc0LDYgKzUwNyw4IEBAIGhhc2hidWxrZGVsZXRlKElu ZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlCdWZm ZXIJCW1ldGFidWYgPSBJbnZhbGlkQnVmZmVyOwogCUhhc2hNZXRhUGFnZSBtZXRhcDsKIAlIYXNo TWV0YVBhZ2UgY2FjaGVkbWV0YXA7CisJSGFzaEJ1bGtEZWxldGVTdHJlYW1Qcml2YXRlIHN0cmVh bV9wcml2YXRlOworCVJlYWRTdHJlYW0gKnN0cmVhbSA9IE5VTEw7CiAKIAl0dXBsZXNfcmVtb3Zl ZCA9IDA7CiAJbnVtX2luZGV4X3R1cGxlcyA9IDA7CkBAIC00OTQsNyArNTI5LDI1IEBAIGhhc2hi dWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpz dGF0cywKIAljdXJfYnVja2V0ID0gMDsKIAljdXJfbWF4YnVja2V0ID0gb3JpZ19tYXhidWNrZXQ7 CiAKLWxvb3BfdG9wOgorCS8qIFNldCB1cCBzdHJlYW1pbmcgcmVhZCBmb3IgcHJpbWFyeSBidWNr ZXQgcGFnZXMgKi8KKwlzdHJlYW1fcHJpdmF0ZS5tZXRhcCA9IGNhY2hlZG1ldGFwOworCXN0cmVh bV9wcml2YXRlLm5leHRfYnVja2V0ID0gY3VyX2J1Y2tldDsKKwlzdHJlYW1fcHJpdmF0ZS5tYXhf YnVja2V0ID0gY3VyX21heGJ1Y2tldDsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0 Y2htb2RlIGFzIGhhc2hfYnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBubworCSAqIGxv Y2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9uKFJFQURfU1RS RUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJ CQkJCQkJCQkJaW5mby0+c3RyYXRlZ3ksCisJCQkJCQkJCQkJcmVsLAorCQkJCQkJCQkJCU1BSU5f Rk9SS05VTSwKKwkJCQkJCQkJCQloYXNoX2J1bGtkZWxldGVfcmVhZF9zdHJlYW1fY2IsCisJCQkJ CQkJCQkJJnN0cmVhbV9wcml2YXRlLAorCQkJCQkJCQkJCTApOworCitidWNrZXRfbG9vcDoKIAl3 aGlsZSAoY3VyX2J1Y2tldCA8PSBjdXJfbWF4YnVja2V0KQogCXsKIAkJQmxvY2tOdW1iZXIgYnVj a2V0X2Jsa25vOwpAQCAtNTE0LDcgKzU2Nyw4IEBAIGxvb3BfdG9wOgogCQkgKiBXZSBuZWVkIHRv IGFjcXVpcmUgYSBjbGVhbnVwIGxvY2sgb24gdGhlIHByaW1hcnkgYnVja2V0IHBhZ2UgdG8gb3V0 CiAJCSAqIHdhaXQgY29uY3VycmVudCBzY2FucyBiZWZvcmUgZGVsZXRpbmcgdGhlIGRlYWQgdHVw bGVzLgogCQkgKi8KLQkJYnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVN LCBibGtubywgUkJNX05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQlidWYgPSByZWFkX3N0cmVh bV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpOworCQlBc3NlcnQoQnVmZmVySXNWYWxpZChidWYp KTsKIAkJTG9ja0J1ZmZlckZvckNsZWFudXAoYnVmKTsKIAkJX2hhc2hfY2hlY2twYWdlKHJlbCwg YnVmLCBMSF9CVUNLRVRfUEFHRSk7CiAKQEAgLTU0NSw2ICs1OTksMTYgQEAgbG9vcF90b3A6CiAJ CQl7CiAJCQkJY2FjaGVkbWV0YXAgPSBfaGFzaF9nZXRjYWNoZWRtZXRhcChyZWwsICZtZXRhYnVm LCB0cnVlKTsKIAkJCQlBc3NlcnQoY2FjaGVkbWV0YXAgIT0gTlVMTCk7CisKKwkJCQkvKgorCQkJ CSAqIFJlc2V0IHN0cmVhbSB3aXRoIHVwZGF0ZWQgbWV0YWRhdGEgZm9yIHJlbWFpbmluZyBidWNr ZXRzLgorCQkJCSAqIFRoZSBCVUNLRVRfVE9fQkxLTk8gbWFwcGluZyBkZXBlbmRzIG9uIGhhc2ht X3NwYXJlc1tdLAorCQkJCSAqIHdoaWNoIG1heSBoYXZlIGNoYW5nZWQuCisJCQkJICovCisJCQkJ c3RyZWFtX3ByaXZhdGUubWV0YXAgPSBjYWNoZWRtZXRhcDsKKwkJCQlzdHJlYW1fcHJpdmF0ZS5u ZXh0X2J1Y2tldCA9IGN1cl9idWNrZXQgKyAxOworCQkJCXN0cmVhbV9wcml2YXRlLm1heF9idWNr ZXQgPSBjdXJfbWF4YnVja2V0OworCQkJCXJlYWRfc3RyZWFtX3Jlc2V0KHN0cmVhbSk7CiAJCQl9 CiAJCX0KIApAQCAtNTc3LDkgKzY0MSwxOSBAQCBsb29wX3RvcDoKIAkJY2FjaGVkbWV0YXAgPSBf aGFzaF9nZXRjYWNoZWRtZXRhcChyZWwsICZtZXRhYnVmLCB0cnVlKTsKIAkJQXNzZXJ0KGNhY2hl ZG1ldGFwICE9IE5VTEwpOwogCQljdXJfbWF4YnVja2V0ID0gY2FjaGVkbWV0YXAtPmhhc2htX21h eGJ1Y2tldDsKLQkJZ290byBsb29wX3RvcDsKKworCQkvKiBSZXNldCBzdHJlYW0gdG8gcHJvY2Vz cyBhZGRpdGlvbmFsIGJ1Y2tldHMgZnJvbSBzcGxpdCAqLworCQlzdHJlYW1fcHJpdmF0ZS5tZXRh cCA9IGNhY2hlZG1ldGFwOworCQlzdHJlYW1fcHJpdmF0ZS5uZXh0X2J1Y2tldCA9IGN1cl9idWNr ZXQ7CisJCXN0cmVhbV9wcml2YXRlLm1heF9idWNrZXQgPSBjdXJfbWF4YnVja2V0OworCQlyZWFk X3N0cmVhbV9yZXNldChzdHJlYW0pOworCQlnb3RvIGJ1Y2tldF9sb29wOwogCX0KIAorCS8qIFN0 cmVhbSBzaG91bGQgYmUgZXhoYXVzdGVkIHNpbmNlIHdlIHByb2Nlc3NlZCBhbGwgYnVja2V0cyAq LworCUFzc2VydChyZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFs aWRCdWZmZXIpOworCXJlYWRfc3RyZWFtX2VuZChzdHJlYW0pOworCiAJLyogT2theSwgd2UncmUg cmVhbGx5IGRvbmUuICBVcGRhdGUgdHVwbGUgY291bnQgaW4gbWV0YXBhZ2UuICovCiAJU1RBUlRf Q1JJVF9TRUNUSU9OKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggZGM2ZmMyOGZj YWIuLjU3MmJlNTU5OGYyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMu bGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTE3Niw2ICsx MTc2LDcgQEAgSGFzaEFnZ0JhdGNoCiBIYXNoQWdnU3BpbGwKIEhhc2hBbGxvY0Z1bmMKIEhhc2hC dWlsZFN0YXRlCitIYXNoQnVsa0RlbGV0ZVN0cmVhbVByaXZhdGUKIEhhc2hDb21wYXJlRnVuYwog SGFzaENvcHlGdW5jCiBIYXNoSW5kZXhTdGF0Ci0tIAoyLjUxLjAKCg== --00000000000026e7f50647225355 Content-Type: application/octet-stream; name="v4-0003-Streamify-heap-bloat-estimation-scan.-Introduce-a.patch" Content-Disposition: attachment; filename="v4-0003-Streamify-heap-bloat-estimation-scan.-Introduce-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrzfb6f2 RnJvbSA4MTVlZGRkM2YxZDY1ZjU0ODViZDY4ZjMwZTllZTUyMzQ5ZWNiNGYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjQgMy82XSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uIEludHJvZHVjZSBhIAogcmVhZC1z dHJlYW0gY2FsbGJhY2sgdG8gc2tpcCBhbGwtdmlzaWJsZSBwYWdlcyB2aWEgVk0vRlNNIGxvb2t1 cCBhbmQgCiBzdHJlYW0tcmVhZCB0aGUgcmVzdCwgcmVkdWNpbmcgcGFnZSByZWFkcyBhbmQgaW1w cm92aW5nIHBnc3RhdHR1cGxlX2FwcHJveCAKIGV4ZWN1dGlvbiB0aW1lIG9uIGxhcmdlIHJlbGF0 aW9ucy4KCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNiArKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDMxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMg Yi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZmNGU5ZDRmLi45 OTA0MDk0ZDc2NyAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3gu YworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZyZWVz cGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFn ZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJv eCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81KTsKQEAgLTQ1 LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZpbmUgTlVNX09V VFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hfaGVhcCByZWFk IHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJveFJlYWRTdHJl YW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0OworCUJsb2Nr TnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlCbG9ja051 bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAqLworCUJ1ZmZl cgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfSBTdGF0QXBwcm94UmVhZFN0cmVh bVByaXZhdGU7CisKKy8qCisgKiBSZWFkIHN0cmVhbSBjYWxsYmFjayBmb3Igc3RhdGFwcHJveF9o ZWFwLgorICoKKyAqIFRoaXMgY2FsbGJhY2sgY2hlY2tzIHRoZSB2aXNpYmlsaXR5IG1hcCBmb3Ig ZWFjaCBibG9jay4gSWYgdGhlIGJsb2NrIGlzCisgKiBhbGwtdmlzaWJsZSwgd2UgY2FuIGdldCB0 aGUgZnJlZSBzcGFjZSBmcm9tIHRoZSBGU00gd2l0aG91dCByZWFkaW5nIHRoZQorICogYWN0dWFs IHBhZ2UsIGFuZCBza2lwIHRvIHRoZSBuZXh0IGJsb2NrLiBPbmx5IGJsb2NrcyB0aGF0IGFyZSBu b3QKKyAqIGFsbC12aXNpYmxlIGFyZSByZXR1cm5lZCBmb3IgYWN0dWFsIHJlYWRpbmcuCisgKi8K K3N0YXRpYyBCbG9ja051bWJlcgorc3RhdGFwcHJveF9oZWFwX3JlYWRfc3RyZWFtX25leHQoUmVh ZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJCQkgdm9pZCAqY2FsbGJhY2tfcHJpdmF0ZV9kYXRhLAor CQkJCQkJCQkgdm9pZCAqcGVyX2J1ZmZlcl9kYXRhKQoreworCVN0YXRBcHByb3hSZWFkU3RyZWFt UHJpdmF0ZSAqcCA9IGNhbGxiYWNrX3ByaXZhdGVfZGF0YTsKKworCXdoaWxlIChwLT5jdXJyZW50 X2Jsb2NrbnVtIDwgcC0+bmJsb2NrcykKKwl7CisJCUJsb2NrTnVtYmVyIGJsa25vID0gcC0+Y3Vy cmVudF9ibG9ja251bSsrOworCQlTaXplCQlmcmVlc3BhY2U7CisKKwkJQ0hFQ0tfRk9SX0lOVEVS UlVQVFMoKTsKKworCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBoYXMgb25seSB2aXNpYmxlIHR1cGxl cywgdGhlbiB3ZSBjYW4gZmluZCBvdXQgdGhlIGZyZWUKKwkJICogc3BhY2UgZnJvbSB0aGUgRlNN IGFuZCBtb3ZlIG9uIHdpdGhvdXQgcmVhZGluZyB0aGUgcGFnZS4KKwkJICovCisJCWlmIChWTV9B TExfVklTSUJMRShwLT5yZWwsIGJsa25vLCAmcC0+dm1idWZmZXIpKQorCQl7CisJCQlmcmVlc3Bh Y2UgPSBHZXRSZWNvcmRlZEZyZWVTcGFjZShwLT5yZWwsIGJsa25vKTsKKwkJCXAtPnN0YXQtPnR1 cGxlX2xlbiArPSBCTENLU1ogLSBmcmVlc3BhY2U7CisJCQlwLT5zdGF0LT5mcmVlX3NwYWNlICs9 IGZyZWVzcGFjZTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogVGhpcyBibG9jayBuZWVkcyB0 byBiZSByZWFkICovCisJCXAtPnNjYW5uZWQrKzsKKwkJcmV0dXJuIGJsa25vOworCX0KKworCXJl dHVybiBJbnZhbGlkQmxvY2tOdW1iZXI7Cit9CisKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIHRha2Vz IGFuIGFscmVhZHkgb3BlbiByZWxhdGlvbiBhbmQgc2NhbnMgaXRzIHBhZ2VzLAogICogc2tpcHBp bmcgdGhvc2UgdGhhdCBoYXZlIHRoZSBjb3JyZXNwb25kaW5nIHZpc2liaWxpdHkgbWFwIGJpdCBz ZXQuCkBAIC01OCw1MyArMTE0LDU4IEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiBzdGF0 aWMgdm9pZAogc3RhdGFwcHJveF9oZWFwKFJlbGF0aW9uIHJlbCwgb3V0cHV0X3R5cGUgKnN0YXQp CiB7Ci0JQmxvY2tOdW1iZXIgc2Nhbm5lZCwKLQkJCQluYmxvY2tzLAotCQkJCWJsa25vOwotCUJ1 ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCUJsb2NrTnVtYmVyIG5ibG9ja3M7CiAJ QnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5OwogCVRyYW5zYWN0aW9uSWQgT2xkZXN0WG1p bjsKKwlTdGF0QXBwcm94UmVhZFN0cmVhbVByaXZhdGUgcDsKKwlSZWFkU3RyZWFtICpzdHJlYW07 CiAKIAlPbGRlc3RYbWluID0gR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZChyZWwp OwogCWJzdHJhdGVneSA9IEdldEFjY2Vzc1N0cmF0ZWd5KEJBU19CVUxLUkVBRCk7CiAKIAluYmxv Y2tzID0gUmVsYXRpb25HZXROdW1iZXJPZkJsb2NrcyhyZWwpOwotCXNjYW5uZWQgPSAwOwogCi0J Zm9yIChibGtubyA9IDA7IGJsa25vIDwgbmJsb2NrczsgYmxrbm8rKykKKwkvKiBJbml0aWFsaXpl IHJlYWQgc3RyZWFtIHByaXZhdGUgZGF0YSAqLworCXAucmVsID0gcmVsOworCXAuc3RhdCA9IHN0 YXQ7CisJcC5jdXJyZW50X2Jsb2NrbnVtID0gMDsKKwlwLm5ibG9ja3MgPSBuYmxvY2tzOworCXAu c2Nhbm5lZCA9IDA7CisJcC52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisKKwkvKgorCSAqIENy ZWF0ZSB0aGUgcmVhZCBzdHJlYW0uIFdlIGRvbid0IHVzZSBSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJ TkcgYmVjYXVzZQorCSAqIHRoZSBjYWxsYmFjayBhY2Nlc3NlcyB0aGUgdmlzaWJpbGl0eSBtYXAg d2hpY2ggbWF5IG5lZWQgdG8gcmVhZCBWTQorCSAqIHBhZ2VzLiBXaGlsZSB0aGlzIHNob3VsZG4n dCBjYXVzZSBkZWFkbG9ja3MsIHdlIGVyciBvbiB0aGUgc2lkZSBvZgorCSAqIGNhdXRpb24uCisJ ICovCisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fRlVM TCwKKwkJCQkJCQkJCQlic3RyYXRlZ3ksCisJCQkJCQkJCQkJcmVsLAorCQkJCQkJCQkJCU1BSU5f Rk9SS05VTSwKKwkJCQkJCQkJCQlzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJlYW1fbmV4dCwKKwkJ CQkJCQkJCQkmcCwKKwkJCQkJCQkJCQkwKTsKKworCWZvciAoOzspCiAJewogCQlCdWZmZXIJCWJ1 ZjsKIAkJUGFnZQkJcGFnZTsKIAkJT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAkJCQkJbWF4b2ZmOwot CQlTaXplCQlmcmVlc3BhY2U7Ci0KLQkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKLQotCQkvKgot CQkgKiBJZiB0aGUgcGFnZSBoYXMgb25seSB2aXNpYmxlIHR1cGxlcywgdGhlbiB3ZSBjYW4gZmlu ZCBvdXQgdGhlIGZyZWUKLQkJICogc3BhY2UgZnJvbSB0aGUgRlNNIGFuZCBtb3ZlIG9uLgotCQkg Ki8KLQkJaWYgKFZNX0FMTF9WSVNJQkxFKHJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JCXsKLQkJ CWZyZWVzcGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHJlbCwgYmxrbm8pOwotCQkJc3RhdC0+ dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKLQkJCXN0YXQtPmZyZWVfc3BhY2UgKz0g ZnJlZXNwYWNlOwotCQkJY29udGludWU7Ci0JCX0KKwkJQmxvY2tOdW1iZXIgYmxrbm87CiAKLQkJ YnVmID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHJlbCwgTUFJTl9GT1JLTlVNLCBibGtubywKLQkJCQkJ CQkJIFJCTV9OT1JNQUwsIGJzdHJhdGVneSk7CisJCWJ1ZiA9IHJlYWRfc3RyZWFtX25leHRfYnVm ZmVyKHN0cmVhbSwgTlVMTCk7CisJCWlmIChidWYgPT0gSW52YWxpZEJ1ZmZlcikKKwkJCWJyZWFr OwogCiAJCUxvY2tCdWZmZXIoYnVmLCBCVUZGRVJfTE9DS19TSEFSRSk7CiAKIAkJcGFnZSA9IEJ1 ZmZlckdldFBhZ2UoYnVmKTsKKwkJYmxrbm8gPSBCdWZmZXJHZXRCbG9ja051bWJlcihidWYpOwog CiAJCXN0YXQtPmZyZWVfc3BhY2UgKz0gUGFnZUdldEV4YWN0RnJlZVNwYWNlKHBhZ2UpOwogCi0J CS8qIFdlIG1heSBjb3VudCB0aGUgcGFnZSBhcyBzY2FubmVkIGV2ZW4gaWYgaXQncyBuZXcvZW1w dHkgKi8KLQkJc2Nhbm5lZCsrOwotCiAJCWlmIChQYWdlSXNOZXcocGFnZSkgfHwgUGFnZUlzRW1w dHkocGFnZSkpCiAJCXsKIAkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmKTsKQEAgLTE2OSw2ICsy MzAsOSBAQCBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRfdHlwZSAqc3RhdCkK IAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwogCX0KIAorCUFzc2VydChwLmN1cnJlbnRfYmxv Y2tudW0gPT0gbmJsb2Nrcyk7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAlzdGF0LT50 YWJsZV9sZW4gPSAodWludDY0KSBuYmxvY2tzICogQkxDS1NaOwogCiAJLyoKQEAgLTE3OSw3ICsy NDMsNyBAQCBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRfdHlwZSAqc3RhdCkK IAkgKiB0dXBsZXMgaW4gYWxsLXZpc2libGUgcGFnZXMsIHNvIG5vIGNvcnJlY3Rpb24gaXMgbmVl ZGVkIGZvciB0aGF0LCBhbmQKIAkgKiB3ZSBhbHJlYWR5IGFjY291bnRlZCBmb3IgdGhlIHNwYWNl IGluIHRob3NlIHBhZ2VzLCB0b28uCiAJICovCi0Jc3RhdC0+dHVwbGVfY291bnQgPSB2YWNfZXN0 aW1hdGVfcmVsdHVwbGVzKHJlbCwgbmJsb2Nrcywgc2Nhbm5lZCwKKwlzdGF0LT50dXBsZV9jb3Vu dCA9IHZhY19lc3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBuYmxvY2tzLCBwLnNjYW5uZWQsCiAJCQkJ CQkJCQkJCSAgIHN0YXQtPnR1cGxlX2NvdW50KTsKIAogCS8qIEl0J3Mgbm90IGNsZWFyIGlmIHdl IGNvdWxkIGdldCAtMSBoZXJlLCBidXQgYmUgc2FmZS4gKi8KQEAgLTE5MCwxNiArMjU0LDE2IEBA IHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBlICpzdGF0KQogCSAqLwog CWlmIChuYmxvY2tzICE9IDApCiAJewotCQlzdGF0LT5zY2FubmVkX3BlcmNlbnQgPSAxMDAuMCAq IHNjYW5uZWQgLyBuYmxvY2tzOworCQlzdGF0LT5zY2FubmVkX3BlcmNlbnQgPSAxMDAuMCAqIHAu c2Nhbm5lZCAvIG5ibG9ja3M7CiAJCXN0YXQtPnR1cGxlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQt PnR1cGxlX2xlbiAvIHN0YXQtPnRhYmxlX2xlbjsKIAkJc3RhdC0+ZGVhZF90dXBsZV9wZXJjZW50 ID0gMTAwLjAgKiBzdGF0LT5kZWFkX3R1cGxlX2xlbiAvIHN0YXQtPnRhYmxlX2xlbjsKIAkJc3Rh dC0+ZnJlZV9wZXJjZW50ID0gMTAwLjAgKiBzdGF0LT5mcmVlX3NwYWNlIC8gc3RhdC0+dGFibGVf bGVuOwogCX0KIAotCWlmIChCdWZmZXJJc1ZhbGlkKHZtYnVmZmVyKSkKKwlpZiAoQnVmZmVySXNW YWxpZChwLnZtYnVmZmVyKSkKIAl7Ci0JCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotCQl2bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CisJCVJlbGVhc2VCdWZmZXIocC52bWJ1ZmZlcik7CisJCXAu dm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dAppbmRleCA1Yzg4ZmE5MmY0ZS4uZGM2ZmMyOGZjYWIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CkBAIC0yODk4LDYgKzI4OTgsNyBAQCBTdGFydFJlcGxpY2F0aW9uQ21kCiBTdGFydHVwU3Rh dHVzRW51bQogU3RhdEVudHJ5CiBTdGF0RXh0RW50cnkKK1N0YXRBcHByb3hSZWFkU3RyZWFtUHJp dmF0ZQogU3RhdGVGaWxlQ2h1bmsKIFN0YXRpc3RpY0V4dEluZm8KIFN0YXRzQnVpbGREYXRhCi0t IAoyLjUxLjAKCg== --00000000000026e7f50647225355--