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 1vaOu6-007t1D-0V for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 01:52:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vaOu5-001mHQ-0C for pgsql-hackers@arkaria.postgresql.org; Tue, 30 Dec 2025 01:52:05 +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 1vaOu4-001mHI-1z for pgsql-hackers@lists.postgresql.org; Tue, 30 Dec 2025 01:52:05 +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 1vaOu2-003URg-2k for pgsql-hackers@lists.postgresql.org; Tue, 30 Dec 2025 01:52:05 +0000 Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-b8018eba13cso1461464166b.1 for ; Mon, 29 Dec 2025 17:52:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767059522; x=1767664322; 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=v6RcMc4iUF3bBocEI/db5Qr5hCkgNdMjxYbcXH2li/k=; b=lX1HgbVPP8+vsZr0W/gI0y8qz6nPt6XEPQA+wqKSz+zpO7BIj7KxhvhCf+Wq6lMrHJ +udbZR5+HoufZFrJLPXtuQHg/DdP5xWuiiz0gtDM2lwqi384aSkzmM7dy35EcCnR/uvL 1jQHIqh0p+7aQb6TZDty4M7fKOu1RCfv/9GNjMi++ix59n/A/HSfPUOQx7q8EysYhVKI ALaTZ9qM+LM3hjtum0NjnKmWDeiCnuP3SuBzvAtFx/NTcpWdgJW3QQeigMvbuUZiqodP TEr37Bkx+FUngDJJp2pwASOUw4Gdbcn77Zhf0p4RLFRLuJWFP7AXydX65E7/I7xbkIn5 RC+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767059522; x=1767664322; 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=v6RcMc4iUF3bBocEI/db5Qr5hCkgNdMjxYbcXH2li/k=; b=lkfoN6HSLyhwe957eyj+QJuQ0L412vIfWmBJlAk6NKf2XBrGKlzI9KwFUnx7rFIiQ8 Ezl/pj6qdxfcrw1GpToi1cSvhgDZLvm5EHt9wOgqWD8AUOzzLxt7Yaoqp2eCbcknsNAM 2zZOwZdRR4TS2b5Ol1HpqCZ6Fla+aUXCT5nq9ENCaOV+gS6HC14RrtJz8MeN/C8TfaHO o6rthDb1cTLiyR9F8309rXQuWcL605zo99fzpEJr94zcTD0tJx1+PYCABWhBGd6obZgh HrQQBa/L43eZx33gViix7RaYIzr7Gx6cqL57fyfHAgpVoIVVNk4xo7fVKwYr+dmHqhZn GNlA== X-Gm-Message-State: AOJu0Yx814Dy8MJ6aUQbbRu5bltMAZKfciulii04uo2X/S0/maDQ3KAM OKSI2/JAoaBGT8h1yjUTcwszlt2r5BHxb897xqoDKdx/Ays1tUkeZvV85Xz5uGhBLdtbZORCCIs vdI1p2qxC3e3tSoWpReKpH9hbqQeNP3uUOprIJtw= X-Gm-Gg: AY/fxX6HoDFyXtZLdfo3MfA/SqnK5/3rZTn/glR6tsdtq+Qux7gStDn64jmRIExfJhx jytavkFRkp1Qu5pSP0r5jtbgXII6PLlyXytFgYrVFtn3pcMhWiCUGM3hgy8mexJkKrMxvrCnHsE VcN+GYysRn0m3DYDVVT6ZmdtS0PZBh73g6XtnYf1Im7BfA9X9SOW99I7GJB2btyvs0vH1l5fThb XnIGoSD+oHIwY8e53Mj3mURcW14YGWVjSidvrdc2f+v/bNYg994DTHLh5rd1StIp6uHirRLd2Yx QdotDNehpaUIcseeWZlw8h+ChOUpmAjHXmz5+fzJ4aN3kZhLJgll3Vu8/0oVhYfM2LXplGuscM8 NZJDS+Q== X-Google-Smtp-Source: AGHT+IEE5WAkH6HXIddtIKOIqpQmLSIkjoEd+0vvp6pGppMMxD6N1V5nF7AGnEd3XZjQxhenQ+ifu4hfQNXXZVpYhNo= X-Received: by 2002:a17:906:4fd0:b0:b73:7715:ac83 with SMTP id a640c23a62f3a-b80371d345bmr3110422466b.44.1767059521450; Mon, 29 Dec 2025 17:52:01 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Tue, 30 Dec 2025 09:51:49 +0800 X-Gm-Features: AQt7F2rtUOcYF99maM3ldOSIziEf97DlhEWiw7T5ysACwAXR6gLjA8tUUDeMDSM Message-ID: Subject: Re: Streamify more code paths To: Nazir Bilal Yavuz Cc: pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000001302020647219b42" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001302020647219b42 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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 forknum= , > nbufs =3D 0; > while (nbufs < XLR_MAX_BLOCK_ID && blkno < endblk) > { > - Buffer buf =3D ReadBufferExtended(rel, forknum, blkno= , > - 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 lo= gic. > 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. --=20 Best, Xuneng --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0003-Streamify-heap-bloat-estimation-scan.-Introduce-a.patch" Content-Disposition: attachment; filename="v3-0003-Streamify-heap-bloat-estimation-scan.-Introduce-a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2gm2 RnJvbSAxYjRjNzRmMDdmZGQ0MDA0OWRjNDAyMDZjNmMxMzIxYjY2ZGUwZWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMy82XSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uIEludHJvZHVjZSBhIAogcmVhZC1z dHJlYW0gY2FsbGJhY2sgdG8gc2tpcCBhbGwtdmlzaWJsZSBwYWdlcyB2aWEgVk0vRlNNIGxvb2t1 cCBhbmQgCiBzdHJlYW0tcmVhZCB0aGUgcmVzdCwgcmVkdWNpbmcgcGFnZSByZWFkcyBhbmQgaW1w cm92aW5nIHBnc3RhdHR1cGxlX2FwcHJveCAKIGV4ZWN1dGlvbiB0aW1lIG9uIGxhcmdlIHJlbGF0 aW9ucy4KCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNiArKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICB8ICAgMSArCiAyIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDMxIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBwcm94LmMg Yi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZmNGU5ZDRmLi5j YjA1YjUzMGNhOCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3gu YworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0yMyw2ICsyMyw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZyZWVz cGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFn ZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJv eCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81KTsKQEAgLTQ1 LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZpbmUgTlVNX09V VFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hfaGVhcCByZWFk IHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJveFJlYWRTdHJl YW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0OworCUJsb2Nr TnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlCbG9ja051 bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAqLworCUJ1ZmZl cgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfQkJCVN0YXRBcHByb3hSZWFkU3Ry ZWFtUHJpdmF0ZTsKKworLyoKKyAqIFJlYWQgc3RyZWFtIGNhbGxiYWNrIGZvciBzdGF0YXBwcm94 X2hlYXAuCisgKgorICogVGhpcyBjYWxsYmFjayBjaGVja3MgdGhlIHZpc2liaWxpdHkgbWFwIGZv ciBlYWNoIGJsb2NrLiBJZiB0aGUgYmxvY2sgaXMKKyAqIGFsbC12aXNpYmxlLCB3ZSBjYW4gZ2V0 IHRoZSBmcmVlIHNwYWNlIGZyb20gdGhlIEZTTSB3aXRob3V0IHJlYWRpbmcgdGhlCisgKiBhY3R1 YWwgcGFnZSwgYW5kIHNraXAgdG8gdGhlIG5leHQgYmxvY2suIE9ubHkgYmxvY2tzIHRoYXQgYXJl IG5vdAorICogYWxsLXZpc2libGUgYXJlIHJldHVybmVkIGZvciBhY3R1YWwgcmVhZGluZy4KKyAq Lworc3RhdGljIEJsb2NrTnVtYmVyCitzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJlYW1fbmV4dChS ZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSB2b2lkICpjYWxsYmFja19wcml2YXRlX2RhdGEs CisJCQkJCQkJCSB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJU3RhdEFwcHJveFJlYWRTdHJl YW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJd2hpbGUgKHAtPmN1cnJl bnRfYmxvY2tudW0gPCBwLT5uYmxvY2tzKQorCXsKKwkJQmxvY2tOdW1iZXIgYmxrbm8gPSBwLT5j dXJyZW50X2Jsb2NrbnVtKys7CisJCVNpemUJCWZyZWVzcGFjZTsKKworCQlDSEVDS19GT1JfSU5U RVJSVVBUUygpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVw bGVzLCB0aGVuIHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQorCQkgKiBzcGFjZSBmcm9tIHRoZSBG U00gYW5kIG1vdmUgb24gd2l0aG91dCByZWFkaW5nIHRoZSBwYWdlLgorCQkgKi8KKwkJaWYgKFZN X0FMTF9WSVNJQkxFKHAtPnJlbCwgYmxrbm8sICZwLT52bWJ1ZmZlcikpCisJCXsKKwkJCWZyZWVz cGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHAtPnJlbCwgYmxrbm8pOworCQkJcC0+c3RhdC0+ dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKKwkJCXAtPnN0YXQtPmZyZWVfc3BhY2Ug Kz0gZnJlZXNwYWNlOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGJsb2NrIG5lZWRz IHRvIGJlIHJlYWQgKi8KKwkJcC0+c2Nhbm5lZCsrOworCQlyZXR1cm4gYmxrbm87CisJfQorCisJ cmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKK30KKwogLyoKICAqIFRoaXMgZnVuY3Rpb24gdGFr ZXMgYW4gYWxyZWFkeSBvcGVuIHJlbGF0aW9uIGFuZCBzY2FucyBpdHMgcGFnZXMsCiAgKiBza2lw cGluZyB0aG9zZSB0aGF0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBtYXAgYml0 IHNldC4KQEAgLTU4LDUzICsxMTQsNTggQEAgdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0X3R5cGUKIHN0 YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRfdHlwZSAqc3Rh dCkKIHsKLQlCbG9ja051bWJlciBzY2FubmVkLAotCQkJCW5ibG9ja3MsCi0JCQkJYmxrbm87Ci0J QnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJQmxvY2tOdW1iZXIgbmJsb2NrczsK IAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJVHJhbnNhY3Rpb25JZCBPbGRlc3RY bWluOworCVN0YXRBcHByb3hSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVh bTsKIAogCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKHJl bCk7CiAJYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsKIAogCW5i bG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7Ci0Jc2Nhbm5lZCA9IDA7CiAK LQlmb3IgKGJsa25vID0gMDsgYmxrbm8gPCBuYmxvY2tzOyBibGtubysrKQorCS8qIEluaXRpYWxp emUgcmVhZCBzdHJlYW0gcHJpdmF0ZSBkYXRhICovCisJcC5yZWwgPSByZWw7CisJcC5zdGF0ID0g c3RhdDsKKwlwLmN1cnJlbnRfYmxvY2tudW0gPSAwOworCXAubmJsb2NrcyA9IG5ibG9ja3M7CisJ cC5zY2FubmVkID0gMDsKKwlwLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKworCS8qCisJICog Q3JlYXRlIHRoZSByZWFkIHN0cmVhbS4gV2UgZG9uJ3QgdXNlIFJFQURfU1RSRUFNX1VTRV9CQVRD SElORyBiZWNhdXNlCisJICogdGhlIGNhbGxiYWNrIGFjY2Vzc2VzIHRoZSB2aXNpYmlsaXR5IG1h cCB3aGljaCBtYXkgbmVlZCB0byByZWFkIFZNCisJICogcGFnZXMuIFdoaWxlIHRoaXMgc2hvdWxk bid0IGNhdXNlIGRlYWRsb2Nrcywgd2UgZXJyIG9uIHRoZSBzaWRlIG9mCisJICogY2F1dGlvbi4K KwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NUUkVBTV9G VUxMLAorCQkJCQkJCQkJCWJzdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJTUFJ Tl9GT1JLTlVNLAorCQkJCQkJCQkJCXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVhbV9uZXh0LAor CQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCisJZm9yICg7OykKIAl7CiAJCUJ1ZmZlcgkJ YnVmOwogCQlQYWdlCQlwYWdlOwogCQlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJCQltYXhvZmY7 Ci0JCVNpemUJCWZyZWVzcGFjZTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwotCi0JCS8q Ci0JCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVwbGVzLCB0aGVuIHdlIGNhbiBm aW5kIG91dCB0aGUgZnJlZQotCQkgKiBzcGFjZSBmcm9tIHRoZSBGU00gYW5kIG1vdmUgb24uCi0J CSAqLwotCQlpZiAoVk1fQUxMX1ZJU0lCTEUocmVsLCBibGtubywgJnZtYnVmZmVyKSkKLQkJewot CQkJZnJlZXNwYWNlID0gR2V0UmVjb3JkZWRGcmVlU3BhY2UocmVsLCBibGtubyk7Ci0JCQlzdGF0 LT50dXBsZV9sZW4gKz0gQkxDS1NaIC0gZnJlZXNwYWNlOwotCQkJc3RhdC0+ZnJlZV9zcGFjZSAr PSBmcmVlc3BhY2U7Ci0JCQljb250aW51ZTsKLQkJfQorCQlCbG9ja051bWJlciBibGtubzsKIAot CQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJ CQkJCQkgUkJNX05PUk1BTCwgYnN0cmF0ZWd5KTsKKwkJYnVmID0gcmVhZF9zdHJlYW1fbmV4dF9i dWZmZXIoc3RyZWFtLCBOVUxMKTsKKwkJaWYgKGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQorCQkJYnJl YWs7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAogCQlwYWdlID0g QnVmZmVyR2V0UGFnZShidWYpOworCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7 CiAKIAkJc3RhdC0+ZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2UocGFnZSk7CiAK LQkJLyogV2UgbWF5IGNvdW50IHRoZSBwYWdlIGFzIHNjYW5uZWQgZXZlbiBpZiBpdCdzIG5ldy9l bXB0eSAqLwotCQlzY2FubmVkKys7Ci0KIAkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQYWdlSXNF bXB0eShwYWdlKSkKIAkJewogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwpAQCAtMTY5LDYg KzIzMCw5IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBlICpzdGF0 KQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCisJQXNzZXJ0KHAuY3VycmVudF9i bG9ja251bSA9PSBuYmxvY2tzKTsKKwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsKKwogCXN0YXQt PnRhYmxlX2xlbiA9ICh1aW50NjQpIG5ibG9ja3MgKiBCTENLU1o7CiAKIAkvKgpAQCAtMTc5LDcg KzI0Myw3IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBlICpzdGF0 KQogCSAqIHR1cGxlcyBpbiBhbGwtdmlzaWJsZSBwYWdlcywgc28gbm8gY29ycmVjdGlvbiBpcyBu ZWVkZWQgZm9yIHRoYXQsIGFuZAogCSAqIHdlIGFscmVhZHkgYWNjb3VudGVkIGZvciB0aGUgc3Bh Y2UgaW4gdGhvc2UgcGFnZXMsIHRvby4KIAkgKi8KLQlzdGF0LT50dXBsZV9jb3VudCA9IHZhY19l c3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBuYmxvY2tzLCBzY2FubmVkLAorCXN0YXQtPnR1cGxlX2Nv dW50ID0gdmFjX2VzdGltYXRlX3JlbHR1cGxlcyhyZWwsIG5ibG9ja3MsIHAuc2Nhbm5lZCwKIAkJ CQkJCQkJCQkJICAgc3RhdC0+dHVwbGVfY291bnQpOwogCiAJLyogSXQncyBub3QgY2xlYXIgaWYg d2UgY291bGQgZ2V0IC0xIGhlcmUsIGJ1dCBiZSBzYWZlLiAqLwpAQCAtMTkwLDE2ICsyNTQsMTYg QEAgc3RhdGFwcHJveF9oZWFwKFJlbGF0aW9uIHJlbCwgb3V0cHV0X3R5cGUgKnN0YXQpCiAJICov CiAJaWYgKG5ibG9ja3MgIT0gMCkKIAl7Ci0JCXN0YXQtPnNjYW5uZWRfcGVyY2VudCA9IDEwMC4w ICogc2Nhbm5lZCAvIG5ibG9ja3M7CisJCXN0YXQtPnNjYW5uZWRfcGVyY2VudCA9IDEwMC4wICog cC5zY2FubmVkIC8gbmJsb2NrczsKIAkJc3RhdC0+dHVwbGVfcGVyY2VudCA9IDEwMC4wICogc3Rh dC0+dHVwbGVfbGVuIC8gc3RhdC0+dGFibGVfbGVuOwogCQlzdGF0LT5kZWFkX3R1cGxlX3BlcmNl bnQgPSAxMDAuMCAqIHN0YXQtPmRlYWRfdHVwbGVfbGVuIC8gc3RhdC0+dGFibGVfbGVuOwogCQlz dGF0LT5mcmVlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPmZyZWVfc3BhY2UgLyBzdGF0LT50YWJs ZV9sZW47CiAJfQogCi0JaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCWlmIChCdWZmZXJJ c1ZhbGlkKHAudm1idWZmZXIpKQogCXsKLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCXZt YnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwkJUmVsZWFzZUJ1ZmZlcihwLnZtYnVmZmVyKTsKKwkJ cC52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvdG9v bHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0CmluZGV4IDVjODhmYTkyZjRlLi5kYzZmYzI4ZmNhYiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKQEAgLTI4OTgsNiArMjg5OCw3IEBAIFN0YXJ0UmVwbGljYXRpb25DbWQKIFN0YXJ0dXBT dGF0dXNFbnVtCiBTdGF0RW50cnkKIFN0YXRFeHRFbnRyeQorU3RhdEFwcHJveFJlYWRTdHJlYW1Q cml2YXRlCiBTdGF0ZUZpbGVDaHVuawogU3RhdGlzdGljRXh0SW5mbwogU3RhdHNCdWlsZERhdGEK LS0gCjIuNTEuMAoK --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Disposition: attachment; filename="v3-0005-Streamify-log_newpage_range-WAL-logging-path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2gp4 RnJvbSAxOGY3NTFmZWE1NWRjYjYyYzhkY2IyZDQ3MTUxYTFmODdmOWVkNGNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOTowNyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgNS82XSBT 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== --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0002-Streamify-Bloom-VACUUM-paths.-n-nUse-streaming-re.patch" Content-Disposition: attachment; filename="v3-0002-Streamify-Bloom-VACUUM-paths.-n-nUse-streaming-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2gl1 RnJvbSBhYWZkZmEwODUxYWI2MTc3N2U4ODc3Y2ZiNTBlM2IzNGJmNTRiOWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMi82XSBT 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= --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0001-Switch-Bloom-scan-paths-to-streaming-read.-n-nRep.patch" Content-Disposition: attachment; filename="v3-0001-Switch-Bloom-scan-paths-to-streaming-read.-n-nRep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2gg0 RnJvbSAzMTRmOWNkZjZkOGE2MmNjODUyM2IzNzdiOGNmMTlkZjY0NmI5OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgMS82XSBT 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 --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Disposition: attachment; filename="v3-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2go3 RnJvbSBkYjFkMWExMTQzZjVhODBjOWExNThkZDllZDlkOGYwNWQ4ZTJlMWQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgNC82XSBS 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= --0000000000001302020647219b42 Content-Type: application/octet-stream; name="v3-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Disposition: attachment; filename="v3-0006-Streamify-hash-index-VACUUM-primary-bucket-page-r.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjrxg2gq5 RnJvbSAzNDAwNGIwNTkxNWQ1OGFmZjUwNWQ5MjhhYjkxOTliNjc2ZjA2MjQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U3VuLCAyOCBEZWMgMjAyNSAxODoyOToyOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjMgNi82XSBT dHJlYW1pZnkgaGFzaCBpbmRleCBWQUNVVU0gcHJpbWFyeSBidWNrZXQgcGFnZSByZWFkcwoKUmVm YWN0b3IgaGFzaGJ1bGtkZWxldGUoKSB0byB1c2UgdGhlIFJlYWQgU3RyZWFtICBmb3IgcHJpbWFy eSBidWNrZXQKcGFnZXMuIFRoaXMgZW5hYmxlcyBwcmVmZXRjaGluZyBvZiB1cGNvbWluZyBidWNr ZXRzIHdoaWxlIHRoZSBjdXJyZW50Cm9uZSBpcyBiZWluZyBwcm9jZXNzZWQsIGltcHJvdmluZyBJ L08gZWZmaWNpZW5jeSBkdXJpbmcgaGFzaCBpbmRleAp2YWN1dW0gb3BlcmF0aW9ucy4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgICB8IDgwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCB8ICAxICsKIDIg ZmlsZXMgY2hhbmdlZCwgNzggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGFzaC9oYXNoLmMKaW5kZXggZTM4ODI1MmFmZGMuLjhkYzcxYjkyNmE2IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGFzaC9oYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hh c2gvaGFzaC5jCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAibm9kZXMvZXhlY25vZGVzLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rv cy5oIgogI2luY2x1ZGUgInV0aWxzL2luZGV4X3NlbGZ1bmNzLmgiCiAjaW5jbHVkZSAidXRpbHMv cmVsLmgiCkBAIC00MiwxMiArNDMsMjMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlSZWxhdGlvbgloZWFw UmVsOwkJLyogaGVhcCByZWxhdGlvbiBkZXNjcmlwdG9yICovCiB9IEhhc2hCdWlsZFN0YXRlOwog CisvKiBXb3JraW5nIHN0YXRlIGZvciBzdHJlYW1pbmcgcmVhZHMgaW4gaGFzaGJ1bGtkZWxldGUg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisJSGFzaE1ldGFQYWdlIG1ldGFwOwkJCS8qIGNhY2hlZCBt ZXRhcGFnZSBmb3IgQlVDS0VUX1RPX0JMS05PICovCisJQnVja2V0CQluZXh0X2J1Y2tldDsJLyog bmV4dCBidWNrZXQgdG8gcHJlZmV0Y2ggKi8KKwlCdWNrZXQJCW1heF9idWNrZXQ7CQkvKiBzdG9w IHdoZW4gbmV4dF9idWNrZXQgPiBtYXhfYnVja2V0ICovCit9CQkJSGFzaEJ1bGtEZWxldGVTdHJl YW1Qcml2YXRlOworCiBzdGF0aWMgdm9pZCBoYXNoYnVpbGRDYWxsYmFjayhSZWxhdGlvbiBpbmRl eCwKIAkJCQkJCQkgIEl0ZW1Qb2ludGVyIHRpZCwKIAkJCQkJCQkgIERhdHVtICp2YWx1ZXMsCiAJ CQkJCQkJICBib29sICppc251bGwsCiAJCQkJCQkJICBib29sIHR1cGxlSXNBbGl2ZSwKIAkJCQkJ CQkgIHZvaWQgKnN0YXRlKTsKK3N0YXRpYyBCbG9ja051bWJlciBoYXNoX2J1bGtkZWxldGVfcmVh ZF9zdHJlYW1fY2IoUmVhZFN0cmVhbSAqc3RyZWFtLAorCQkJCQkJCQkJCQkJICB2b2lkICpjYWxs YmFja19wcml2YXRlX2RhdGEsCisJCQkJCQkJCQkJCQkgIHZvaWQgKnBlcl9idWZmZXJfZGF0YSk7 CiAKIAogLyoKQEAgLTQ1MCw2ICs0NjIsMjcgQEAgaGFzaGVuZHNjYW4oSW5kZXhTY2FuRGVzYyBz Y2FuKQogCXNjYW4tPm9wYXF1ZSA9IE5VTEw7CiB9CiAKKy8qCisgKiBSZWFkIHN0cmVhbSBjYWxs YmFjayBmb3IgaGFzaGJ1bGtkZWxldGUuCisgKgorICogUmV0dXJucyB0aGUgYmxvY2sgbnVtYmVy IG9mIHRoZSBwcmltYXJ5IHBhZ2UgZm9yIHRoZSBuZXh0IGJ1Y2tldCB0bworICogdmFjdXVtLCB1 c2luZyB0aGUgQlVDS0VUX1RPX0JMS05PIG1hcHBpbmcgZnJvbSB0aGUgY2FjaGVkIG1ldGFwYWdl LgorICovCitzdGF0aWMgQmxvY2tOdW1iZXIKK2hhc2hfYnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9j YihSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJICAgdm9pZCAqY2FsbGJhY2tfcHJpdmF0ZV9k YXRhLAorCQkJCQkJCSAgIHZvaWQgKnBlcl9idWZmZXJfZGF0YSkKK3sKKwlIYXNoQnVsa0RlbGV0 ZVN0cmVhbVByaXZhdGUgKnAgPSBjYWxsYmFja19wcml2YXRlX2RhdGE7CisJQnVja2V0CQlidWNr ZXQ7CisKKwlpZiAocC0+bmV4dF9idWNrZXQgPiBwLT5tYXhfYnVja2V0KQorCQlyZXR1cm4gSW52 YWxpZEJsb2NrTnVtYmVyOworCisJYnVja2V0ID0gcC0+bmV4dF9idWNrZXQrKzsKKwlyZXR1cm4g QlVDS0VUX1RPX0JMS05PKHAtPm1ldGFwLCBidWNrZXQpOworfQorCiAvKgogICogQnVsayBkZWxl dGlvbiBvZiBhbGwgaW5kZXggZW50cmllcyBwb2ludGluZyB0byBhIHNldCBvZiBoZWFwIHR1cGxl cy4KICAqIFRoZSBzZXQgb2YgdGFyZ2V0IHR1cGxlcyBpcyBzcGVjaWZpZWQgdmlhIGEgY2FsbGJh Y2sgcm91dGluZSB0aGF0IHRlbGxzCkBAIC00NzQsNiArNTA3LDggQEAgaGFzaGJ1bGtkZWxldGUo SW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCUJ1 ZmZlcgkJbWV0YWJ1ZiA9IEludmFsaWRCdWZmZXI7CiAJSGFzaE1ldGFQYWdlIG1ldGFwOwogCUhh c2hNZXRhUGFnZSBjYWNoZWRtZXRhcDsKKwlIYXNoQnVsa0RlbGV0ZVN0cmVhbVByaXZhdGUgc3Ry ZWFtX3ByaXZhdGU7CisJUmVhZFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKIAogCXR1cGxlc19yZW1v dmVkID0gMDsKIAludW1faW5kZXhfdHVwbGVzID0gMDsKQEAgLTQ5NCw3ICs1MjksMjUgQEAgaGFz aGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzLAogCWN1cl9idWNrZXQgPSAwOwogCWN1cl9tYXhidWNrZXQgPSBvcmlnX21heGJ1Y2tl dDsKIAotbG9vcF90b3A6CisJLyogU2V0IHVwIHN0cmVhbWluZyByZWFkIGZvciBwcmltYXJ5IGJ1 Y2tldCBwYWdlcyAqLworCXN0cmVhbV9wcml2YXRlLm1ldGFwID0gY2FjaGVkbWV0YXA7CisJc3Ry ZWFtX3ByaXZhdGUubmV4dF9idWNrZXQgPSBjdXJfYnVja2V0OworCXN0cmVhbV9wcml2YXRlLm1h eF9idWNrZXQgPSBjdXJfbWF4YnVja2V0OworCisJLyoKKwkgKiBJdCBpcyBzYWZlIHRvIHVzZSBi YXRjaG1vZGUgYXMgaGFzaF9idWxrZGVsZXRlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICog bG9ja3MuCisJICovCisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9T VFJFQU1fTUFJTlRFTkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywK KwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJCQkJTUFJ Tl9GT1JLTlVNLAorCQkJCQkJCQkJCWhhc2hfYnVsa2RlbGV0ZV9yZWFkX3N0cmVhbV9jYiwKKwkJ CQkJCQkJCQkmc3RyZWFtX3ByaXZhdGUsCisJCQkJCQkJCQkJMCk7CisKK2J1Y2tldF9sb29wOgog CXdoaWxlIChjdXJfYnVja2V0IDw9IGN1cl9tYXhidWNrZXQpCiAJewogCQlCbG9ja051bWJlciBi dWNrZXRfYmxrbm87CkBAIC01MTQsNyArNTY3LDggQEAgbG9vcF90b3A6CiAJCSAqIFdlIG5lZWQg dG8gYWNxdWlyZSBhIGNsZWFudXAgbG9jayBvbiB0aGUgcHJpbWFyeSBidWNrZXQgcGFnZSB0byBv dXQKIAkJICogd2FpdCBjb25jdXJyZW50IHNjYW5zIGJlZm9yZSBkZWxldGluZyB0aGUgZGVhZCB0 dXBsZXMuCiAJCSAqLwotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktO VU0sIGJsa25vLCBSQk1fTk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZiA9IHJlYWRfc3Ry ZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCk7CisJCUFzc2VydChCdWZmZXJJc1ZhbGlkKGJ1 ZikpOwogCQlMb2NrQnVmZmVyRm9yQ2xlYW51cChidWYpOwogCQlfaGFzaF9jaGVja3BhZ2UocmVs LCBidWYsIExIX0JVQ0tFVF9QQUdFKTsKIApAQCAtNTQ1LDYgKzU5OSwxNiBAQCBsb29wX3RvcDoK IAkJCXsKIAkJCQljYWNoZWRtZXRhcCA9IF9oYXNoX2dldGNhY2hlZG1ldGFwKHJlbCwgJm1ldGFi dWYsIHRydWUpOwogCQkJCUFzc2VydChjYWNoZWRtZXRhcCAhPSBOVUxMKTsKKworCQkJCS8qCisJ CQkJICogUmVzZXQgc3RyZWFtIHdpdGggdXBkYXRlZCBtZXRhZGF0YSBmb3IgcmVtYWluaW5nIGJ1 Y2tldHMuCisJCQkJICogVGhlIEJVQ0tFVF9UT19CTEtOTyBtYXBwaW5nIGRlcGVuZHMgb24gaGFz aG1fc3BhcmVzW10sCisJCQkJICogd2hpY2ggbWF5IGhhdmUgY2hhbmdlZC4KKwkJCQkgKi8KKwkJ CQlzdHJlYW1fcHJpdmF0ZS5tZXRhcCA9IGNhY2hlZG1ldGFwOworCQkJCXN0cmVhbV9wcml2YXRl Lm5leHRfYnVja2V0ID0gY3VyX2J1Y2tldCArIDE7CisJCQkJc3RyZWFtX3ByaXZhdGUubWF4X2J1 Y2tldCA9IGN1cl9tYXhidWNrZXQ7CisJCQkJcmVhZF9zdHJlYW1fcmVzZXQoc3RyZWFtKTsKIAkJ CX0KIAkJfQogCkBAIC01NzcsOSArNjQxLDE5IEBAIGxvb3BfdG9wOgogCQljYWNoZWRtZXRhcCA9 IF9oYXNoX2dldGNhY2hlZG1ldGFwKHJlbCwgJm1ldGFidWYsIHRydWUpOwogCQlBc3NlcnQoY2Fj aGVkbWV0YXAgIT0gTlVMTCk7CiAJCWN1cl9tYXhidWNrZXQgPSBjYWNoZWRtZXRhcC0+aGFzaG1f bWF4YnVja2V0OwotCQlnb3RvIGxvb3BfdG9wOworCisJCS8qIFJlc2V0IHN0cmVhbSB0byBwcm9j ZXNzIGFkZGl0aW9uYWwgYnVja2V0cyBmcm9tIHNwbGl0ICovCisJCXN0cmVhbV9wcml2YXRlLm1l dGFwID0gY2FjaGVkbWV0YXA7CisJCXN0cmVhbV9wcml2YXRlLm5leHRfYnVja2V0ID0gY3VyX2J1 Y2tldDsKKwkJc3RyZWFtX3ByaXZhdGUubWF4X2J1Y2tldCA9IGN1cl9tYXhidWNrZXQ7CisJCXJl YWRfc3RyZWFtX3Jlc2V0KHN0cmVhbSk7CisJCWdvdG8gYnVja2V0X2xvb3A7CiAJfQogCisJLyog U3RyZWFtIHNob3VsZCBiZSBleGhhdXN0ZWQgc2luY2Ugd2UgcHJvY2Vzc2VkIGFsbCBidWNrZXRz ICovCisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52 YWxpZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKiBPa2F5LCB3ZSdy ZSByZWFsbHkgZG9uZS4gIFVwZGF0ZSB0dXBsZSBjb3VudCBpbiBtZXRhcGFnZS4gKi8KIAlTVEFS VF9DUklUX1NFQ1RJT04oKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCBkYzZmYzI4 ZmNhYi4uNTcyYmU1NTk4ZjIgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTc2LDYg KzExNzYsNyBAQCBIYXNoQWdnQmF0Y2gKIEhhc2hBZ2dTcGlsbAogSGFzaEFsbG9jRnVuYwogSGFz aEJ1aWxkU3RhdGUKK0hhc2hCdWxrRGVsZXRlU3RyZWFtUHJpdmF0ZQogSGFzaENvbXBhcmVGdW5j CiBIYXNoQ29weUZ1bmMKIEhhc2hJbmRleFN0YXQKLS0gCjIuNTEuMAoK --0000000000001302020647219b42--