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 1vZAsX-004s84-1a for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Dec 2025 16:41:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vZAsW-009psu-0G for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Dec 2025 16:41:24 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vZAsV-009psm-1T for pgsql-hackers@lists.postgresql.org; Fri, 26 Dec 2025 16:41:24 +0000 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vZAsU-002jhG-1k for pgsql-hackers@lists.postgresql.org; Fri, 26 Dec 2025 16:41:23 +0000 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-b72b495aa81so1233838166b.2 for ; Fri, 26 Dec 2025 08:41:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766767280; x=1767372080; 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=+BhvdwGkOoBmJSOnhQ0t4nCE6sJNi7uxNPhFpRAkhbg=; b=MmZWDguzMsmBOI4UA/P4zPDnoQyv2r/yez9c3q5qJHvKqouLbF6chfnSXhdpBSizjU Y6x7TeBzzPOjk+/RjmQSycEB/0WvODBFLWXxtHxF/8gkb05Wekrp/J1/Xtdq84eFCM4q Xlm7NbHzSauoPaUpSXe4xu3mfOSVx5ot7GtwHFknEW4vZrlYQt1kDdx8ft2+XOIyXbIK FfEbhqxYbg0nsDPt2Zvej7L5jutLOBCnTcrT5DdrZCgSzn3h/FuwePtQvyh/MWVrxkdF DHaYm2PsyadkmimLtJG4DAlPV6XLN0+2MiP8Dcd4GQqPP4b0SyBRKKrOLcrlM4qBCD6I Exwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766767280; x=1767372080; 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=+BhvdwGkOoBmJSOnhQ0t4nCE6sJNi7uxNPhFpRAkhbg=; b=YF8HIIt3kyKSAS/cKZXC0Hk9TFVv03vbomXJ1/DSty5Nk16Dl6Bz0J44+/V2pzMGFQ elutKLJqV0SQj3SMtxU3T2HLIY6UvvfMeqG66MwWBYnfkDXcdyhrxVQD6xBYuRNZw2B/ GMeCfOX5Yy2pNhkYcx11gMUIiqXm8ncydFQFlphjCNvBlIx7R2EcHZAMXfJMkldWtdyW dPu+GgttZ08NddtYZ/OJ2QIOcV8/D+pxqunne+oXpHhMSqCqvn8oh6qzqPAlmUnmynJt RrsnbrPCssEhT4f9nQFF6ygxqpEC/6MS9pN0+nSoJ3oAQbr10epa9ZGLPNrOkjzcpbil tg4A== X-Gm-Message-State: AOJu0YyxWTgmXFobA6Cva60XOO8AFsFmWaoM7d/j2XUsOy2/2NIEgxSq /vmnUWr0uQv92srfAsh0TuGQQCSNihQGmKYoDB9AJjcH+Z2lO6o+4aA26is0u0bS9VNWmSu9Blk k740bVIHTf1QEnuDV/DFkEdcRqtLtxHc= X-Gm-Gg: AY/fxX7zuWxrDOyK2LWeWrUfqv6rdOVxnAEyVmpa4ew0AwS5PcaQEI5Hc6M/Q3tgPOz TyDGxsdyMtd5QObrU8yDZKSFDALkmuIhy2R4BVqQ2zuse+TZpXiZW4QDWeq6mlyfMDscZ2pSSOg eWcyOCbl52zgK6QWvuk8n0u85PvI8aQ4tRaitzB6IUg6Md5vxdgKqVOsQNxd4WtptPTL+kOMJXq DzwaxpAE87cbhxjIAEy+zYi1mx9rP5rQ5af0IpVImMaFK3hK8VBLlD2fs60/3hx+0JIVDs5xSfD 5fVmGhdWPAlT/hL2mCCDmAcI5ohqZY0FYfUPmn2AYBVQOJAsL8tGJtoji8HxX619MdhVtUY= X-Google-Smtp-Source: AGHT+IGqmUJnvHbJ8MteeGiy3wjnB/9aKuiLaBJ3vZua+rWxFUTVNe1dPXnB1yoNzUtm7TeL1xATtZlc/BPzOOwOeHg= X-Received: by 2002:a17:907:9607:b0:b74:984c:a3de with SMTP id a640c23a62f3a-b8036faca5amr2550469866b.28.1766767279865; Fri, 26 Dec 2025 08:41:19 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Sat, 27 Dec 2025 00:41:05 +0800 X-Gm-Features: AQt7F2qn-4jZUzA8m2u_ReCS1zuRRjWtOSE7q_KYryBBRsq3LOIbv0Xdq-77kmU Message-ID: Subject: Re: Streamify more code paths To: Nazir Bilal Yavuz Cc: pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000001e800f0646dd9029" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001e800f0646dd9029 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Bilal, Thanks for your review! On Fri, Dec 26, 2025 at 6:59=E2=80=AFPM Nazir Bilal Yavuz wrote: > > Hi, > > Thank you for working on this! > > On Thu, 25 Dec 2025 at 09:34, Xuneng Zhou wrote: > > > > Hi, > > > > On Thu, Dec 25, 2025 at 1:51=E2=80=AFPM Xuneng Zhou wrote: > > > > > > Hi Hackers, > > > > > > I noticed several additional paths in contrib modules, beyond [1], > > > that are potentially suitable for streamification: > > > > > > 1) pgstattuple =E2=80=94 pgstatapprox.c and parts of pgstattuple_appr= ox_internal > > > 2) Bloom =E2=80=94 scan paths in blgetbitmap() and maintenance paths = in blbulkdelete() > > > > > > The following patches streamify those code paths. No benchmarks have > > > been run yet. > > > > > > [1] https://www.postgresql.org/message-id/flat/CABPTF7UeN2o-trr9r7K76= rZExnO2M4SLfvTfbUY2CwQjCekgnQ%40mail.gmail.com > > > > > > Feedbacks welcome. > > > > > > > One more in ginvacuumcleanup(). > > 0001, 0002 and 0004 LGTM. > > 0003: > > + buf =3D read_stream_next_buffer(stream, NULL); > + if (buf =3D=3D InvalidBuffer) > + break; > > I think we are loosening the check here. We were sure that there were > no InvalidBuffers until the nblocks. Streamified version does not have > this check, it exits from the loop the first time it sees an > InvalidBuffer, which may be wrong. You might want to add > 'Assert(p.current_blocknum =3D=3D nblocks);' before read_stream_end() to > have a similar check. > Agree. The check has been added in v2 per your suggestion. -- Best, Xuneng --0000000000001e800f0646dd9029 Content-Type: application/octet-stream; name="v2-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Disposition: attachment; filename="v2-0001-Switch-Bloom-scan-paths-to-streaming-read.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjn3la8r0 RnJvbSAzMTRmOWNkZjZkOGE2MmNjODUyM2IzNzdiOGNmMTlkZjY0NmI5OTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODoxMCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMS80XSBT d2l0Y2ggQmxvb20gc2NhbiBwYXRocyB0byBzdHJlYW1pbmcgcmVhZC4gUmVwbGFjZQogcGVyLXBh Z2UgUmVhZEJ1ZmZlciBsb29wcyBpbiBibGdldGJpdG1hcCgpIHdpdGggcmVhZF9zdHJlYW1fYmVn aW5fcmVsYXRpb24oKQogYW5kIHNlcXVlbnRpYWwgYnVmZmVyIGl0ZXJhdGlvbiwgcmVkdWNpbmcg YnVmZmVyIGNodXJuIGFuZCBpbXByb3Zpbmcgc2NhbgogZWZmaWNpZW5jeSBvbiBsYXJnZSBCbG9v bSBpbmRleGVzLgoKLS0tCiBjb250cmliL2Jsb29tL2Jsc2Nhbi5jIHwgMjkgKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMgYi9jb250cmli L2Jsb29tL2Jsc2Nhbi5jCmluZGV4IDBkNzFlZGJlOTFjLi5iMWZkYWJhYWI3NCAxMDA2NDQKLS0t IGEvY29udHJpYi9ibG9vbS9ibHNjYW4uYworKysgYi9jb250cmliL2Jsb29tL2Jsc2Nhbi5jCkBA IC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0 LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRf c3RyZWFtLmgiCiAKIC8qCiAgKiBCZWdpbiBzY2FuIG9mIGJsb29tIGluZGV4LgpAQCAtNzUsMTEg Kzc2LDEzIEBAIGludDY0CiBibGdldGJpdG1hcChJbmRleFNjYW5EZXNjIHNjYW4sIFRJREJpdG1h cCAqdGJtKQogewogCWludDY0CQludGlkcyA9IDA7Ci0JQmxvY2tOdW1iZXIgYmxrbm8gPSBCTE9P TV9IRUFEX0JMS05PLAorCUJsb2NrTnVtYmVyIGJsa25vLAogCQkJCW5wYWdlczsKIAlpbnQJCQlp OwogCUJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IGJhczsKIAlCbG9vbVNjYW5PcGFxdWUgc28gPSAoQmxv b21TY2FuT3BhcXVlKSBzY2FuLT5vcGFxdWU7CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRl IHA7CisJUmVhZFN0cmVhbSAqc3RyZWFtOwogCiAJaWYgKHNvLT5zaWduID09IE5VTEwpCiAJewpA QCAtMTE5LDE0ICsxMjIsMjkgQEAgYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURC aXRtYXAgKnRibSkKIAlpZiAoc2Nhbi0+aW5zdHJ1bWVudCkKIAkJc2Nhbi0+aW5zdHJ1bWVudC0+ bnNlYXJjaGVzKys7CiAKKwkvKiBTY2FuIGFsbCBibG9ja3MgZXhjZXB0IHRoZSBtZXRhcGFnZSB1 c2luZyBzdHJlYW1pbmcgcmVhZHMgKi8KKwlwLmN1cnJlbnRfYmxvY2tudW0gPSBCTE9PTV9IRUFE X0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlzIHNh ZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtlcyBu bworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0aW9u KFJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX1VTRV9CQVRDSElORywK KwkJCQkJCQkJCQliYXMsCisJCQkJCQkJCQkJc2Nhbi0+aW5kZXhSZWxhdGlvbiwKKwkJCQkJCQkJ CQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IsCisJ CQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25vID0gQkxPT01fSEVBRF9C TEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZmZXIJCWJ1ZmZlcjsKIAkJ UGFnZQkJcGFnZTsKIAotCQlidWZmZXIgPSBSZWFkQnVmZmVyRXh0ZW5kZWQoc2Nhbi0+aW5kZXhS ZWxhdGlvbiwgTUFJTl9GT1JLTlVNLAotCQkJCQkJCQkJYmxrbm8sIFJCTV9OT1JNQUwsIGJhcyk7 Ci0KKwkJYnVmZmVyID0gcmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKIAkJ TG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAkJcGFnZSA9IEJ1ZmZlckdl dFBhZ2UoYnVmZmVyKTsKIApAQCAtMTYyLDYgKzE4MCw5IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2Nh bkRlc2Mgc2NhbiwgVElEQml0bWFwICp0Ym0pCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVy KTsKIAkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAl9CisKKwlBc3NlcnQocmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsKKwlyZWFkX3N0cmVh bV9lbmQoc3RyZWFtKTsKIAlGcmVlQWNjZXNzU3RyYXRlZ3koYmFzKTsKIAogCXJldHVybiBudGlk czsKLS0gCjIuNTEuMAoK --0000000000001e800f0646dd9029 Content-Type: application/octet-stream; name="v2-0003-Streamify-heap-bloat-estimation-scan-Introduc.patch" Content-Disposition: attachment; filename="v2-0003-Streamify-heap-bloat-estimation-scan-Introduc.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjn3lgfa2 RnJvbSA3YTNmY2VjMGNmNDRjZDZkOTg0OGM5MzBlMGQ3ZjYyMGNkMTkzNjk4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMy80XSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uIEludHJvZHVjZSBhCiByZWFkLXN0 cmVhbSBjYWxsYmFjayB0byBza2lwIGFsbC12aXNpYmxlIHBhZ2VzIHZpYSBWTS9GU00gbG9va3Vw IGFuZAogc3RyZWFtLXJlYWQgdGhlIHJlc3QsIHJlZHVjaW5nIHBhZ2UgcmVhZHMgYW5kIGltcHJv dmluZyBwZ3N0YXR0dXBsZV9hcHByb3gKIGV4ZWN1dGlvbiB0aW1lIG9uIGxhcmdlIHJlbGF0aW9u cy4KCi0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNiArKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyks IDMxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0 YXBwcm94LmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZm NGU5ZDRmLi5jYjA1YjUzMGNhOCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0 YXRhcHByb3guYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0y Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9y YWdlL2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVk ZSAic3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1 cGxlX2FwcHJveCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81 KTsKQEAgLTQ1LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZp bmUgTlVNX09VVFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hf aGVhcCByZWFkIHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJv eFJlYWRTdHJlYW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0 OworCUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsK KwlCbG9ja051bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAq LworCUJ1ZmZlcgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfQkJCVN0YXRBcHBy b3hSZWFkU3RyZWFtUHJpdmF0ZTsKKworLyoKKyAqIFJlYWQgc3RyZWFtIGNhbGxiYWNrIGZvciBz dGF0YXBwcm94X2hlYXAuCisgKgorICogVGhpcyBjYWxsYmFjayBjaGVja3MgdGhlIHZpc2liaWxp dHkgbWFwIGZvciBlYWNoIGJsb2NrLiBJZiB0aGUgYmxvY2sgaXMKKyAqIGFsbC12aXNpYmxlLCB3 ZSBjYW4gZ2V0IHRoZSBmcmVlIHNwYWNlIGZyb20gdGhlIEZTTSB3aXRob3V0IHJlYWRpbmcgdGhl CisgKiBhY3R1YWwgcGFnZSwgYW5kIHNraXAgdG8gdGhlIG5leHQgYmxvY2suIE9ubHkgYmxvY2tz IHRoYXQgYXJlIG5vdAorICogYWxsLXZpc2libGUgYXJlIHJldHVybmVkIGZvciBhY3R1YWwgcmVh ZGluZy4KKyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJl YW1fbmV4dChSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSB2b2lkICpjYWxsYmFja19wcml2 YXRlX2RhdGEsCisJCQkJCQkJCSB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJU3RhdEFwcHJv eFJlYWRTdHJlYW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJd2hpbGUg KHAtPmN1cnJlbnRfYmxvY2tudW0gPCBwLT5uYmxvY2tzKQorCXsKKwkJQmxvY2tOdW1iZXIgYmxr bm8gPSBwLT5jdXJyZW50X2Jsb2NrbnVtKys7CisJCVNpemUJCWZyZWVzcGFjZTsKKworCQlDSEVD S19GT1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZp c2libGUgdHVwbGVzLCB0aGVuIHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQorCQkgKiBzcGFjZSBm cm9tIHRoZSBGU00gYW5kIG1vdmUgb24gd2l0aG91dCByZWFkaW5nIHRoZSBwYWdlLgorCQkgKi8K KwkJaWYgKFZNX0FMTF9WSVNJQkxFKHAtPnJlbCwgYmxrbm8sICZwLT52bWJ1ZmZlcikpCisJCXsK KwkJCWZyZWVzcGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHAtPnJlbCwgYmxrbm8pOworCQkJ cC0+c3RhdC0+dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKKwkJCXAtPnN0YXQtPmZy ZWVfc3BhY2UgKz0gZnJlZXNwYWNlOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGJs b2NrIG5lZWRzIHRvIGJlIHJlYWQgKi8KKwkJcC0+c2Nhbm5lZCsrOworCQlyZXR1cm4gYmxrbm87 CisJfQorCisJcmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKK30KKwogLyoKICAqIFRoaXMgZnVu Y3Rpb24gdGFrZXMgYW4gYWxyZWFkeSBvcGVuIHJlbGF0aW9uIGFuZCBzY2FucyBpdHMgcGFnZXMs CiAgKiBza2lwcGluZyB0aG9zZSB0aGF0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0 eSBtYXAgYml0IHNldC4KQEAgLTU4LDUzICsxMTQsNTggQEAgdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0 X3R5cGUKIHN0YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRf dHlwZSAqc3RhdCkKIHsKLQlCbG9ja051bWJlciBzY2FubmVkLAotCQkJCW5ibG9ja3MsCi0JCQkJ Ymxrbm87Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJQmxvY2tOdW1iZXIg bmJsb2NrczsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluOworCVN0YXRBcHByb3hSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJl YW0gKnN0cmVhbTsKIAogCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2Fj dGlvbklkKHJlbCk7CiAJYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFE KTsKIAogCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7Ci0Jc2Nhbm5l ZCA9IDA7CiAKLQlmb3IgKGJsa25vID0gMDsgYmxrbm8gPCBuYmxvY2tzOyBibGtubysrKQorCS8q IEluaXRpYWxpemUgcmVhZCBzdHJlYW0gcHJpdmF0ZSBkYXRhICovCisJcC5yZWwgPSByZWw7CisJ cC5zdGF0ID0gc3RhdDsKKwlwLmN1cnJlbnRfYmxvY2tudW0gPSAwOworCXAubmJsb2NrcyA9IG5i bG9ja3M7CisJcC5zY2FubmVkID0gMDsKKwlwLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwor CS8qCisJICogQ3JlYXRlIHRoZSByZWFkIHN0cmVhbS4gV2UgZG9uJ3QgdXNlIFJFQURfU1RSRUFN X1VTRV9CQVRDSElORyBiZWNhdXNlCisJICogdGhlIGNhbGxiYWNrIGFjY2Vzc2VzIHRoZSB2aXNp YmlsaXR5IG1hcCB3aGljaCBtYXkgbmVlZCB0byByZWFkIFZNCisJICogcGFnZXMuIFdoaWxlIHRo aXMgc2hvdWxkbid0IGNhdXNlIGRlYWRsb2Nrcywgd2UgZXJyIG9uIHRoZSBzaWRlIG9mCisJICog Y2F1dGlvbi4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFE X1NUUkVBTV9GVUxMLAorCQkJCQkJCQkJCWJzdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJ CQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVh bV9uZXh0LAorCQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCisJZm9yICg7OykKIAl7CiAJ CUJ1ZmZlcgkJYnVmOwogCQlQYWdlCQlwYWdlOwogCQlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJ CQltYXhvZmY7Ci0JCVNpemUJCWZyZWVzcGFjZTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OwotCi0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVwbGVzLCB0aGVu IHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQotCQkgKiBzcGFjZSBmcm9tIHRoZSBGU00gYW5kIG1v dmUgb24uCi0JCSAqLwotCQlpZiAoVk1fQUxMX1ZJU0lCTEUocmVsLCBibGtubywgJnZtYnVmZmVy KSkKLQkJewotCQkJZnJlZXNwYWNlID0gR2V0UmVjb3JkZWRGcmVlU3BhY2UocmVsLCBibGtubyk7 Ci0JCQlzdGF0LT50dXBsZV9sZW4gKz0gQkxDS1NaIC0gZnJlZXNwYWNlOwotCQkJc3RhdC0+ZnJl ZV9zcGFjZSArPSBmcmVlc3BhY2U7Ci0JCQljb250aW51ZTsKLQkJfQorCQlCbG9ja051bWJlciBi bGtubzsKIAotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJs a25vLAotCQkJCQkJCQkgUkJNX05PUk1BTCwgYnN0cmF0ZWd5KTsKKwkJYnVmID0gcmVhZF9zdHJl YW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKKwkJaWYgKGJ1ZiA9PSBJbnZhbGlkQnVmZmVy KQorCQkJYnJlYWs7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAog CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVt YmVyKGJ1Zik7CiAKIAkJc3RhdC0+ZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2Uo cGFnZSk7CiAKLQkJLyogV2UgbWF5IGNvdW50IHRoZSBwYWdlIGFzIHNjYW5uZWQgZXZlbiBpZiBp dCdzIG5ldy9lbXB0eSAqLwotCQlzY2FubmVkKys7Ci0KIAkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8 fCBQYWdlSXNFbXB0eShwYWdlKSkKIAkJewogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwpA QCAtMTY5LDYgKzIzMCw5IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90 eXBlICpzdGF0KQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCisJQXNzZXJ0KHAu Y3VycmVudF9ibG9ja251bSA9PSBuYmxvY2tzKTsKKwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsK KwogCXN0YXQtPnRhYmxlX2xlbiA9ICh1aW50NjQpIG5ibG9ja3MgKiBCTENLU1o7CiAKIAkvKgpA QCAtMTc5LDcgKzI0Myw3IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90 eXBlICpzdGF0KQogCSAqIHR1cGxlcyBpbiBhbGwtdmlzaWJsZSBwYWdlcywgc28gbm8gY29ycmVj dGlvbiBpcyBuZWVkZWQgZm9yIHRoYXQsIGFuZAogCSAqIHdlIGFscmVhZHkgYWNjb3VudGVkIGZv ciB0aGUgc3BhY2UgaW4gdGhvc2UgcGFnZXMsIHRvby4KIAkgKi8KLQlzdGF0LT50dXBsZV9jb3Vu dCA9IHZhY19lc3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBuYmxvY2tzLCBzY2FubmVkLAorCXN0YXQt PnR1cGxlX2NvdW50ID0gdmFjX2VzdGltYXRlX3JlbHR1cGxlcyhyZWwsIG5ibG9ja3MsIHAuc2Nh bm5lZCwKIAkJCQkJCQkJCQkJICAgc3RhdC0+dHVwbGVfY291bnQpOwogCiAJLyogSXQncyBub3Qg Y2xlYXIgaWYgd2UgY291bGQgZ2V0IC0xIGhlcmUsIGJ1dCBiZSBzYWZlLiAqLwpAQCAtMTkwLDE2 ICsyNTQsMTYgQEAgc3RhdGFwcHJveF9oZWFwKFJlbGF0aW9uIHJlbCwgb3V0cHV0X3R5cGUgKnN0 YXQpCiAJICovCiAJaWYgKG5ibG9ja3MgIT0gMCkKIAl7Ci0JCXN0YXQtPnNjYW5uZWRfcGVyY2Vu dCA9IDEwMC4wICogc2Nhbm5lZCAvIG5ibG9ja3M7CisJCXN0YXQtPnNjYW5uZWRfcGVyY2VudCA9 IDEwMC4wICogcC5zY2FubmVkIC8gbmJsb2NrczsKIAkJc3RhdC0+dHVwbGVfcGVyY2VudCA9IDEw MC4wICogc3RhdC0+dHVwbGVfbGVuIC8gc3RhdC0+dGFibGVfbGVuOwogCQlzdGF0LT5kZWFkX3R1 cGxlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPmRlYWRfdHVwbGVfbGVuIC8gc3RhdC0+dGFibGVf bGVuOwogCQlzdGF0LT5mcmVlX3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPmZyZWVfc3BhY2UgLyBz dGF0LT50YWJsZV9sZW47CiAJfQogCi0JaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCWlm IChCdWZmZXJJc1ZhbGlkKHAudm1idWZmZXIpKQogCXsKLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZl cik7Ci0JCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwkJUmVsZWFzZUJ1ZmZlcihwLnZtYnVm ZmVyKTsKKwkJcC52bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJfQogfQogCi0tIAoyLjUxLjAK Cg== --0000000000001e800f0646dd9029 Content-Type: application/octet-stream; name="v2-0002-Streamify-Bloom-VACUUM-paths-Use-streaming-re.patch" Content-Disposition: attachment; filename="v2-0002-Streamify-Bloom-VACUUM-paths-Use-streaming-re.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjn3lgf81 RnJvbSBhYWZkZmEwODUxYWI2MTc3N2U4ODc3Y2ZiNTBlM2IzNGJmNTRiOWIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyODo0OSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgMi80XSBT dHJlYW1pZnkgQmxvb20gVkFDVVVNIHBhdGhzLiBVc2Ugc3RyZWFtaW5nIHJlYWRzCiBpbiBibGJ1 bGtkZWxldGUoKSBhbmQgYmx2YWN1dW1jbGVhbnVwKCkgdG8gaXRlcmF0ZSBpbmRleCBwYWdlcyB3 aXRob3V0CiByZXBlYXRlZCBSZWFkQnVmZmVyIGNhbGxzLCBpbXByb3ZpbmcgVkFDVVVNIHBlcmZv cm1hbmNlIGFuZCByZWR1Y2luZyBidWZmZXIKIG1hbmFnZXIgb3ZlcmhlYWQgZHVyaW5nIG1haW50 ZW5hbmNlIG9wZXJhdGlvbnMuCgotLS0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyB8IDU1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA1 MSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxv b20vYmx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCBlNjhhOTAwOGY1 Ni4uNzQ1MjMwMmYwMjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYworKysg Yi9jb250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJj b21tYW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUg InN0b3JhZ2UvaW5kZXhmc20uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAK IAogLyoKQEAgLTQwLDYgKzQxLDggQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5m bywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlQYWdlCQlwYWdlOwogCUJsb29tTWV0 YVBhZ2VEYXRhICptZXRhRGF0YTsKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOworCUJs b2NrUmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAogCWlm IChzdGF0cyA9PSBOVUxMKQogCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0 ZVJlc3VsdCk7CkBAIC01MSw2ICs1NCwyNSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqIHRoZXkgY2FuJ3QgY29u dGFpbiB0dXBsZXMgdG8gZGVsZXRlLgogCSAqLwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVy T2ZCbG9ja3MoaW5kZXgpOworCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0YXBh Z2UgdXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxPT01f SEVBRF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJdCBp cyBzYWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFr ZXMgbm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxh dGlvbihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVM TCB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCWluZm8t PnN0cmF0ZWd5LAorCQkJCQkJCQkJCWluZGV4LAorCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKKwkJ CQkJCQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJ CQkJCQkwKTsKKwogCWZvciAoYmxrbm8gPSBCTE9PTV9IRUFEX0JMS05POyBibGtubyA8IG5wYWdl czsgYmxrbm8rKykKIAl7CiAJCUJsb29tVHVwbGUgKml0dXAsCkBAIC01OSw4ICs4MSw3IEBAIGJs YnVsa2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq c3RhdHMsCiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBSZWFk QnVmZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCQlSQk1f Tk9STUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRfYnVm ZmVyKHN0cmVhbSwgTlVMTCk7CiAKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VY Q0xVU0lWRSk7CiAJCWd4bG9nU3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKQEAgLTEz Myw2ICsxNTQsOSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJ fQogCisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52 YWxpZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKgogCSAqIFVwZGF0 ZSB0aGUgbWV0YXBhZ2UncyBub3RGdWxsUGFnZSBsaXN0IHdpdGggd2hhdGV2ZXIgd2UgZm91bmQu ICBPdXIKIAkgKiBpbmZvIGNvdWxkIGFscmVhZHkgYmUgb3V0IG9mIGRhdGUgYXQgdGhpcyBwb2lu dCwgYnV0IGJsaW5zZXJ0KCkgd2lsbApAQCAtMTY2LDYgKzE5MCw4IEBAIGJsdmFjdXVtY2xlYW51 cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJ UmVsYXRpb24JaW5kZXggPSBpbmZvLT5pbmRleDsKIAlCbG9ja051bWJlciBucGFnZXMsCiAJCQkJ Ymxrbm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0cmVhbSAqc3Ry ZWFtOwogCiAJaWYgKGluZm8tPmFuYWx5emVfb25seSkKIAkJcmV0dXJuIHN0YXRzOwpAQCAtMTgx LDYgKzIwNywyNSBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRl eEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0YXRzLT5udW1fcGFnZXMgPSBucGFnZXM7CiAJ c3RhdHMtPnBhZ2VzX2ZyZWUgPSAwOwogCXN0YXRzLT5udW1faW5kZXhfdHVwbGVzID0gMDsKKwor CS8qIFNjYW4gYWxsIGJsb2NrcyBleGNlcHQgdGhlIG1ldGFwYWdlIHVzaW5nIHN0cmVhbWluZyBy ZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEJMT09NX0hFQURfQkxLTk87CisJcC5sYXN0 X2V4Y2x1c2l2ZSA9IG5wYWdlczsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0Y2ht b2RlIGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICogbG9ja3MuCisJ ICovCisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJ TlRFTkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURf U1RSRUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJCQkJ CQlpbmRleCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2Vf cmVhZF9zdHJlYW1fY2IsCisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJs a25vID0gQkxPT01fSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlC dWZmZXIJCWJ1ZmZlcjsKQEAgLTE4OCw4ICsyMzMsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhW YWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJCXZhY3V1 bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGlu ZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3Ry YXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwp OwogCQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlwYWdlID0gQnVm ZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC0yMDYsNiArMjUwLDkgQEAgYmx2YWN1dW1jbGVhbnVw KEluZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJ VW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KIAorCUFzc2VydChyZWFkX3N0cmVhbV9u ZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOworCXJlYWRfc3RyZWFt X2VuZChzdHJlYW0pOworCiAJSW5kZXhGcmVlU3BhY2VNYXBWYWN1dW0oaW5mby0+aW5kZXgpOwog CiAJcmV0dXJuIHN0YXRzOwotLSAKMi41MS4wCgo= --0000000000001e800f0646dd9029 Content-Type: application/octet-stream; name="v2-0004-Replace-synchronous-ReadBufferExtended-loop-with.patch" Content-Disposition: attachment; filename="v2-0004-Replace-synchronous-ReadBufferExtended-loop-with.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjn3lgfc3 RnJvbSBkNjI4ZjNhNWNhYjc1MmQ1NzMzMjg2NWMzMjM0Nzk3OTU2MjlmYjI4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog U2F0LCAyNyBEZWMgMjAyNSAwMDoyOTowOSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIgNC80XSBS 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= --0000000000001e800f0646dd9029--